Android: allow setting javac build version from the configure script

The configure options -android-javac-source and -android-javac-target
can be used to set the version numbers.

Fixes: QTBUG-86282
Pick-to: 5.15
Change-Id: I36b0665de2c31e16bf6d138859b5503455eb8e66
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
This commit is contained in:
Assam Boudjelthia 2020-09-11 11:07:44 +03:00
parent 5ce24fab73
commit 675805e9eb
4 changed files with 20 additions and 2 deletions

View File

@ -210,6 +210,8 @@ Build environment:
[$ANDROID_NDK_HOST] [$ANDROID_NDK_HOST]
-android-abis ....... Comma separated Android abis, default is: -android-abis ....... Comma separated Android abis, default is:
armeabi-v7a,arm64-v8a,x86,x86_64 armeabi-v7a,arm64-v8a,x86,x86_64
-android-javac-target Set the javac build target version [7]
-android-javac-source Set the javac build source version [7]
-android-style-assets Automatically extract style assets from the device at -android-style-assets Automatically extract style assets from the device at
run time. This option makes the Android style behave run time. This option makes the Android style behave
correctly, but also makes the Android platform plugin correctly, but also makes the Android platform plugin

View File

@ -55,6 +55,8 @@
"android-ndk-host": "string", "android-ndk-host": "string",
"android-ndk-platform": "string", "android-ndk-platform": "string",
"android-sdk": "string", "android-sdk": "string",
"android-javac-target": "string",
"android-javac-source": "string",
"android-style-assets": "boolean", "android-style-assets": "boolean",
"appstore-compliant": "boolean", "appstore-compliant": "boolean",

View File

@ -627,12 +627,17 @@ defineTest(qtConfOutput_prepareOptions) {
isEmpty(platform): \ isEmpty(platform): \
platform = android-23 platform = android-23
android_javac_target = $$eval(config.input.android-javac-target)
android_javac_source = $$eval(config.input.android-javac-source)
$${currentConfig}.output.devicePro += \ $${currentConfig}.output.devicePro += \
"DEFAULT_ANDROID_SDK_ROOT = $$val_escape(sdk_root)" \ "DEFAULT_ANDROID_SDK_ROOT = $$val_escape(sdk_root)" \
"DEFAULT_ANDROID_NDK_ROOT = $$val_escape(ndk_root)" \ "DEFAULT_ANDROID_NDK_ROOT = $$val_escape(ndk_root)" \
"DEFAULT_ANDROID_PLATFORM = $$platform" \ "DEFAULT_ANDROID_PLATFORM = $$platform" \
"DEFAULT_ANDROID_NDK_HOST = $$ndk_host" \ "DEFAULT_ANDROID_NDK_HOST = $$ndk_host" \
"DEFAULT_ANDROID_ABIS = $$split(android_abis, ',')" "DEFAULT_ANDROID_ABIS = $$split(android_abis, ',')" \
"ANDROID_JAVAC_TARGET_VERSION = $$android_javac_target" \
"ANDROID_JAVAC_SOURCE_VERSION = $$android_javac_source"
} }
export($${currentConfig}.output.devicePro) export($${currentConfig}.output.devicePro)

View File

@ -20,7 +20,16 @@ CONFIG += plugin no_plugin_name_prefix
javac.input = JAVASOURCES javac.input = JAVASOURCES
javac.output = $$CLASS_DIR javac.output = $$CLASS_DIR
javac.CONFIG += combine javac.CONFIG += combine
javac.commands = javac -source 7 -target 7 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$DIRLIST_SEPARATOR))) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
# Check for user defined javac build version
javac_target_version = $$ANDROID_JAVAC_TARGET_VERSION
isEmpty(javac_target_version): javac_target_version = 7
javac_source_version = $$ANDROID_JAVAC_SOURCE_VERSION
isEmpty(javac_source_version): javac_source_version = 7
javac.commands = javac -source $$javac_source_version -target $$javac_target_version -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$DIRLIST_SEPARATOR))) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
# Force rebuild every time, because we don't know the paths of the destination files # Force rebuild every time, because we don't know the paths of the destination files
# as they depend on the code. # as they depend on the code.
javac.depends = FORCE javac.depends = FORCE