summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2020-08-20 10:19:32 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2020-08-20 17:07:53 +0200
commit729d102b1c5273087c54d1584c80f1a1e6eef86c (patch)
tree1d5ab5f1d52d29f148a1615f2316f3d953089d5c
parent2f1a55c0b13ea02619f0d209a2b710fb7cbe8a1a (diff)
CMake: Implement configure -optimize-debug
Task-number: QTBUG-85373 Change-Id: I3aba1fcf96e36544dd75a5e6adc5f770a9a45726 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--CMakeLists.txt3
-rw-r--r--cmake/QtBuildInternals/QtBuildInternalsConfig.cmake4
-rw-r--r--cmake/QtFlagHandlingHelpers.cmake5
-rw-r--r--configure.cmake6
-rwxr-xr-xutil/cmake/configurejson2cmake.py1
5 files changed, 17 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 10df970dff..e31224ee4f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -118,6 +118,9 @@ endif()
qt_build_repo_end()
+# This function must be called after the QT_FEATURE_xxx variables have been set up.
+qt_internal_set_up_config_optimizations_like_in_qmake()
+
if(NOT QT_BUILD_STANDALONE_TESTS AND BUILD_EXAMPLES)
add_subdirectory(examples)
if(QT_NO_MAKE_EXAMPLES)
diff --git a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
index 3c8692a903..63cb264d32 100644
--- a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
+++ b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
@@ -180,7 +180,9 @@ macro(qt_enable_cmake_languages)
endif()
endforeach()
- qt_internal_set_up_config_optimizations_like_in_qmake()
+ if(NOT PROJECT_NAME STREQUAL "QtBase")
+ qt_internal_set_up_config_optimizations_like_in_qmake()
+ endif()
endmacro()
# Minimum setup required to have any CMakeList.txt build as as a standalone
diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake
index cddaa0da39..29453e2943 100644
--- a/cmake/QtFlagHandlingHelpers.cmake
+++ b/cmake/QtFlagHandlingHelpers.cmake
@@ -356,6 +356,11 @@ function(qt_internal_set_up_config_optimizations_like_in_qmake)
endif()
endif()
+ # Debug should get the OPTIMIZE_DEBUG flag if the respective feature is ON.
+ if(config STREQUAL "DEBUG" AND QT_FEATURE_optimize_debug)
+ string(APPEND "${flag_var_name}" " ${QT_CFLAGS_OPTIMIZE_DEBUG}")
+ endif()
+
# Assign value to the cache entry.
get_property(help_text CACHE "${flag_var_name}" PROPERTY HELPSTRING)
set("${flag_var_name}" "${${flag_var_name}}" CACHE STRING "${help_text}" FORCE)
diff --git a/configure.cmake b/configure.cmake
index d870e3a759..283bb94ed4 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -409,6 +409,12 @@ qt_feature("use_lld_linker"
DISABLE INPUT_linker STREQUAL 'bfd' OR INPUT_linker STREQUAL 'gold'
)
qt_feature_config("use_lld_linker" QMAKE_PRIVATE_CONFIG)
+qt_feature("optimize_debug"
+ LABEL "Optimize debug build"
+ AUTODETECT NOT QT_FEATURE_developer_build
+ CONDITION NOT MSVC AND NOT CLANG AND ( QT_FEATURE_debug OR QT_FEATURE_debug_and_release ) AND TEST_optimize_debug
+)
+qt_feature_config("optimize_debug" QMAKE_PRIVATE_CONFIG)
qt_feature("pkg-config" PUBLIC
LABEL "Using pkg-config"
AUTODETECT NOT APPLE AND NOT WIN32
diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py
index 81181135ac..4edd6cc3d3 100755
--- a/util/cmake/configurejson2cmake.py
+++ b/util/cmake/configurejson2cmake.py
@@ -897,7 +897,6 @@ def get_feature_mapping():
"incredibuild_xge": None,
"ltcg": {"autoDetect": "1", "condition": "CMAKE_INTERPROCEDURAL_OPTIMIZATION"},
"msvc_mp": None,
- "optimize_debug": None,
"optimize_size": None,
"simulator_and_device": {"condition": "UIKIT AND NOT QT_UIKIT_SDK"},
"pkg-config": {"condition": "PKG_CONFIG_FOUND"},