Files
panopainter/scripts/automation/android-sdk-env.sh

79 lines
2.3 KiB
Bash

#!/usr/bin/env sh
android_sdk_root() {
if [ -n "${ANDROID_SDK_ROOT:-}" ] && [ -d "$ANDROID_SDK_ROOT" ]; then
printf '%s\n' "$ANDROID_SDK_ROOT"
return 0
fi
if [ -n "${ANDROID_HOME:-}" ] && [ -d "$ANDROID_HOME" ]; then
printf '%s\n' "$ANDROID_HOME"
return 0
fi
if [ -n "${LOCALAPPDATA:-}" ]; then
local_sdk="$LOCALAPPDATA/Android/Sdk"
if command -v cygpath >/dev/null 2>&1; then
local_sdk="$(cygpath -u "$local_sdk")"
fi
if [ -d "$local_sdk" ]; then
printf '%s\n' "$local_sdk"
return 0
fi
fi
if [ -d "$HOME/Android/Sdk" ]; then
printf '%s\n' "$HOME/Android/Sdk"
return 0
fi
return 1
}
latest_android_package_dir() {
root="$1"
package="$2"
package_root="$root/$package"
[ -d "$package_root" ] || return 1
latest="$(
for dir in "$package_root"/*; do
[ -d "$dir" ] || continue
version="${dir##*/}"
printf '%s\n' "$version"
done | grep -E '^[0-9]+(\.[0-9]+)*$' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -n 1
)"
[ -n "$latest" ] || return 1
printf '%s/%s\n' "$package_root" "$latest"
}
set_android_sdk_toolchain_environment() {
sdk_root="$(android_sdk_root)" || {
printf '%s\n' "Android SDK root was not found. Install command-line tools or set ANDROID_SDK_ROOT." >&2
return 1
}
ndk_dir="$(latest_android_package_dir "$sdk_root" ndk)" || {
printf '%s\n' "No installed Android NDK package was found under $sdk_root/ndk." >&2
return 1
}
cmake_dir="$(latest_android_package_dir "$sdk_root" cmake)" || {
printf '%s\n' "No installed Android CMake package was found under $sdk_root/cmake." >&2
return 1
}
cmake_command="$cmake_dir/bin/cmake"
[ -x "$cmake_command" ] || {
printf '%s\n' "Android SDK CMake executable not found: $cmake_command" >&2
return 1
}
export ANDROID_HOME="$sdk_root"
export ANDROID_SDK_ROOT="$sdk_root"
export ANDROID_NDK_HOME="$ndk_dir"
export ANDROID_NDK_ROOT="$ndk_dir"
export ANDROID_CMAKE_COMMAND="$cmake_command"
export ANDROID_NDK_VERSION="${ndk_dir##*/}"
export ANDROID_CMAKE_VERSION="${cmake_dir##*/}"
}