Files
Archive/yass/scripts/setup-android-rust.sh
2024-05-03 20:28:03 +02:00

74 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
if [ -z "$(which rustup)" ]; then
echo "rustup not found"
exit -1
fi
if [ -z "$ANDROID_NDK_ROOT" ]; then
echo "ANDROID_NDK_ROOT not defined"
exit -1
fi
echo "Adding rustup toolchain..."
rustup toolchain install 1.78.0
rustup default 1.78.0
echo "Adding rustup toolchain...done"
echo "Adding rustup android target..."
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
echo "Adding rustup android target...done"
mkdir -p ~/.cargo
HAS_CARGO_ANDROID="$(grep target.aarch64-linux-android ~/.cargo/config || :)"
if [ ! -z "$HAS_CARGO_ANDROID" ]; then
echo "Skip patching cargo config..."
exit 0
fi
echo "Patching cargo config..."
ARCH=$(uname -s)
case "$ARCH" in
Linux)
HOST_OS="linux"
;;
Darwin)
HOST_OS="darwin"
;;
MINGW*|MSYS*)
HOST_OS="windows"
;;
*)
echo "Unsupported OS ${ARCH}"
exit 1
;;
esac
cat >> ~/.cargo/config << EOF
[target.aarch64-linux-android]
ar = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ar"
linker = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/aarch64-linux-android24-clang"
[target.armv7-linux-androideabi]
ar = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ar"
linker = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/armv7a-linux-androideabi24-clang"
[target.i686-linux-android]
ar = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ar"
linker = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/i686-linux-android24-clang"
[target.x86_64-linux-android]
ar = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ar"
linker = "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/x86_64-linux-android24-clang"
EOF
echo "Patching cargo config...done"