#!/bin/bash
# Xcode build phase script - Add this as a "Run Script" phase in Xcode
# Ensure this runs BEFORE the compilation phase

set -e

# Get the project directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -z "$SCRIPT_DIR" ] || [ ! -d "$SCRIPT_DIR" ]; then
    # If BASH_SOURCE is not available, use SRCROOT
    SCRIPT_DIR="${SRCROOT}/ios"
fi

echo "=== dala Rust Build Phase ==="
echo "Project dir: $SCRIPT_DIR"

# Check if Rust is installed
if ! command -v cargo &> /dev/null; then
    echo "Error: Rust is not installed. Please install from https://rustup.rs"
    exit 1
fi

# Check if targets are installed
TARGETS=("aarch64-apple-ios" "aarch64-apple-ios-sim" "x86_64-apple-ios")
for target in "${TARGETS[@]}"; do
    if ! rustup target list --installed | grep -q "$target"; then
        echo "Installing target: $target"
        rustup target add "$target"
    fi
done

# Build Rust libraries
echo "Building Rust libraries..."
cd "$SCRIPT_DIR/rust"
./build_ios.sh

# Copy libraries to expected locations
echo "Copying libraries..."
mkdir -p "$SCRIPT_DIR/Frameworks"

# Copy device library (arm64)
if [ -f "$SCRIPT_DIR/rust/target/aarch64-apple-ios/release/libdala_beam_ios.a" ]; then
    cp "$SCRIPT_DIR/rust/target/aarch64-apple-ios/release/libdala_beam_ios.a" \
       "$SCRIPT_DIR/Frameworks/libdala_beam_ios_device.a"
    echo "✓ Copied device library"
else
    echo "✗ Device library not found"
    exit 1
fi

# Copy simulator libraries and create universal library
if [ -f "$SCRIPT_DIR/rust/target/aarch64-apple-ios-sim/release/libdala_beam_ios.a" ] && \
   [ -f "$SCRIPT_DIR/rust/target/x86_64-apple-ios/release/libdala_beam_ios.a" ]; then
    lipo -create \
        "$SCRIPT_DIR/rust/target/aarch64-apple-ios-sim/release/libdala_beam_ios.a" \
        "$SCRIPT_DIR/rust/target/x86_64-apple-ios/release/libdala_beam_ios.a" \
        -output "$SCRIPT_DIR/Frameworks/libdala_beam_ios_simulator.a"
    echo "✓ Created universal simulator library"
else
    echo "✗ Simulator libraries not found"
    exit 1
fi

# Copy driver table library
if [ -f "$SCRIPT_DIR/rust/target/aarch64-apple-ios/release/libdriver_tab_ios.a" ]; then
    cp "$SCRIPT_DIR/rust/target/aarch64-apple-ios/release/libdriver_tab_ios.a" \
       "$SCRIPT_DIR/Frameworks/libdriver_tab_ios_device.a"
    echo "✓ Copied driver table device library"
else
    echo "✗ Driver table device library not found"
    exit 1
fi

echo "=== Rust build complete ==="
echo "Libraries are in: $SCRIPT_DIR/Frameworks/"
