i2pd-android/binary/jni/build.sh

115 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# https://stackoverflow.com/a/246128
SOURCE="${0}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
# Checking Android SDK
if [ -z "$ANDROID_HOME" -a "$ANDROID_HOME" == "" ]; then
echo -e "\033[31mFailed! ANDROID_HOME is empty. Run 'export ANDROID_HOME=[PATH_TO_SDK]'\033[0m"
exit
fi
# Checking Android NDK
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
exit 1
fi
_NDK_OPTS="-j `nproc` NDK_MODULE_PATH=$DIR"
_help()
{
echo "Syntax: $(basename "$SOURCE") [-m|d|s|h|v]"
echo "Options:"
echo "b Build binary."
echo "c Clean before binary build."
echo "d Debug build."
echo "s Strip binaries."
echo "x Skip libraries rebuild."
echo "v Verbose NDK output."
echo "h Print this Help."
echo
}
_failed()
{
echo "Compilation failed";
exit 1;
}
while getopts ":dbcsvxh" option; do
case $option in
d) # debug build
_NDK_OPTS="$_NDK_OPTS NDK_DEBUG=1"
;;
b) # build binary
_BINARY=1
;;
c) # clean before build
_CLEAN=1
;;
s) # strip binaries
_STRIP=1
;;
x) # skip libraries rebuild
_SKIP_LIBS=1
;;
v) # verbose output
_NDK_OPTS="$_NDK_OPTS V=1 NDK_LOG=1"
;;
h) # display help
_help
exit;;
\?) # Invalid option
echo "Error: Invalid option. Use $(basename "$SOURCE") -h for help"
exit;;
esac
done
# Building
if [ -z "$_SKIP_LIBS" ]; then
echo "Building boost..."
./build_boost.sh
[ $? -ne 0 ] && _failed
echo "Building openssl..."
./build_openssl.sh
[ $? -ne 0 ] && _failed
echo "Building miniupnpc..."
./build_miniupnpc.sh
[ $? -ne 0 ] && _failed
fi
if [ ! -z "$_CLEAN" ]; then
echo "Cleaning..."
$ANDROID_NDK_HOME/ndk-build $_NDK_OPTS clean
fi
if [ ! -z "$_BINARY" ]; then
echo "Building i2pd..."
$ANDROID_NDK_HOME/ndk-build $_NDK_OPTS
fi
if [ ! -z "$_STRIP" || ! -z "$_MODULE" ]; then
echo "Processing binaries..."
pushd $DIR/../libs > /dev/null
for xarch in $(ls .); do
if [ ! -z "$_STRIP" ]; then
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip -s $xarch/i2pd
fi
if [ ! -z "$_MODULE" ]; then
mv $xarch/i2pd $xarch/libi2pd.so
fi
done
popd > /dev/null
fi
echo "Compilation finished"