diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake index dc73f578446..37670c14570 100644 --- a/cmake/QtExecutableHelpers.cmake +++ b/cmake/QtExecutableHelpers.cmake @@ -370,6 +370,7 @@ function(qt_internal_add_configure_time_executable target) set(target_binary_dir "${CMAKE_CURRENT_BINARY_DIR}/configure_time_bins") if(arg_CONFIG) set(CMAKE_TRY_COMPILE_CONFIGURATION "${arg_CONFIG}") + string(TOUPPER "_${arg_CONFIG}" config_suffix) endif() get_cmake_property(is_multi_config GENERATOR_IS_MULTI_CONFIG) @@ -463,6 +464,29 @@ function(qt_internal_add_configure_time_executable target) set(cmake_flags_arg CMAKE_FLAGS "${arg_CMAKE_FLAGS}") endif() configure_file("${template}" "${target_binary_dir}/CMakeLists.txt" @ONLY) + + qt_internal_get_enabled_languages_for_flag_manipulation(enabled_languages) + foreach(lang IN LISTS enabled_languages) + set(compiler_flags_var "CMAKE_${lang}_FLAGS") + list(APPEND cmake_flags_arg "-D${compiler_flags_var}:STRING=${${compiler_flags_var}}") + if(arg_CONFIG) + set(compiler_flags_var_config "${compiler_flags_var}${config_suffix}") + list(APPEND cmake_flags_arg + "-D${compiler_flags_var_config}:STRING=${${compiler_flags_var_config}}") + endif() + endforeach() + + qt_internal_get_target_link_types_for_flag_manipulation(target_link_types) + foreach(linker_type IN LISTS target_link_types) + set(linker_flags_var "CMAKE_${linker_type}_LINKER_FLAGS") + list(APPEND cmake_flags_arg "-D${linker_flags_var}:STRING=${${linker_flags_var}}") + if(arg_CONFIG) + set(linker_flags_var_config "${linker_flags_var}${config_suffix}") + list(APPEND cmake_flags_arg + "-D${linker_flags_var_config}:STRING=${${linker_flags_var_config}}") + endif() + endforeach() + try_compile(result "${target_binary_dir}" "${target_binary_dir}" diff --git a/src/tools/syncqt/CMakeLists.txt b/src/tools/syncqt/CMakeLists.txt index 4d2cb640f07..b23d5836ef3 100644 --- a/src/tools/syncqt/CMakeLists.txt +++ b/src/tools/syncqt/CMakeLists.txt @@ -1,6 +1,17 @@ -# The tool should be optimized for maximum performance when working. -if(NOT QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS) +if(NOT QT_INTERNAL_AVOID_OVERRIDING_SYNCQT_CONFIG) + qt_internal_get_configs_for_flag_manipulation(configs) + qt_internal_remove_known_optimization_flags(LANGUAGES CXX CONFIGS ${configs}) + # The /RTC1 flag is present in the default DEBUG flags list and contradicts -O2 but is not + # removed by qt_internal_remove_known_optimization_flags + qt_internal_remove_compiler_flags("/RTC1" LANGUAGES CXX CONFIGS ${configs}) qt_internal_get_optimize_full_flags(optimize_full_flags) + qt_internal_add_compiler_flags(LANGUAGES CXX CONFIGS ${configs} FLAGS "${optimize_full_flags}") + + # Replace all linker flags with those we use in the RelWithDebInfo configuration + list(REMOVE_ITEM configs RELWITHDEBINFO) + foreach(config IN LISTS configs) + set(CMAKE_EXE_LINKER_FLAGS_${config} "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}") + endforeach() endif() set(compile_definitions @@ -15,7 +26,6 @@ qt_get_tool_target_name(target_name syncqt) if(NOT QT_SYNC_HEADERS_AT_CONFIGURE_TIME) qt_internal_add_tool(${target_name} DEFINES ${compile_definitions} - COMPILE_OPTIONS ${optimize_full_flags} TOOLS_TARGET Core CORE_LIBRARY None INSTALL_DIR "${INSTALL_LIBEXECDIR}" @@ -39,7 +49,6 @@ else() # To re-build syncqt use 'syncqt_build' target. qt_internal_add_configure_time_tool(${target_name} DEFINES ${compile_definitions} - COMPILE_OPTIONS ${optimize_full_flags} TOOLS_TARGET Core INSTALL_DIRECTORY "${INSTALL_LIBEXECDIR}" CMAKE_FLAGS