1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-19 10:05:05 -07:00
libsodium/dist-build/android-build.sh

99 lines
3.1 KiB
Bash
Raw Normal View History

2015-02-08 09:04:15 -07:00
#! /bin/sh
2014-02-17 02:07:47 -07:00
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-//')
2014-02-17 02:07:47 -07:00
if [ -z "$ANDROID_NDK_HOME" ]; then
2016-12-17 10:52:52 -07:00
echo "You should probably set ANDROID_NDK_HOME to the directory containing"
echo "the Android NDK"
exit
2014-02-17 02:07:47 -07:00
fi
if [ ! -f ./configure ]; then
2017-03-06 02:54:00 -07:00
echo "Can't find ./configure. Wrong directory or haven't run autogen.sh?" >&2
2016-12-17 10:52:52 -07:00
exit 1
2014-02-17 02:07:47 -07:00
fi
if [ "x$TARGET_ARCH" = 'x' ] || [ "x$ARCH" = 'x' ] || [ "x$HOST_COMPILER" = 'x' ]; then
2017-03-06 02:54:00 -07:00
echo "You shouldn't use android-build.sh directly, use android-[arch].sh instead" >&2
2016-12-17 10:52:52 -07:00
exit 1
2014-02-17 02:07:47 -07:00
fi
export MAKE_TOOLCHAIN="${ANDROID_NDK_HOME}/build/tools/make_standalone_toolchain.py"
2014-02-17 02:07:47 -07:00
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"}
2014-02-17 02:07:47 -07:00
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
2016-06-05 13:04:10 -07:00
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"
2018-03-06 13:20:17 -07:00
else
export LIBSODIUM_ENABLE_MINIMAL_FLAG=""
fi
2015-08-05 10:46:36 -07:00
./configure \
--disable-soname-versions \
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
2015-08-05 10:46:36 -07:00
--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}
2014-02-17 02:07:47 -07:00
make clean && \
make -j${PROCESSORS} install && \
2015-08-05 11:00:15 -07:00
echo "libsodium has been installed into ${PREFIX}"