diff options
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/android/android.prf | 9 | ||||
-rw-r--r-- | mkspecs/features/android/android_deployment_settings.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/android/resolve_config.prf | 19 |
3 files changed, 29 insertions, 3 deletions
diff --git a/mkspecs/features/android/android.prf b/mkspecs/features/android/android.prf index 6990417536..ddb94ea22b 100644 --- a/mkspecs/features/android/android.prf +++ b/mkspecs/features/android/android.prf @@ -1,4 +1,6 @@ APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk) +TARGET_FOR_ANDROID_DEPLOYMENT_SETTINGS = $$TARGET + !contains(TEMPLATE, subdirs): { apk_install_target.target = apk_install_target apk_install_target.depends = first @@ -21,7 +23,12 @@ APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk) prepareRecursiveTarget(apk_install_target) } -build_pass { +# Apply Android arch specific settings in the following cases: +# - build_pass == true aka Qt was configured with multi-ABI (2+ arches) +# - single_android_abi == true aka Qt was configuring with a single ABI / arch +# modifications are omitted when building config.tests +# during Qt configuration, by checkking for the presence of single_arch +build_pass|if(single_android_abi:!single_arch) { contains(TEMPLATE, ".*app") { !android_app { !contains(TARGET, ".so") { diff --git a/mkspecs/features/android/android_deployment_settings.prf b/mkspecs/features/android/android_deployment_settings.prf index 75d4b9255c..573fa1bdfe 100644 --- a/mkspecs/features/android/android_deployment_settings.prf +++ b/mkspecs/features/android/android_deployment_settings.prf @@ -92,10 +92,10 @@ contains(TEMPLATE, ".*app"):!build_pass:!android-embedded { FILE_CONTENT += " \"qrcFiles\": $$emitString($$join(rescopy, ","))," } FILE_CONTENT += "" - FILE_CONTENT += " \"application-binary\": $$emitString($$TARGET)" + FILE_CONTENT += " \"application-binary\": $$emitString($$TARGET_FOR_ANDROID_DEPLOYMENT_SETTINGS)" FILE_CONTENT += "}" - isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json + isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET_FOR_ANDROID_DEPLOYMENT_SETTINGS-deployment-settings.json write_file($$ANDROID_DEPLOYMENT_SETTINGS_FILE, FILE_CONTENT)|error() } diff --git a/mkspecs/features/android/resolve_config.prf b/mkspecs/features/android/resolve_config.prf index f4ccd88e31..5f0c166f84 100644 --- a/mkspecs/features/android/resolve_config.prf +++ b/mkspecs/features/android/resolve_config.prf @@ -7,4 +7,23 @@ load(resolve_config) CONFIG += $$ALL_ABIS build_all addExclusiveBuildsProper($$ALL_ABIS, $$ANDROID_ABIS) unset(ALL_ABIS) + CONFIG += multi_android_abi +} + +# single_arch is set qtConfTest_compile and is a marker that a config test is being built, and +# thus all Android ABI file name modifications should be avoided (prefix / suffix of +# the built binary). +# single_android_abi means ANDROID_ABI only has one value +# multi_android_abi means ANDROID_ABI has more than one value (Qt configured with 2+ arches) +# +# Assign $$ALL_ANDROID_ABIS to ANDROID_ABIS only if ANDROID_ABIS was not provided by the user +# on the qmake command line and Qt was not configured with 2+ arches. +# +# Note that in config.tests, ANDROID_ABIS ends up being empty (due to !single_arch check) regardless +# of how many ABIs Qt is configured with, which in turns causes the 'architectures' field in +# in android-arch-deployment-settings.json be empty. +!equals(TEMPLATE, aux):!host_build:!single_arch:!java:!multi_android_abi:android:isEmpty(ANDROID_ABIS) { + # Needed for the generated deployment-settings.json not to have an empty list + # of architectures. + ANDROID_ABIS = $$ALL_ANDROID_ABIS } |