56 lines
2.0 KiB
Bash
56 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Builds the vendored libopus source for every ABI gomobile supports and puts
|
|
# static archives where voice_decoder_factory_android.go links them. This is a
|
|
# build-time dependency only; no native library needs to be loaded separately.
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
OPUS_SOURCE="$ROOT/android/app/src/main/cpp/third_party/opus"
|
|
OUTPUT="$ROOT/go/teamspeak/.opus/lib"
|
|
SDK_ROOT="${ANDROID_HOME:-${ANDROID_SDK_ROOT:-}}"
|
|
|
|
if [[ -z "$SDK_ROOT" && -f "$ROOT/android/local.properties" ]]; then
|
|
SDK_ROOT="$(sed -n 's#^sdk.dir=##p' "$ROOT/android/local.properties" | sed 's#\\\\#/#g')"
|
|
fi
|
|
if [[ -z "$SDK_ROOT" ]]; then
|
|
echo "ANDROID_HOME or ANDROID_SDK_ROOT must point to an Android SDK" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -n "${ANDROID_NDK_HOME:-}" ]]; then
|
|
NDK="$ANDROID_NDK_HOME"
|
|
elif [[ -n "${ANDROID_NDK_ROOT:-}" ]]; then
|
|
NDK="$ANDROID_NDK_ROOT"
|
|
else
|
|
NDK="$(ls -d "$SDK_ROOT"/ndk/* 2>/dev/null | sort -V | tail -n 1 || true)"
|
|
fi
|
|
if [[ -z "$NDK" || ! -d "$NDK" ]]; then
|
|
echo "Android NDK not found under $SDK_ROOT/ndk" >&2
|
|
exit 1
|
|
fi
|
|
|
|
CMAKE="${CMAKE:-$SDK_ROOT/cmake/3.22.1/bin/cmake}"
|
|
if [[ ! -x "$CMAKE" ]]; then
|
|
CMAKE="cmake"
|
|
fi
|
|
NINJA="$(dirname "$CMAKE")/ninja.exe"
|
|
if [[ ! -x "$NINJA" ]]; then
|
|
NINJA="ninja"
|
|
fi
|
|
|
|
for abi in armeabi-v7a arm64-v8a x86 x86_64; do
|
|
build="$ROOT/go/teamspeak/.opus/build/$abi"
|
|
install="$ROOT/go/teamspeak/.opus/install/$abi"
|
|
"$CMAKE" -S "$OPUS_SOURCE" -B "$build" -G Ninja -DCMAKE_MAKE_PROGRAM="$NINJA" \
|
|
-DCMAKE_TOOLCHAIN_FILE="$NDK/build/cmake/android.toolchain.cmake" \
|
|
-DANDROID_ABI="$abi" -DANDROID_PLATFORM=android-26 \
|
|
-DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_SHARED_LIBRARY=OFF \
|
|
-DOPUS_BUILD_PROGRAMS=OFF -DOPUS_BUILD_TESTING=OFF \
|
|
-DOPUS_INSTALL_PKG_CONFIG_MODULE=OFF -DOPUS_INSTALL_CMAKE_CONFIG_MODULE=OFF \
|
|
-DCMAKE_INSTALL_PREFIX="$install"
|
|
"$CMAKE" --build "$build" --config Release
|
|
"$CMAKE" --install "$build" --config Release
|
|
mkdir -p "$OUTPUT/$abi"
|
|
cp "$install/lib/libopus.a" "$OUTPUT/$abi/libopus.a"
|
|
done
|