Files
video-v1/vav2/platforms/windows/vavcore/build-android.sh

140 lines
4.0 KiB
Bash

#!/bin/bash
# VavCore Android Build Script
# Builds VavCore library for Android using CMake and NDK
set -e # Exit on any error
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="${SCRIPT_DIR}/build-android"
INSTALL_DIR="${SCRIPT_DIR}/android-libs"
# Android configuration
ANDROID_ABI="${ANDROID_ABI:-arm64-v8a}" # Default to arm64-v8a
ANDROID_PLATFORM="${ANDROID_PLATFORM:-android-29}" # Android 10+
BUILD_TYPE="${BUILD_TYPE:-Release}"
# Check if Android NDK is available
if [ -z "$ANDROID_NDK_ROOT" ] && [ -z "$ANDROID_NDK" ]; then
echo "❌ Error: ANDROID_NDK_ROOT or ANDROID_NDK environment variable not set"
echo "Please set one of these variables to point to your Android NDK installation"
echo "Example: export ANDROID_NDK_ROOT=/path/to/android-ndk-r25"
exit 1
fi
# Use ANDROID_NDK_ROOT if available, otherwise use ANDROID_NDK
NDK_PATH="${ANDROID_NDK_ROOT:-$ANDROID_NDK}"
if [ ! -d "$NDK_PATH" ]; then
echo "❌ Error: Android NDK not found at: $NDK_PATH"
exit 1
fi
echo "🚀 VavCore Android Build Configuration"
echo "========================================="
echo "Script Directory: $SCRIPT_DIR"
echo "Build Directory: $BUILD_DIR"
echo "Install Directory: $INSTALL_DIR"
echo "Android NDK: $NDK_PATH"
echo "Android ABI: $ANDROID_ABI"
echo "Android Platform: $ANDROID_PLATFORM"
echo "Build Type: $BUILD_TYPE"
echo "========================================="
# Clean previous build
if [ -d "$BUILD_DIR" ]; then
echo "🧹 Cleaning previous build..."
rm -rf "$BUILD_DIR"
fi
if [ -d "$INSTALL_DIR" ]; then
echo "🧹 Cleaning previous installation..."
rm -rf "$INSTALL_DIR"
fi
# Create build directory
echo "📁 Creating build directory..."
mkdir -p "$BUILD_DIR"
mkdir -p "$INSTALL_DIR"
# Configure with CMake
echo "⚙️ Configuring VavCore for Android..."
cd "$BUILD_DIR"
cmake \
-DCMAKE_TOOLCHAIN_FILE="$NDK_PATH/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI="$ANDROID_ABI" \
-DANDROID_PLATFORM="$ANDROID_PLATFORM" \
-DANDROID_NDK="$NDK_PATH" \
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
-DANDROID_STL=c++_shared \
-DANDROID_CPP_FEATURES="rtti exceptions" \
-DCMAKE_ANDROID_ARCH_ABI="$ANDROID_ABI" \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_ANDROID_API_MIN=29 \
"$SCRIPT_DIR"
if [ $? -ne 0 ]; then
echo "❌ CMake configuration failed"
exit 1
fi
# Build the library
echo "🔨 Building VavCore..."
cmake --build . --config "$BUILD_TYPE" -j$(nproc)
if [ $? -ne 0 ]; then
echo "❌ Build failed"
exit 1
fi
# Install the library
echo "📦 Installing VavCore..."
cmake --install . --config "$BUILD_TYPE"
if [ $? -ne 0 ]; then
echo "❌ Installation failed"
exit 1
fi
# Verify build output
echo "🔍 Verifying build output..."
LIB_FILE="$INSTALL_DIR/lib/libVavCore.so"
if [ -f "$LIB_FILE" ]; then
echo "✅ Build successful!"
echo "📄 Library info:"
file "$LIB_FILE"
ls -lh "$LIB_FILE"
echo ""
echo "📂 Installation contents:"
find "$INSTALL_DIR" -type f -exec ls -lh {} \;
echo ""
echo "🎯 VavCore Android library ready:"
echo " Library: $LIB_FILE"
echo " Headers: $INSTALL_DIR/include/"
else
echo "❌ Build verification failed - library not found"
exit 1
fi
# Optional: Copy to a common location for Godot integration
GODOT_LIBS_DIR="${SCRIPT_DIR}/../godot-libs"
if [ "$1" = "--copy-to-godot" ]; then
echo "📋 Copying to Godot integration directory..."
mkdir -p "$GODOT_LIBS_DIR/$ANDROID_ABI"
cp "$LIB_FILE" "$GODOT_LIBS_DIR/$ANDROID_ABI/"
cp -r "$INSTALL_DIR/include" "$GODOT_LIBS_DIR/"
echo "✅ Files copied to: $GODOT_LIBS_DIR"
fi
echo ""
echo "🎉 VavCore Android build completed successfully!"
echo " To use in Godot Android plugin:"
echo " 1. Copy libVavCore.so to your Godot Android plugin's libs/$ANDROID_ABI/ directory"
echo " 2. Copy include/ headers to your plugin's jni/ directory"
echo " 3. Add VavCore to your Android.mk or CMakeLists.txt"