diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2022-02-25 12:33:15 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-03-02 09:24:03 +0000 |
commit | 3c347c1926965fbc03de9e39fa1307ed04f9823a (patch) | |
tree | 81403ebd7af3a24d8c1e53bc1c6e792155127797 | |
parent | 98060a4acbf68d1253ec11f4497fb9ef8e17abb0 (diff) |
Add the _qt_internal_android_executable_finalizer wrapper function
_qt_internal_android_executable_finalizer wraps Android-related
function that are needed to created an Android package.
The function is added to the INTERFACE_QT_EXECUTABLE_FINALIZERS
property in Qt Core so it's called implicitly for user projects.
Change-Id: I140f53341691dcfdc6ae2ddea520818cf2834eb6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit e7586119e1ba48844a9353e5b9cb6f0f26292764)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | cmake/QtExecutableHelpers.cmake | 6 | ||||
-rw-r--r-- | src/corelib/Qt6AndroidMacros.cmake | 9 | ||||
-rw-r--r-- | src/corelib/Qt6CoreConfigExtras.cmake.in | 20 | ||||
-rw-r--r-- | src/corelib/Qt6CoreMacros.cmake | 5 |
4 files changed, 28 insertions, 12 deletions
diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake index a7f7678e9e..f70adad11a 100644 --- a/cmake/QtExecutableHelpers.cmake +++ b/cmake/QtExecutableHelpers.cmake @@ -20,10 +20,8 @@ function(qt_internal_add_executable name) endif() _qt_internal_create_executable(${name}) - if (ANDROID) - _qt_internal_configure_android_multiabi_target("${name}") - qt_android_generate_deployment_settings("${name}") - qt_android_add_apk_target("${name}") + if(ANDROID) + _qt_internal_android_executable_finalizer(${name}) endif() if(arg_QT_APP AND QT_FEATURE_debug_and_release AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.19.0") diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake index ad12c6c7bd..b00ecc1656 100644 --- a/src/corelib/Qt6AndroidMacros.cmake +++ b/src/corelib/Qt6AndroidMacros.cmake @@ -1007,3 +1007,12 @@ function(_qt_internal_configure_android_multiabi_target target) endif() set_target_properties(${target} PROPERTIES _qt_android_abis "${android_abis}") endfunction() + +# The wrapper function that contains routines that need to be called to produce a valid Android +# package for the executable 'target'. The function is added to the finalizer list of the Core +# module and is executed implicitly when configuring user projects. +function(_qt_internal_android_executable_finalizer target) + _qt_internal_configure_android_multiabi_target("${target}") + qt6_android_generate_deployment_settings("${target}") + qt6_android_add_apk_target("${target}") +endfunction() diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index 3b9cbb883d..8b4d3164cf 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -13,11 +13,17 @@ endif() # set(_qt5_corelib_extra_includes) if (NOT QT_NO_CREATE_TARGETS) + set(__qt_core_target @QT_CMAKE_EXPORT_NAMESPACE@::Core) + get_property(__qt_core_aliased_target TARGET ${__qt_core_target} PROPERTY ALIASED_TARGET) + if(__qt_core_aliased_target) + set(__qt_core_target "${__qt_core_aliased_target}") + endif() + unset(__qt_core_aliased_target) if (NOT "@QT_NAMESPACE@" STREQUAL "") - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT_NAMESPACE=@QT_NAMESPACE@) + set_property(TARGET ${__qt_core_target} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT_NAMESPACE=@QT_NAMESPACE@) endif() - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>) - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) + set_property(TARGET ${__qt_core_target} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>) + set_property(TARGET ${__qt_core_target} PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) endif() set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_GADGET_EXPORT" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") @@ -50,6 +56,12 @@ if(ANDROID_PLATFORM) include("${CMAKE_CURRENT_LIST_DIR}/@QT_CMAKE_EXPORT_NAMESPACE@AndroidMacros.cmake") _qt_internal_create_global_android_targets() _qt_internal_collect_default_android_abis() + if(NOT QT_NO_CREATE_TARGETS) + set_property(TARGET ${__qt_core_target} APPEND PROPERTY + INTERFACE_QT_EXECUTABLE_FINALIZERS + _qt_internal_android_executable_finalizer + ) + endif() endif() if(EMSCRIPTEN) @@ -57,3 +69,5 @@ if(EMSCRIPTEN) endif() _qt_internal_override_example_install_dir_to_dot() + +unset(__qt_core_target) diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 24a9cd01fc..4785d528d0 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -617,11 +617,6 @@ function(_qt_internal_finalize_executable target) endif() endif() - if(ANDROID) - _qt_internal_configure_android_multiabi_target("${target}") - qt6_android_generate_deployment_settings("${target}") - qt6_android_add_apk_target("${target}") - endif() if(EMSCRIPTEN) _qt_internal_wasm_add_target_helpers("${target}") endif() |