diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-03-11 12:41:36 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-05-07 13:25:43 +0000 |
commit | 10a2af661152aed997cad75081de42528743ee89 (patch) | |
tree | 3096674ac1c912aa41b55faa20aa98f1fb76b10b /cmake | |
parent | 200dde53da025ce39c899e736bdaae3a762ad36d (diff) |
build system: support module local definitions
This introduces a new helper function,
qt_internal_add_repo_local_defines and makes use of it in
qt_internal_add_{module,test,executable,benchmark,plugin}. That function
checks whether QT_EXTRA_INTERNAL_TARGET_DEFINES is set. If it is, the
defines listed in there will be aded to all targets passed to the
functions mentioned above.
The intended usage is that QT_EXTRA_INTERNAL_TARGET_DEFINES gets set
in the repository local .cmake.conf. This allows e.g. opting in to
source incompatible changes in leaf modules (as long as those are
guarded by some define).
Fixes: QTBUG-101640
Change-Id: I06c3693ee69f46e95a48de724621f0c97e7cc3a8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 57c1e8d5339979cf124f28c58adc87c3d91a7fc2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtExecutableHelpers.cmake | 3 | ||||
-rw-r--r-- | cmake/QtModuleHelpers.cmake | 2 | ||||
-rw-r--r-- | cmake/QtPluginHelpers.cmake | 2 | ||||
-rw-r--r-- | cmake/QtTargetHelpers.cmake | 16 | ||||
-rw-r--r-- | cmake/QtTestHelpers.cmake | 5 |
5 files changed, 28 insertions, 0 deletions
diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake index f70adad11a..3c6a1462eb 100644 --- a/cmake/QtExecutableHelpers.cmake +++ b/cmake/QtExecutableHelpers.cmake @@ -70,6 +70,9 @@ function(qt_internal_add_executable name) endif() qt_set_common_target_properties(${name}) + + qt_internal_add_repo_local_defines(${name}) + if(ANDROID) # The above call to qt_set_common_target_properties() sets the symbol # visibility to hidden, but for Android, we need main() to not be hidden diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index f889443ec7..ec854900b0 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -513,6 +513,8 @@ function(qt_internal_add_module target) list(APPEND arg_LIBRARIES Qt::PlatformModuleInternal) endif() + qt_internal_add_repo_local_defines("${target}") + qt_internal_extend_target("${target}" ${header_module} SOURCES ${arg_SOURCES} diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake index fe90a33b85..7023e705e8 100644 --- a/cmake/QtPluginHelpers.cmake +++ b/cmake/QtPluginHelpers.cmake @@ -329,6 +329,8 @@ function(qt_internal_add_plugin target) DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS} ) + qt_internal_add_repo_local_defines("${target}") + qt_internal_set_exceptions_flags("${target}" ${arg_EXCEPTIONS}) diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index d26e84ce16..9640287ea9 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -874,3 +874,19 @@ function(qt_internal_undefine_global_definition target) set_target_properties(${target} PROPERTIES "${undef_property_name}" TRUE) endforeach() endfunction() + +# This function adds any defines which are local to the current repository (e.g. qtbase, +# qtmultimedia). Those can be defined in the corresponding .cmake.conf file via +# QT_EXTRA_INTERNAL_TARGET_DEFINES. QT_EXTRA_INTERNAL_TARGET_DEFINES accepts a list of definitions. +# The definitions are passed to target_compile_definitions, which means that values can be provided +# via the FOO=Bar syntax +# This does nothing for interface targets +function(qt_internal_add_repo_local_defines target) + get_target_property(type "${target}" TYPE) + if (${type} STREQUAL "INTERFACE_LIBRARY") + return() + endif() + if(DEFINED QT_EXTRA_INTERNAL_TARGET_DEFINES) + target_compile_definitions("${target}" PRIVATE ${QT_EXTRA_INTERNAL_TARGET_DEFINES}) + endif() +endfunction() diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake index 145284c0b9..d90fccb872 100644 --- a/cmake/QtTestHelpers.cmake +++ b/cmake/QtTestHelpers.cmake @@ -33,6 +33,9 @@ function(qt_internal_add_benchmark target) ${exec_args} ) + + qt_internal_add_repo_local_defines(${target}) + # Disable the QT_NO_NARROWING_CONVERSIONS_IN_CONNECT define for benchmarks qt_internal_undefine_global_definition(${target} QT_NO_NARROWING_CONVERSIONS_IN_CONNECT) @@ -239,6 +242,8 @@ function(qt_internal_add_test name) DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS} ) + qt_internal_add_repo_local_defines(${name}) + # Disable the QT_NO_NARROWING_CONVERSIONS_IN_CONNECT define for tests qt_internal_undefine_global_definition(${name} QT_NO_NARROWING_CONVERSIONS_IN_CONNECT) |