CMake: Fix detection of the ltcg feature

When checking the value of CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>,
then <CONFIG> must be the upper case configuration name.

Also, we must not unset __qt_ltcg_detected, because the feature
condition evaluation happens way after the feature definition, and
__qt_ltcg_detected was not available anymore there.

This commit amends 96bdcdacbc.

Fixes: QTBUG-87874
Change-Id: I2b555bd1d7fbc8973e1d9493045c27d61b0d2c1b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Joerg Bornemann 2020-11-05 11:14:17 +01:00
parent e31c6c7337
commit e559da3c6a
3 changed files with 10 additions and 7 deletions

View File

@ -621,18 +621,19 @@ if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
else() else()
foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES}) foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${config}) string(TOUPPER "${config}" __qt_uc_config)
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${__qt_uc_config})
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
break() break()
endif() endif()
endforeach() endforeach()
unset(__qt_uc_config)
endif() endif()
qt_feature("ltcg" qt_feature("ltcg"
LABEL "Using LTCG" LABEL "Using LTCG"
AUTODETECT ON AUTODETECT ON
CONDITION __qt_ltcg_detected CONDITION __qt_ltcg_detected
) )
unset(__qt_ltcg_detected)
qt_feature_config("ltcg" QMAKE_PRIVATE_CONFIG) qt_feature_config("ltcg" QMAKE_PRIVATE_CONFIG)
qt_feature("enable_gdb_index" qt_feature("enable_gdb_index"
LABEL "Generating GDB index" LABEL "Generating GDB index"

View File

@ -634,18 +634,19 @@ if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
else() else()
foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES}) foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${config}) string(TOUPPER "${config}" __qt_uc_config)
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${__qt_uc_config})
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
break() break()
endif() endif()
endforeach() endforeach()
unset(__qt_uc_config)
endif() endif()
qt_feature("ltcg" qt_feature("ltcg"
LABEL "Using LTCG" LABEL "Using LTCG"
AUTODETECT ON AUTODETECT ON
CONDITION __qt_ltcg_detected CONDITION __qt_ltcg_detected
) )
unset(__qt_ltcg_detected)
qt_feature_config("ltcg" QMAKE_PRIVATE_CONFIG) qt_feature_config("ltcg" QMAKE_PRIVATE_CONFIG)
qt_feature("enable_gdb_index" qt_feature("enable_gdb_index"
LABEL "Generating GDB index" LABEL "Generating GDB index"

View File

@ -920,14 +920,15 @@ if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
else() else()
foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES}) foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${config}) string(TOUPPER "${config}" __qt_uc_config)
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${__qt_uc_config})
set(__qt_ltcg_detected TRUE) set(__qt_ltcg_detected TRUE)
break() break()
endif() endif()
endforeach() endforeach()
unset(__qt_uc_config)
endif()""", endif()""",
"condition": "__qt_ltcg_detected", "condition": "__qt_ltcg_detected"
"cmakeEpilogue": "unset(__qt_ltcg_detected)"
}, },
"msvc_mp": None, "msvc_mp": None,
"simulator_and_device": {"condition": "UIKIT AND NOT QT_UIKIT_SDK"}, "simulator_and_device": {"condition": "UIKIT AND NOT QT_UIKIT_SDK"},