103 lines
2.6 KiB
Bash
103 lines
2.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -eu
|
||
|
|
||
|
if [ -n "${CI-}" ]; then
|
||
|
sudo apt-get install -y --no-install-recommends ninja-build yasm
|
||
|
fi
|
||
|
|
||
|
# Set up environment
|
||
|
NDK=$ANDROID_NDK_HOME
|
||
|
|
||
|
ABI=${1:-"armeabi-v7a"}
|
||
|
|
||
|
case $ABI in
|
||
|
armeabi-v7a)
|
||
|
TARGET=armv7a-linux-androideabi
|
||
|
NDK_API=21
|
||
|
ANDROID_VPX_ABI=armv7-android-gcc
|
||
|
;;
|
||
|
arm64-v8a)
|
||
|
TARGET=aarch64-linux-android
|
||
|
NDK_API=21
|
||
|
ANDROID_VPX_ABI=arm64-android-gcc
|
||
|
;;
|
||
|
x86)
|
||
|
TARGET=i686-linux-android
|
||
|
NDK_API=21
|
||
|
ANDROID_VPX_ABI=x86-android-gcc
|
||
|
;;
|
||
|
x86_64)
|
||
|
TARGET=x86_64-linux-android
|
||
|
NDK_API=21
|
||
|
ANDROID_VPX_ABI=x86_64-android-gcc
|
||
|
;;
|
||
|
*)
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
PREFIX="$PWD/deps-prefix-android-$ABI"
|
||
|
|
||
|
TOOLCHAIN="$NDK/toolchains/llvm/prebuilt/linux-x86_64"
|
||
|
SYSROOT="$TOOLCHAIN/sysroot"
|
||
|
|
||
|
export CC="$TOOLCHAIN/bin/$TARGET$NDK_API-clang"
|
||
|
export CXX="$TOOLCHAIN/bin/$TARGET$NDK_API-clang++"
|
||
|
export LDFLAGS=-static-libstdc++
|
||
|
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
|
||
|
|
||
|
# Build libsodium
|
||
|
if [ ! -f "$PREFIX/lib/libsodium.a" ]; then
|
||
|
tar zxf <(wget -O- https://github.com/jedisct1/libsodium/releases/download/1.0.20-RELEASE/libsodium-1.0.20.tar.gz)
|
||
|
pushd libsodium-1.0.20
|
||
|
./configure --prefix="$PREFIX" --host="$TARGET" --with-sysroot="$SYSROOT" --disable-shared --disable-pie
|
||
|
make -j"$(nproc)" install
|
||
|
popd
|
||
|
rm -rf libsodium-1.0.20
|
||
|
fi
|
||
|
|
||
|
# Build opus
|
||
|
if [ ! -f "$PREFIX/lib/libopus.a" ]; then
|
||
|
tar zxf <(wget -O- https://github.com/xiph/opus/releases/download/v1.5.2/opus-1.5.2.tar.gz)
|
||
|
pushd opus-1.5.2
|
||
|
CFLAGS="-fPIC" ./configure --prefix="$PREFIX" --host="$TARGET" --with-sysroot="$SYSROOT" --disable-shared
|
||
|
make "-j$(nproc)"
|
||
|
make install
|
||
|
popd
|
||
|
rm -rf opus-1.5.2
|
||
|
fi
|
||
|
|
||
|
# Build libvpx
|
||
|
if [ ! -f "$PREFIX/lib/libvpx.a" ]; then
|
||
|
tar zxf <(wget -O- https://github.com/webmproject/libvpx/archive/refs/tags/v1.15.0.tar.gz)
|
||
|
pushd libvpx-1.15.0
|
||
|
./configure --prefix="$PREFIX" --libc="$SYSROOT" --target="$ANDROID_VPX_ABI" --disable-examples --disable-unit-tests --enable-pic ||
|
||
|
(cat config.log && exit 1)
|
||
|
sed -i -e "s!^AS=as!AS=$CC -c!" ./*.mk
|
||
|
sed -i -e "s!^STRIP=strip!STRIP=$TOOLCHAIN/bin/llvm-strip!" ./*.mk
|
||
|
make "-j$(nproc)"
|
||
|
make install
|
||
|
popd
|
||
|
rm -rf libvpx-1.15.0
|
||
|
fi
|
||
|
|
||
|
# Build c-toxcore
|
||
|
rm -rf _build
|
||
|
cmake -B _build -G Ninja \
|
||
|
-DANDROID_ABI="$ABI" \
|
||
|
-DCMAKE_TOOLCHAIN_FILE="$NDK/build/cmake/android.toolchain.cmake" \
|
||
|
-DCMAKE_INSTALL_PREFIX="$PWD/toxcore-android-$ABI" \
|
||
|
-DCMAKE_PREFIX_PATH="$PREFIX" \
|
||
|
-DENABLE_STATIC=OFF \
|
||
|
-DENABLE_SHARED=ON \
|
||
|
-DMUST_BUILD_TOXAV=ON \
|
||
|
-DDHT_BOOTSTRAP=OFF \
|
||
|
-DBOOTSTRAP_DAEMON=OFF \
|
||
|
-DUNITTEST=OFF \
|
||
|
-DSTRICT_ABI=ON \
|
||
|
-DMIN_LOGGER_LEVEL=TRACE \
|
||
|
-DEXPERIMENTAL_API=ON
|
||
|
cmake --build _build
|
||
|
cmake --install _build
|