From 9bfbb14290c2773e7815c989d41b5f8016d3d15a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Bj=C3=A4reholt?= Date: Thu, 24 Nov 2022 14:04:43 +0100 Subject: [PATCH] build: downgrade NDK to r21e and added macOS Android build support --- compile-android.sh | 3 ++- install-ndk.sh | 25 +++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/compile-android.sh b/compile-android.sh index cfb7e2e4..3d3749f4 100755 --- a/compile-android.sh +++ b/compile-android.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +platform="$(uname -s | tr '[:upper:]' '[:lower:]')" if [ -z "$ANDROID_NDK_HOME" ]; then if [ -d `pwd`/"NDK" ]; then @@ -32,7 +33,7 @@ for archtargetstr in \ target=$(echo $archtargetstr | cut -d " " -f 2) target_underscore=$(echo $target | sed 's/-/_/g') - NDK_ARCH_DIR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" + NDK_ARCH_DIR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin" echo "Building for $arch..." if [ -d "$NDK_ARCH_DIR" ]; then diff --git a/install-ndk.sh b/install-ndk.sh index 26bc83aa..00648d82 100755 --- a/install-ndk.sh +++ b/install-ndk.sh @@ -4,15 +4,20 @@ set -e; +NDK_VERSION=r21e + script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" project_path="$(readlink -f "$script_dir/.")" +platform="$(uname -s | tr '[:upper:]' '[:lower:]')" + if [ -z "$ANDROID_NDK_HOME" ]; then if [ -d `pwd`/"NDK" ]; then echo "Found NDK folder in root, using." else echo 'ANDROID_NDK_HOME not set, downloading NDK...'; - wget --no-verbose -O android-ndk.zip https://dl.google.com/android/repository/android-ndk-r25b-linux.zip; + # Download Linux NDK or macOS NDK, depending on OS + wget --no-verbose -O android-ndk.zip https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-$platform-x86_64.zip; unzip -q -d NDK android-ndk.zip; ls NDK; mv NDK/*/* NDK/; @@ -22,7 +27,7 @@ fi # Needed since dependency 'ring' doesn't respect .cargo/config echo "Setting up toolchain binary symlinks..." -NDK_TOOLCHAIN_BIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin +NDK_TOOLCHAIN_BIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin for arch in \ 'aarch64' \ 'x86_64' \ @@ -44,18 +49,18 @@ echo "Creating cargo config..." mkdir -p $project_path/.cargo echo " [target.aarch64-linux-android] -ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar' -linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang' +ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/llvm-ar' +linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/aarch64-linux-android26-clang' [target.armv7-linux-androideabi] -ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar' -linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-clang' +ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/llvm-ar' +linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/armv7a-linux-androideabi-clang' [target.i686-linux-android] -ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar' -linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android26-clang' +ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/llvm-ar' +linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/i686-linux-android26-clang' [target.x86_64-linux-android] -ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar' -linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android26-clang' +ar = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/llvm-ar' +linker = '$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$platform-x86_64/bin/x86_64-linux-android26-clang' " > $project_path/.cargo/config