Skip to content

Instantly share code, notes, and snippets.

@frizz925
Created January 1, 2020 18:04
Show Gist options
  • Save frizz925/c537946cc1215bc199c6645226437a52 to your computer and use it in GitHub Desktop.
Save frizz925/c537946cc1215bc199c6645226437a52 to your computer and use it in GitHub Desktop.
Script for setting up environment for Android NDK
#!/bin/bash
if [ $# -lt 1 ]; then
echo >&2 "Usage: SetEnv.sh <android-arch> [min-sdk-version]"
return 1
fi
if [ -z "$NDK" ]; then
echo >&2 "Missing 'NDK' environment variable"
return 1
fi
export BUILD_HOST=$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -p)
export ANDROID_ARCH=$1
export MIN_SDK_VERSION=$2
if [ -z "$MIN_SDK_VERSION" ]; then
export MIN_SDK_VERSION=21
fi
if [ $ANDROID_ARCH = "x86" ]; then
export ANDROID_ABI="x86"
export TARGET_HOST="i686-linux-android"
elif [ $ANDROID_ARCH = "x86_64" ]; then
export ANDROID_ABI="x86-64"
export TARGET_HOST="x86_64-linux-android"
elif [ $ANDROID_ARCH = "arm" ]; then
export ANDROID_ABI="armeabi-v7a"
export TARGET_HOST="armv7a-linux-androideabi"
elif [ $ANDROID_ARCH = "arm64" ]; then
export ANDROID_ABI="arm64-v8a"
export TARGET_HOST="aarch64-linux-android"
else
echo >&2 "Unknown Android arch '$ANDROID_ARCH'"
return 1
fi
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$BUILD_HOST
export SYSROOT=$TOOLCHAIN/sysroot
export CC=$TOOLCHAIN/bin/$TARGET_HOST$MIN_SDK_VERSION-clang
export CXX=$TOOLCHAIN/bin/$TARGET_HOST$MIN_SDK_VERSION-clang++
export AR=$TOOLCHAIN/bin/$TARGET_HOST-ar
export AS=$TOOLCHAIN/bin/$TARGET_HOST-as
export LD=$TOOLCHAIN/bin/$TARGET_HOST-ld
export NM=$TOOLCHAIN/bin/$TARGET_HOST-nm
export STRIP=$TOOLCHAIN/bin/$TARGET_HOST-strip
export STRINGS=$TOOLCHAIN/bin/$TARGET_HOST-strings
PREFIX_RELATIVE=$(dirname $0)/../prebuild/$ANDROID_ABI
[ -d $PREFIX_RELATIVE ] || mkdir -p $PREFIX_RELATIVE
export PREFIX=$(realpath $PREFIX_RELATIVE)
export CFLAGS="-fPIE -fPIC"
export CPATH=$PREFIX/include:$PREFIX/include/libxml2
export CMAKE_INCLUDE_PATH=$CPATH
export LIBRARY_PATH=$PREFIX/lib
export LD_LIBRARY_PATH=$LIBRARY_PATH
export CMAKE_LIBRARY_PATH=$LIBRARY_PATH
android-cmake() {
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DANDROID_NDK=$NDK \
-DANDROID_TOOLCHAIN=$CC \
-DANDROID_ABI=$ANDROID_ABI \
-DANDROID_NATIVE_API_LEVEL=$MIN_SDK_VERSION \
-DANDROID_CPP_FEATURES="rtti exceptions" \
$@
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment