mirror of
https://github.com/TokTok/c-toxcore
synced 2026-05-27 22:34:42 +00:00
1451029613
Also enable it for all binary deployment builds. This avoids exporting sodium/vpx/opus symbols through the toxcore library, which way conflict with other exported symbols if client code links to e.g. libsodium itself for its own purposes.
103 lines
2.6 KiB
Bash
Executable File
103 lines
2.6 KiB
Bash
Executable File
#!/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
|