diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2021-11-18 10:27:47 +0100 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2021-12-02 09:02:05 +0100 |
commit | 669b454378e228e50e371387c4ce3980b44a0156 (patch) | |
tree | be648d47e249239b5b08f88fbc757087038e7448 | |
parent | babb05c3dada87252066d2e0655878a66baacf48 (diff) |
Add _make_aab target
Add target triggering AAB creation. Since the _make_aab target is
not added to the ALL set, we may avoid dependency check for it and
admit that the target is "always out of date".
[ChangeLog][Android][Platform Specific Changes] Add the extra
_make_aab targets for each executable target, that can be used
to generate android app bundles. Also add aab metatarget to build
all _make_aab targets that are created in the project.
Fixes: QTBUG-96710
Change-Id: I3b0c7fbb5a7dd493ca7a124c4e4b91fd857386bd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit d162ce3732bc125ad42c5c5e98050a8e09ab9054)
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/corelib/Qt6AndroidMacros.cmake | 39 | ||||
-rw-r--r-- | src/corelib/Qt6CoreConfigExtras.cmake.in | 2 |
3 files changed, 34 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f453505ee8..c272ab6f05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,7 +117,7 @@ if(NOT QT_BUILD_STANDALONE_TESTS) # Needed when building qtbase for android. if(ANDROID) include(src/corelib/Qt6AndroidMacros.cmake) - _qt_internal_create_global_apk_target() + _qt_internal_create_global_android_targets() endif() if(WASM) diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake index 6f3cf66a26..c7d71d7065 100644 --- a/src/corelib/Qt6AndroidMacros.cmake +++ b/src/corelib/Qt6AndroidMacros.cmake @@ -307,9 +307,10 @@ function(qt6_android_add_apk_target target) message(FATAL_ERROR "Target ${target} is not a valid android executable target\n") endif() - # Make global apk target depend on the current apk target. + # Make global apk and aab targets depend on the current apk target. if(TARGET apk) add_dependencies(apk ${target}_make_apk) + add_dependencies(aab ${target}_make_aab) _qt_internal_create_global_apk_all_target_if_needed() endif() @@ -377,17 +378,41 @@ function(qt6_android_add_apk_target target) COMMENT "Creating APK for ${target}" ) endif() + + # Add target triggering AAB creation. Since the _make_aab target is not added to the ALL + # set, we may avoid dependency check for it and admit that the target is "always out + # of date". + add_custom_target(${target}_make_aab + DEPENDS ${target}_prepare_apk_dir + COMMAND ${deployment_tool} + --input ${deployment_file} + --output ${apk_final_dir} + --apk ${apk_final_file_path} + --aab + ${extra_args} + COMMENT "Creating AAB for ${target}" + ) endfunction() -function(_qt_internal_create_global_apk_target) +function(_qt_internal_create_global_android_targets) + macro(_qt_internal_create_global_android_targets_impl target) + string(TOUPPER "${target}" target_upper) + if(NOT QT_NO_GLOBAL_${target_upper}_TARGET) + if(NOT TARGET ${target}) + add_custom_target(${target} COMMENT "Building all apks") + endif() + endif() + endmacro() + # Create a top-level "apk" target for convenience, so that users can call 'ninja apk'. # It will trigger building all the apk build targets that are added as part of the project. # Allow opting out. - if(NOT QT_NO_GLOBAL_APK_TARGET) - if(NOT TARGET apk) - add_custom_target(apk COMMENT "Building all apks") - endif() - endif() + _qt_internal_create_global_android_targets_impl(apk) + + # Create a top-level "aab" target for convenience, so that users can call 'ninja aab'. + # It will trigger building all the apk build targets that are added as part of the project. + # Allow opting out. + _qt_internal_create_global_android_targets_impl(aab) endfunction() # This function allows deciding whether apks should be built as part of the ALL target at first diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index f86d4ad5bf..ef75f9b72a 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -46,7 +46,7 @@ set(_Qt6CTestMacros "${_Qt6CoreConfigDir}/Qt6CTestMacros.cmake") if(ANDROID_PLATFORM) include("${CMAKE_CURRENT_LIST_DIR}/@QT_CMAKE_EXPORT_NAMESPACE@AndroidMacros.cmake") - _qt_internal_create_global_apk_target() + _qt_internal_create_global_android_targets() endif() if(EMSCRIPTEN) |