Browse Source

cmake/msvc: size-optimizations

Help make things smaller in MinSizeRel builds. This actually brings us a
little bit below the size of the pre-existing Visual Studio solution.
master
Erik Faye-Lund 5 years ago
parent
commit
517389583a
  1. 5
      CMakeLists.txt
  2. 12
      Tests/PlayerTest/CMakeLists.txt
  3. 2
      Vsts/CMakeLists.txt
  4. 14
      WaveSabreCore/CMakeLists.txt
  5. 4
      WaveSabrePlayerLib/CMakeLists.txt
  6. 10
      WaveSabreStandAlonePlayer/CMakeLists.txt
  7. 1
      WaveSabreVstLib/CMakeLists.txt

5
CMakeLists.txt

@ -3,6 +3,11 @@ project("WaveSabre")
cmake_minimum_required(VERSION 3.11)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
if(MSVC)
# disable exceptions globally (will be added back for VSTs)
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif()
# shared code
add_subdirectory(WaveSabreCore)
add_subdirectory(WaveSabrePlayerLib)

12
Tests/PlayerTest/CMakeLists.txt

@ -1,2 +1,14 @@
add_executable(PlayerTest main.cpp)
target_link_libraries(PlayerTest WaveSabrePlayerLib)
if(MSVC)
target_link_libraries(PlayerTest
$<$<CONFIG:MinSizeRel>:${CMAKE_CURRENT_SOURCE_DIR}/msvcrt_old.lib>)
set_property(TARGET PlayerTest APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL
" /NODEFAULTLIB /SAFESEH:NO /MANIFEST:NO /LTCG /OPT:REF /OPT:ICF /DYNAMICBASE:NO")
if(MSVC AND MSVC_VERSION GREATER 1900)
target_compile_definitions(PlayerTest PRIVATE
$<$<CONFIG:MinSizeRel>:_NO_CRT_STDIO_INLINE>)
endif()
endif()

2
Vsts/CMakeLists.txt

@ -8,6 +8,8 @@ foreach(child ${children})
add_library(${child} SHARED
${sources} ../Data/data.rc ${CMAKE_BINARY_DIR}/${child}.def)
target_link_libraries(${child} WaveSabreCore WaveSabreVstLib)
set_property(TARGET ${child} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL
" /LTCG")
set_property(TARGET ${child} PROPERTY FOLDER VSTs)
endif()
endforeach()

14
WaveSabreCore/CMakeLists.txt

@ -56,3 +56,17 @@ add_library(WaveSabreCore
target_link_libraries(WaveSabreCore Msacm32.lib)
target_include_directories(WaveSabreCore PUBLIC include)
if(MSVC)
target_compile_options(WaveSabreCore
PUBLIC $<$<CONFIG:MinSizeRel>:/GS- /Gy /Zi /GL /GR->
PRIVATE $<$<CONFIG:MinSizeRel>:/Oi /fp:fast>)
set_property(TARGET WaveSabreCore APPEND_STRING PROPERTY STATIC_LIBRARY_FLAGS_MINSIZEREL
" /LTCG")
if(MSVC_VERSION GREATER 1900)
target_compile_options(WaveSabreCore PUBLIC
$<$<CONFIG:MinSizeRel>:/Zc:sizedDealloc->)
endif()
endif()

4
WaveSabrePlayerLib/CMakeLists.txt

@ -24,4 +24,8 @@ target_include_directories(WaveSabrePlayerLib PUBLIC include)
if(MSVC)
target_compile_definitions(WaveSabrePlayerLib PRIVATE _CRT_SECURE_NO_WARNINGS)
target_compile_options(WaveSabrePlayerLib PUBLIC
$<$<CONFIG:MinSizeRel>:/EHs-c->)
set_property(TARGET WaveSabrePlayerLib APPEND_STRING PROPERTY STATIC_LIBRARY_FLAGS_MINSIZEREL
" /LTCG")
endif()

10
WaveSabreStandAlonePlayer/CMakeLists.txt

@ -3,4 +3,14 @@ target_link_libraries(WaveSabreStandAlonePlayer WaveSabrePlayerLib)
if(MSVC)
target_compile_definitions(WaveSabreStandAlonePlayer PRIVATE _CRT_SECURE_NO_WARNINGS)
target_link_libraries(WaveSabreStandAlonePlayer
$<$<CONFIG:MinSizeRel>:${CMAKE_CURRENT_SOURCE_DIR}/msvcrt_old.lib>)
set_property(TARGET WaveSabreStandAlonePlayer APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL
" /NODEFAULTLIB /SAFESEH:NO /MANIFEST:NO /LTCG /OPT:REF /OPT:ICF /DYNAMICBASE:NO")
if(MSVC AND MSVC_VERSION GREATER 1900)
target_compile_definitions(WaveSabreStandAlonePlayer PRIVATE
$<$<CONFIG:MinSizeRel>:_NO_CRT_STDIO_INLINE>)
endif()
endif()

1
WaveSabreVstLib/CMakeLists.txt

@ -53,4 +53,5 @@ target_include_directories(WaveSabreVstLib PUBLIC
if(MSVC)
target_compile_definitions(WaveSabreVstLib PUBLIC _CRT_SECURE_NO_WARNINGS)
target_compile_options(WaveSabreVstLib PUBLIC /EHsc)
endif()

Loading…
Cancel
Save