#!/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##*/}" }