summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2021-11-18 10:27:47 +0100
committerAlexey Edelev <alexey.edelev@qt.io>2021-12-02 09:02:05 +0100
commit669b454378e228e50e371387c4ce3980b44a0156 (patch)
treebe648d47e249239b5b08f88fbc757087038e7448
parentbabb05c3dada87252066d2e0655878a66baacf48 (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.txt2
-rw-r--r--src/corelib/Qt6AndroidMacros.cmake39
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in2
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)