Files
OpenRoyale/tools/scripts/build_native.sh
T
2026-07-09 07:40:42 +02:00

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