#!/usr/bin/env bash # Cross-compile the mtgodot GDExtension for iOS (iPhone 16 / arm64 device) and # stage every static archive the app needs to link into project/bin/ios/. # # This gets you a compiled .a — it does NOT do the Xcode project / signing / # on-device run. That's the rest of BACKLOG F1; see docs/PLATFORMS.md. # # Needs: full Xcode + iPhoneOS SDK. Submodules (recursive) must be present. set -euo pipefail cd "$(dirname "$0")" CONFIG="${1:-Debug}" # Debug | Release DEPLOY="${IOS_DEPLOYMENT_TARGET:-15.0}" BUILD_DIR="build-ios" JOBS="${JOBS:-$(sysctl -n hw.ncpu)}" TOOLCHAIN="extension/godot-cpp/cmake/ios.toolchain.cmake" case "$CONFIG" in Release) TPL="template_release" ;; *) TPL="template_debug" ;; esac if [ ! -f "$TOOLCHAIN" ]; then echo "godot-cpp submodule missing — git submodule update --init --recursive" >&2 exit 1 fi cmake -S . -B "$BUILD_DIR" -G "Unix Makefiles" \ -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ -DPLATFORM=OS64 \ -DDEPLOYMENT_TARGET="$DEPLOY" \ -DCMAKE_BUILD_TYPE="$CONFIG" \ -DMTGODOT_BUILD_TOOLS=OFF \ -DBUILD_TESTING=OFF cmake --build "$BUILD_DIR" --target mtgodot -j "$JOBS" # --- stage archives for the .gdextension [dependencies] block --- OUT="project/bin/ios" mkdir -p "$OUT" cp -f "$BUILD_DIR/bin/libgodot-cpp.ios.${TPL}.arm64.a" "$OUT/" cp -f "$BUILD_DIR/libgr2/liblibgr2.a" "$OUT/" cp -f "$BUILD_DIR/formats/libxr_formats.a" "$OUT/" cp -f "$BUILD_DIR/extension/libmtnet.a" "$OUT/" cp -f "$(find "$BUILD_DIR" -name libsodium.a | head -1)" "$OUT/" echo echo "iOS ($CONFIG) archives:" ls -la "project/bin/libmtgodot.ios.${TPL}.a" "$OUT"/*.a lipo -info "project/bin/libmtgodot.ios.${TPL}.a"