Created
January 1, 2020 18:04
-
-
Save frizz925/c537946cc1215bc199c6645226437a52 to your computer and use it in GitHub Desktop.
Script for setting up environment for Android NDK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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