Files
video-v1/vav2/platforms/android/vavcore/build.sh
2025-09-27 14:41:13 +09:00

134 lines
3.7 KiB
Bash

#!/bin/bash
# VavCore Android Platform Build Script
# Builds VavCore library specifically for Android platform integration
set -e # Exit on any error
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="${SCRIPT_DIR}/build"
OUTPUT_DIR="${SCRIPT_DIR}/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 Platform Build"
echo "=================================="
echo "Script Directory: $SCRIPT_DIR"
echo "Build Directory: $BUILD_DIR"
echo "Output Directory: $OUTPUT_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 "$OUTPUT_DIR" ]; then
echo "🧹 Cleaning previous output..."
rm -rf "$OUTPUT_DIR"
fi
# Create directories
echo "📁 Creating directories..."
mkdir -p "$BUILD_DIR"
mkdir -p "$OUTPUT_DIR/$ANDROID_ABI"
# 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" \
-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
# Copy output to platform-specific directory
echo "📦 Copying build output..."
if [ -f "libVavCore.so" ]; then
cp "libVavCore.so" "$OUTPUT_DIR/$ANDROID_ABI/"
echo "✅ Library copied to: $OUTPUT_DIR/$ANDROID_ABI/libVavCore.so"
else
echo "❌ Build output not found"
exit 1
fi
# Copy headers for Godot plugin integration
HEADERS_DIR="$OUTPUT_DIR/include"
VAVCORE_HEADERS="../../../VavCore/include"
if [ -d "$VAVCORE_HEADERS" ]; then
echo "📄 Copying headers..."
cp -r "$VAVCORE_HEADERS" "$OUTPUT_DIR/"
echo "✅ Headers copied to: $HEADERS_DIR"
fi
# Verify build output
echo "🔍 Verifying build output..."
LIB_FILE="$OUTPUT_DIR/$ANDROID_ABI/libVavCore.so"
if [ -f "$LIB_FILE" ]; then
echo "✅ Build successful!"
echo "📄 Library info:"
file "$LIB_FILE"
ls -lh "$LIB_FILE"
echo ""
echo "📂 Platform output structure:"
find "$OUTPUT_DIR" -type f -exec ls -lh {} \;
else
echo "❌ Build verification failed - library not found"
exit 1
fi
echo ""
echo "🎉 VavCore Android platform build completed!"
echo " 📁 Output: $OUTPUT_DIR"
echo " 📱 Ready for Godot Android plugin integration"
echo " 🔗 Use this in platforms/android/godot-plugin/"