diff --git a/coin/platform_configs/cmake_platforms_target_android.yaml b/coin/platform_configs/cmake_platforms_target_android.yaml index c2634f51..2d1765ce 100644 --- a/coin/platform_configs/cmake_platforms_target_android.yaml +++ b/coin/platform_configs/cmake_platforms_target_android.yaml @@ -10,10 +10,10 @@ Configurations: Platform dependency: 'macos-universal-on-arm64' Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ - 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a', - 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', + 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a', + 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', - 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_DEFAULT}}' + 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}' ] - Id: 'android-armv7-on-windows' diff --git a/coin/platform_configs/nightly_android.yaml b/coin/platform_configs/nightly_android.yaml index 529966a0..9ca50630 100644 --- a/coin/platform_configs/nightly_android.yaml +++ b/coin/platform_configs/nightly_android.yaml @@ -55,6 +55,21 @@ Configurations: 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}' ] +- + Id: 'android-arm64-on-macos' + Template: 'qtci-macos-14-arm-106' + Target os: 'Android_ANY' + Target arch: 'arm64' + Compiler: 'Clang' + Target compiler: 'Clang' + Platform dependency: 'macos-universal-on-arm64' + Features: ['Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure'] + Environment variables: [ + 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY1}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a', + 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY1}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}' + ] # ANDROID_NDK_ROOT_NIGHTLY2 - @@ -105,3 +120,18 @@ Configurations: 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}' ] +- + Id: 'android-arm64-on-macos' + Template: 'qtci-macos-14-arm-106' + Target os: 'Android_ANY' + Target arch: 'arm64' + Compiler: 'Clang' + Target compiler: 'Clang' + Platform dependency: 'macos-universal-on-arm64' + Features: ['Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure'] + Environment variables: [ + 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY2}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a', + 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY2}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}' + ] diff --git a/coin/provisioning/common/macos/android.sh b/coin/provisioning/common/macos/android.sh index 23032d16..eafaee81 100755 --- a/coin/provisioning/common/macos/android.sh +++ b/coin/provisioning/common/macos/android.sh @@ -20,8 +20,13 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" +# Non-latest (but still supported by the qt/qt5 branch) NDKs are installed for nightly targets in: +# coin/platform_configs/nightly_android.yaml + ndkVersionLatest="r27c" -ndkVersionDefault="$ndkVersionLatest" +ndkVersionNightly1="$ndkVersionLatest" # If same version as latest = skip NDK install for nightly +ndkVersionNightly2="$ndkVersionLatest" + sdkBuildToolsVersion="35.0.1" # this is compile sdk version sdkApiLevel="android-35" @@ -40,8 +45,18 @@ function InstallNdk() { } -InstallNdk $ndkVersionDefault InstallNdk $ndkVersionLatest +SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest" + +if [ "$ndkVersionNightly1" != "$ndkVersionLatest" ]; then + InstallNdk $ndkVersionNightly1 + SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY1" "$targetFolder/android-ndk-$ndkVersionNightly1" +fi + +if [ "$ndkVersionNightly2" != "$ndkVersionLatest" ]; then + InstallNdk $ndkVersionNightly2 + SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY2" "$targetFolder/android-ndk-$ndkVersionNightly2" +fi echo "Unzipping Android Tools to '$sdkTargetFolder'" sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" @@ -65,8 +80,6 @@ echo "Checking the contents of Android SDK..." ls -l "$sdkTargetFolder" SetEnvVar "ANDROID_SDK_ROOT" "$sdkTargetFolder" -SetEnvVar "ANDROID_NDK_ROOT_DEFAULT" "$targetFolder/android-ndk-$ndkVersionDefault" -SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest" SetEnvVar "ANDROID_NDK_HOST" "darwin-x86_64" SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" @@ -74,5 +87,7 @@ cat << EOT >>~/versions.txt Android SDK tools = $toolsVersion Android SDK Build Tools = $sdkBuildToolsVersion Android SDK API level = $sdkApiLevel -Android NDK = $ndkVersion +Android NDK latest = $ndkVersionLatest +Android NDK nightly1 = $ndkVersionNightly1 +Android NDK nightly2 = $ndkVersionNightly2 EOT diff --git a/coin/provisioning/qtci-macos-12-arm/30-android.sh b/coin/provisioning/qtci-macos-12-arm/30-android.sh index acd2d4b9..f6d17e49 100755 --- a/coin/provisioning/qtci-macos-12-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-12-arm/30-android.sh @@ -1,64 +1,8 @@ #!/usr/bin/env bash -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# This script install Android sdk and ndk. - -# It also runs update for SDK API, latest SDK tools, latest platform-tools and build-tools version +#Copyright (C) 2025 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only set -ex -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -targetFolder="/opt/android" -sdkTargetFolder="$targetFolder/sdk" - -basePath="/net/ci-files01-hki.ci.qt.io/hdd/www/input/android" - -toolsVersion="2.1" -# toolsFile dertermines tools version -toolsFile="commandlinetools-mac-6609375_latest.zip" - -ndkVersion="r27c" -ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="35.0.1" -# this is compile sdk version -sdkApiLevel="android-35" - -toolsSourceFile="$basePath/$toolsFile" -ndkSourceFile="$basePath/$ndkFile" - -echo "Unzipping Android NDK to '$targetFolder'" -sudo unzip -q "$ndkSourceFile" -d "$targetFolder" -echo "Unzipping Android Tools to '$sdkTargetFolder'" -sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" - -echo "Changing ownership of Android files." -sudo chown -R qt:wheel "$targetFolder" - -# Run the following command under `eval` or `sh -c` so that the shell properly splits it -sdkmanager_no_progress_bar_cmd="tr '\r' '\n' | grep -v '^\[[ =]*\]'" - -sudo mkdir "$sdkTargetFolder/cmdline-tools" -sudo mv "$sdkTargetFolder/tools" "$sdkTargetFolder/cmdline-tools" - -echo "Running SDK manager for platforms;$sdkApiLevel, platform-tools and build-tools;$sdkBuildToolsVersion." -(echo "y"; echo "y") | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" "--sdk_root=$sdkTargetFolder" \ - "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ - | eval "$sdkmanager_no_progress_bar_cmd" - -echo "Checking the contents of Android SDK..." -ls -l "$sdkTargetFolder" - -SetEnvVar "ANDROID_SDK_ROOT" "$sdkTargetFolder" -SetEnvVar "ANDROID_NDK_ROOT" "$targetFolder/android-ndk-$ndkVersion" -SetEnvVar "ANDROID_NDK_HOST" "darwin-x86_64" -SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" - -cat << EOB >> ~/versions.txt -Android SDK tools = $toolsVersion -Android SDK Build Tools = $sdkBuildToolsVersion -Android SDK API level = $sdkApiLevel -Android NDK = $ndkVersion -EOB +# shellcheck source=../common/macos/android.sh +source "${BASH_SOURCE%/*}/../common/macos/android.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/30-android.sh b/coin/provisioning/qtci-macos-13-arm/30-android.sh index acd2d4b9..f6d17e49 100755 --- a/coin/provisioning/qtci-macos-13-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-13-arm/30-android.sh @@ -1,64 +1,8 @@ #!/usr/bin/env bash -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# This script install Android sdk and ndk. - -# It also runs update for SDK API, latest SDK tools, latest platform-tools and build-tools version +#Copyright (C) 2025 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only set -ex -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -targetFolder="/opt/android" -sdkTargetFolder="$targetFolder/sdk" - -basePath="/net/ci-files01-hki.ci.qt.io/hdd/www/input/android" - -toolsVersion="2.1" -# toolsFile dertermines tools version -toolsFile="commandlinetools-mac-6609375_latest.zip" - -ndkVersion="r27c" -ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="35.0.1" -# this is compile sdk version -sdkApiLevel="android-35" - -toolsSourceFile="$basePath/$toolsFile" -ndkSourceFile="$basePath/$ndkFile" - -echo "Unzipping Android NDK to '$targetFolder'" -sudo unzip -q "$ndkSourceFile" -d "$targetFolder" -echo "Unzipping Android Tools to '$sdkTargetFolder'" -sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" - -echo "Changing ownership of Android files." -sudo chown -R qt:wheel "$targetFolder" - -# Run the following command under `eval` or `sh -c` so that the shell properly splits it -sdkmanager_no_progress_bar_cmd="tr '\r' '\n' | grep -v '^\[[ =]*\]'" - -sudo mkdir "$sdkTargetFolder/cmdline-tools" -sudo mv "$sdkTargetFolder/tools" "$sdkTargetFolder/cmdline-tools" - -echo "Running SDK manager for platforms;$sdkApiLevel, platform-tools and build-tools;$sdkBuildToolsVersion." -(echo "y"; echo "y") | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" "--sdk_root=$sdkTargetFolder" \ - "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ - | eval "$sdkmanager_no_progress_bar_cmd" - -echo "Checking the contents of Android SDK..." -ls -l "$sdkTargetFolder" - -SetEnvVar "ANDROID_SDK_ROOT" "$sdkTargetFolder" -SetEnvVar "ANDROID_NDK_ROOT" "$targetFolder/android-ndk-$ndkVersion" -SetEnvVar "ANDROID_NDK_HOST" "darwin-x86_64" -SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" - -cat << EOB >> ~/versions.txt -Android SDK tools = $toolsVersion -Android SDK Build Tools = $sdkBuildToolsVersion -Android SDK API level = $sdkApiLevel -Android NDK = $ndkVersion -EOB +# shellcheck source=../common/macos/android.sh +source "${BASH_SOURCE%/*}/../common/macos/android.sh"