Files

56 lines
2.0 KiB
Bash
Raw Permalink Normal View History

2026-07-20 19:01:03 +08:00
#!/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