From: Viktor Szakats Date: Sat, 12 Apr 2025 18:49:13 +0000 (+0200) Subject: cmake: revert `CURL_LTO` behavior for multi-config generators X-Git-Tag: curl-8_14_0~309 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae1a861bd62339b34cfd433e5941904e7d6878a1;p=thirdparty%2Fcurl.git cmake: revert `CURL_LTO` behavior for multi-config generators To avoid having LTO enabled for Debug configurations with multi-config generators (e.g. MSVC.) Reported-by: PleaseJustDont Fixes #17042 Ref: ##17034 Follow-up to a1eaa12a8397026aa34e04d6ed4280ddfe6c4c93 #15829 Closes #17043 --- diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 9645cba768..f2c3e0e99a 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -120,7 +120,13 @@ if(SHARE_LIB_OBJECT AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) set_property(TARGET ${LIB_OBJECT} APPEND PROPERTY COMPILE_DEFINITIONS "CURL_HIDDEN_SYMBOLS") endif() if(CURL_HAS_LTO) - set_target_properties(${LIB_OBJECT} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + if(CMAKE_CONFIGURATION_TYPES) + set_target_properties(${LIB_OBJECT} PROPERTIES + INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE + INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE) + else() + set_target_properties(${LIB_OBJECT} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + endif() endif() target_include_directories(${LIB_OBJECT} INTERFACE @@ -152,7 +158,13 @@ if(BUILD_STATIC_LIBS) set_property(TARGET ${LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS "CURL_HIDDEN_SYMBOLS") endif() if(CURL_HAS_LTO) - set_target_properties(${LIB_STATIC} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + if(CMAKE_CONFIGURATION_TYPES) + set_target_properties(${LIB_OBJECT} PROPERTIES + INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE + INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE) + else() + set_target_properties(${LIB_OBJECT} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + endif() endif() target_include_directories(${LIB_STATIC} INTERFACE @@ -189,7 +201,13 @@ if(BUILD_SHARED_LIBS) set_property(TARGET ${LIB_SHARED} APPEND PROPERTY COMPILE_DEFINITIONS "CURL_HIDDEN_SYMBOLS") endif() if(CURL_HAS_LTO) - set_target_properties(${LIB_SHARED} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + if(CMAKE_CONFIGURATION_TYPES) + set_target_properties(${LIB_OBJECT} PROPERTIES + INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE + INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE) + else() + set_target_properties(${LIB_OBJECT} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) + endif() endif() target_include_directories(${LIB_SHARED} INTERFACE