diff options
| author | Léo Lam <leo@leolam.fr> | 2021-04-26 01:18:17 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-04-27 12:54:18 +0200 |
| commit | ae9ac510e2dbed6d7adec40dff33d82bb0f1ff3e (patch) | |
| tree | 9e52f37d53d120a1f3feedd2620f8428d67b313c | |
| parent | d0484a9ea9331f2cedb080f06944d737343414f1 (diff) | |
CMake: Do not enable LTO by default for MSVC
LTO is supposed to be enabled by default for VS Release builds
according to the VS prop files but a build log from JMC reveals
that /GL and /LTCG are not actually passed to cl.exe/link.exe
for some reason...
LTO also leads to *extremely* and unacceptably slow build times
when using link.exe, so let's disable it by default to actually
match the project files.
| -rw-r--r-- | CMakeLists.txt | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 45193e813e..e1565844e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -332,10 +332,15 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() if(ENABLE_LTO) - check_and_add_flag(LTO -flto) - if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) - set(CMAKE_AR gcc-ar) - set(CMAKE_RANLIB gcc-ranlib) + if(CMAKE_C_COMPILER_ID MATCHES "MSVC") + add_compile_options(/GL) + string(APPEND CMAKE_EXE_LINKER_FLAGS " /LTCG") + else() + check_and_add_flag(LTO -flto) + if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) + set(CMAKE_AR gcc-ar) + set(CMAKE_RANLIB gcc-ranlib) + endif() endif() endif() @@ -362,11 +367,6 @@ if(NOT CMAKE_BUILD_TYPE) "Build type (Release/Debug/RelWithDebInfo/MinSizeRel)" FORCE) endif() -if(CMAKE_BUILD_TYPE MATCHES "Release|RelWithDebInfo" AND CMAKE_C_COMPILER_ID MATCHES "MSVC") - add_compile_options(/GL) - string(APPEND CMAKE_EXE_LINKER_FLAGS " /LTCG") -endif() - if(ENABLE_GPROF) check_and_add_flag(HAVE_PG -pg) if(NOT FLAG_C_HAVE_PG) |
