mirror of
https://github.com/ApfelTeeSaft/OpenRoyale.git
synced 2026-08-26 19:33:32 +00:00
29 lines
1.2 KiB
Bash
29 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
# build_native.sh - build reconstructed native libs for a given ABI via NDK + CMake.
|
|
# Usage: build_native.sh <armeabi-v7a|arm64-v8a> [Debug|Release]
|
|
# Requires: $ANDROID_NDK_HOME (or $NDK), cmake, ninja.
|
|
set -euo pipefail
|
|
ABI="${1:?usage: build_native.sh <armeabi-v7a|arm64-v8a> [Debug|Release]}"
|
|
CFG="${2:-Debug}"
|
|
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJ="$(cd "$HERE/../.." && pwd)"
|
|
NATIVE="$PROJ/native"
|
|
JNILIBS="$PROJ/app/src/main/jniLibs/$ABI"
|
|
|
|
NDK="${ANDROID_NDK_HOME:-${NDK:-}}"
|
|
[ -n "$NDK" ] && [ -d "$NDK" ] || { echo "ERROR: set ANDROID_NDK_HOME (see tools/scripts/fetch_ndk.sh)"; exit 2; }
|
|
[ -f "$NATIVE/CMakeLists.txt" ] || { echo "ERROR: native/CMakeLists.txt missing"; exit 3; }
|
|
|
|
BUILD="$NATIVE/build/$ABI"
|
|
mkdir -p "$BUILD" "$JNILIBS"
|
|
echo "[*] Configuring native ($ABI, $CFG) with NDK=$NDK"
|
|
cmake -S "$NATIVE" -B "$BUILD" -G Ninja \
|
|
-DCMAKE_TOOLCHAIN_FILE="$NDK/build/cmake/android.toolchain.cmake" \
|
|
-DANDROID_ABI="$ABI" -DANDROID_PLATFORM=android-21 \
|
|
-DANDROID_STL=c++_shared -DCMAKE_BUILD_TYPE="$CFG"
|
|
cmake --build "$BUILD" -j"$(nproc)"
|
|
|
|
echo "[*] Collecting .so into $JNILIBS"
|
|
find "$BUILD" -name '*.so' -exec cp -f {} "$JNILIBS/" \;
|
|
echo "[+] Native build done for $ABI:"; ls -1 "$JNILIBS" || true
|