79 lines
2.3 KiB
Bash
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##*/}"
|
|
}
|