From ae9ac510e2dbed6d7adec40dff33d82bb0f1ff3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 26 Apr 2021 01:18:17 +0200 Subject: [PATCH] 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. --- CMakeLists.txt | 18 +++++++++--------- 1 file 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)