1 1.1 riastrad #! /bin/sh 2 1.1 riastrad 3 1.1 riastrad if [ -z "$NDK_PLATFORM" ]; then 4 1.1 riastrad export NDK_PLATFORM="android-16" 5 1.1 riastrad fi 6 1.1 riastrad export NDK_PLATFORM_COMPAT="${NDK_PLATFORM_COMPAT:-${NDK_PLATFORM}}" 7 1.1 riastrad export NDK_API_VERSION=$(echo "$NDK_PLATFORM" | sed 's/^android-//') 8 1.1 riastrad export NDK_API_VERSION_COMPAT=$(echo "$NDK_PLATFORM_COMPAT" | sed 's/^android-//') 9 1.1 riastrad 10 1.1 riastrad if [ -z "$ANDROID_NDK_HOME" ]; then 11 1.1 riastrad echo "You should probably set ANDROID_NDK_HOME to the directory containing" 12 1.1 riastrad echo "the Android NDK" 13 1.1 riastrad exit 14 1.1 riastrad fi 15 1.1 riastrad 16 1.1 riastrad if [ ! -f ./configure ]; then 17 1.1 riastrad echo "Can't find ./configure. Wrong directory or haven't run autogen.sh?" >&2 18 1.1 riastrad exit 1 19 1.1 riastrad fi 20 1.1 riastrad 21 1.1 riastrad if [ "x$TARGET_ARCH" = 'x' ] || [ "x$ARCH" = 'x' ] || [ "x$HOST_COMPILER" = 'x' ]; then 22 1.1 riastrad echo "You shouldn't use android-build.sh directly, use android-[arch].sh instead" >&2 23 1.1 riastrad exit 1 24 1.1 riastrad fi 25 1.1 riastrad 26 1.1 riastrad export MAKE_TOOLCHAIN="${ANDROID_NDK_HOME}/build/tools/make_standalone_toolchain.py" 27 1.1 riastrad 28 1.1 riastrad export PREFIX="$(pwd)/libsodium-android-${TARGET_ARCH}" 29 1.1 riastrad export TOOLCHAIN_DIR="$(pwd)/android-toolchain-${TARGET_ARCH}" 30 1.1 riastrad export PATH="${PATH}:${TOOLCHAIN_DIR}/bin" 31 1.1 riastrad 32 1.1 riastrad export CC=${CC:-"${HOST_COMPILER}-clang"} 33 1.1 riastrad 34 1.1 riastrad rm -rf "${TOOLCHAIN_DIR}" "${PREFIX}" 35 1.1 riastrad 36 1.1 riastrad echo 37 1.1 riastrad if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then 38 1.1 riastrad echo "Building for platform [${NDK_PLATFORM}], retaining compatibility with platform [${NDK_PLATFORM_COMPAT}]" 39 1.1 riastrad else 40 1.1 riastrad echo "Building for platform [${NDK_PLATFORM}]" 41 1.1 riastrad fi 42 1.1 riastrad echo 43 1.1 riastrad 44 1.1 riastrad env - PATH="$PATH" \ 45 1.1 riastrad "$MAKE_TOOLCHAIN" --force --api="$NDK_API_VERSION_COMPAT" \ 46 1.1 riastrad --arch="$ARCH" --install-dir="$TOOLCHAIN_DIR" || exit 1 47 1.1 riastrad 48 1.1 riastrad ./configure \ 49 1.1 riastrad --disable-soname-versions \ 50 1.1 riastrad --enable-minimal \ 51 1.1 riastrad --host="${HOST_COMPILER}" \ 52 1.1 riastrad --prefix="${PREFIX}" \ 53 1.1 riastrad --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 54 1.1 riastrad 55 1.1 riastrad if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then 56 1.1 riastrad egrep '^#define ' config.log | sort -u > config-def-compat.log 57 1.1 riastrad echo 58 1.1 riastrad echo "Configuring again for platform [${NDK_PLATFORM}]" 59 1.1 riastrad echo 60 1.1 riastrad env - PATH="$PATH" \ 61 1.1 riastrad "$MAKE_TOOLCHAIN" --force --api="$NDK_API_VERSION" \ 62 1.1 riastrad --arch="$ARCH" --install-dir="$TOOLCHAIN_DIR" || exit 1 63 1.1 riastrad 64 1.1 riastrad ./configure \ 65 1.1 riastrad --disable-soname-versions \ 66 1.1 riastrad --enable-minimal \ 67 1.1 riastrad --host="${HOST_COMPILER}" \ 68 1.1 riastrad --prefix="${PREFIX}" \ 69 1.1 riastrad --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 70 1.1 riastrad 71 1.1 riastrad egrep '^#define ' config.log | sort -u > config-def.log 72 1.1 riastrad if ! cmp config-def.log config-def-compat.log; then 73 1.1 riastrad echo "Platform [${NDK_PLATFORM}] is not backwards-compatible with [${NDK_PLATFORM_COMPAT}]" >&2 74 1.1 riastrad diff -u config-def.log config-def-compat.log >&2 75 1.1 riastrad exit 1 76 1.1 riastrad fi 77 1.1 riastrad rm -f config-def.log config-def-compat.log 78 1.1 riastrad fi 79 1.1 riastrad 80 1.1 riastrad make clean && \ 81 1.1 riastrad make -j3 install && \ 82 1.1 riastrad echo "libsodium has been installed into ${PREFIX}" 83