#! /bin/sh if [ -z "$NDK_PLATFORM" ]; then export NDK_PLATFORM="android-16" fi export NDK_PLATFORM_COMPAT="${NDK_PLATFORM_COMPAT:-${NDK_PLATFORM}}" export NDK_API_VERSION=$(echo "$NDK_PLATFORM" | sed 's/^android-//') export NDK_API_VERSION_COMPAT=$(echo "$NDK_PLATFORM_COMPAT" | sed 's/^android-//') if [ -z "$ANDROID_NDK_HOME" ]; then echo "You should probably set ANDROID_NDK_HOME to the directory containing" echo "the Android NDK" exit fi if [ ! -f ./configure ]; then echo "Can't find ./configure. Wrong directory or haven't run autogen.sh?" >&2 exit 1 fi if [ "x$TARGET_ARCH" = 'x' ] || [ "x$ARCH" = 'x' ] || [ "x$HOST_COMPILER" = 'x' ]; then echo "You shouldn't use android-build.sh directly, use android-[arch].sh instead" >&2 exit 1 fi export MAKE_TOOLCHAIN="${ANDROID_NDK_HOME}/build/tools/make_standalone_toolchain.py" export PREFIX="$(pwd)/libsodium-android-${TARGET_ARCH}" export TOOLCHAIN_DIR="$(pwd)/android-toolchain-${TARGET_ARCH}" export PATH="${PATH}:${TOOLCHAIN_DIR}/bin" export CC=${CC:-"${HOST_COMPILER}-clang"} rm -rf "${TOOLCHAIN_DIR}" "${PREFIX}" echo echo "Warnings related to headers being present but not usable are due to functions" echo "that didn't exist in the specified minimum API version level." echo "They can be safely ignored." echo echo if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then echo "Building for platform [${NDK_PLATFORM}], retaining compatibility with platform [${NDK_PLATFORM_COMPAT}]" else echo "Building for platform [${NDK_PLATFORM}]" fi echo env - PATH="$PATH" \ "$MAKE_TOOLCHAIN" --force --api="$NDK_API_VERSION_COMPAT" \ --arch="$ARCH" --install-dir="$TOOLCHAIN_DIR" || exit 1 if [ -z "$LIBSODIUM_FULL_BUILD" ]; then export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" else export LIBSODIUM_ENABLE_MINIMAL_FLAG="" fi ./configure \ --disable-soname-versions \ ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ --host="${HOST_COMPILER}" \ --prefix="${PREFIX}" \ --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then egrep '^#define ' config.log | sort -u > config-def-compat.log echo echo "Configuring again for platform [${NDK_PLATFORM}]" echo env - PATH="$PATH" \ "$MAKE_TOOLCHAIN" --force --api="$NDK_API_VERSION" \ --arch="$ARCH" --install-dir="$TOOLCHAIN_DIR" || exit 1 ./configure \ --disable-soname-versions \ ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ --host="${HOST_COMPILER}" \ --prefix="${PREFIX}" \ --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 egrep '^#define ' config.log | sort -u > config-def.log if ! cmp config-def.log config-def-compat.log; then echo "Platform [${NDK_PLATFORM}] is not backwards-compatible with [${NDK_PLATFORM_COMPAT}]" >&2 diff -u config-def.log config-def-compat.log >&2 exit 1 fi rm -f config-def.log config-def-compat.log fi NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) PROCESSORS=${NPROCESSORS:-3} make clean && \ make -j${PROCESSORS} install && \ echo "libsodium has been installed into ${PREFIX}"