#!/bin/zsh
# Build Open CASCADE (OCCT) thanh thu vien tinh cho iOS — chi phan hinh hoc (Foundation + ModelingData + ModelingAlgorithms).
# Khong build Visualization / Draw / DataExchange: V2 tu ve bang Metal, khong can OpenGL / FreeType / Tcl.
#
#   Scripts/build-occt-ios.sh sim       # iPad Simulator (arm64)
#   Scripts/build-occt-ios.sh device    # iPad that (arm64)
#   Scripts/build-occt-ios.sh xcf       # gop cac lib da build thanh ThirdParty/OCCT.xcframework
#
# Ket qua: ThirdParty/occt-ios/<sim|device>/{inc,lib}; thu muc build tam bi xoa sau khi cai (dia may Mac it cho trong).
set -euo pipefail
GOC=${0:A:h:h}
SRC=$GOC/ThirdParty/occt-src
OUT=$GOC/ThirdParty/occt-ios
IOS_MIN=17.0
JOBS=${JOBS:-$(sysctl -n hw.ncpu)}

build_mot() {
  local ten=$1 sdk=$2
  local bld=$GOC/ThirdParty/occt-build-$ten dst=$OUT/$ten
  local sysroot; sysroot=$(xcrun --sdk "$sdk" --show-sdk-path)
  rm -rf "$bld"; mkdir -p "$bld"
  cmake -S "$SRC" -B "$bld" -G "Unix Makefiles" \
    -D CMAKE_SYSTEM_NAME=iOS \
    -D CMAKE_OSX_ARCHITECTURES=arm64 \
    -D CMAKE_OSX_DEPLOYMENT_TARGET=$IOS_MIN \
    -D CMAKE_OSX_SYSROOT="$sysroot" \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS=OFF \
    -D CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS=OFF \
    -D BUILD_LIBRARY_TYPE=Static \
    -D INSTALL_DIR="$dst" \
    -D INSTALL_DIR_INCLUDE=inc -D INSTALL_DIR_LIB=lib -D INSTALL_DIR_RESOURCE=src \
    -D BUILD_MODULE_FoundationClasses=ON \
    -D BUILD_MODULE_ModelingData=ON \
    -D BUILD_MODULE_ModelingAlgorithms=ON \
    -D BUILD_MODULE_Visualization=OFF \
    -D BUILD_MODULE_ApplicationFramework=OFF \
    -D BUILD_MODULE_DataExchange=OFF \
    -D BUILD_MODULE_DETools=OFF \
    -D BUILD_MODULE_Draw=OFF \
    -D BUILD_DOC_Overview=OFF \
    -D USE_FREETYPE=OFF -D USE_FREEIMAGE=OFF -D USE_RAPIDJSON=OFF -D USE_DRACO=OFF \
    -D USE_TK=OFF -D USE_TCL=OFF -D USE_OPENGL=OFF -D USE_GLES2=OFF -D USE_VTK=OFF -D USE_TBB=OFF \
    -D BUILD_USE_PCH=OFF
  cmake --build "$bld" --config Release -j "$JOBS"
  cmake --install "$bld" --config Release
  # gop moi TK*.a thanh MOT thu vien cho Xcode
  libtool -static -o "$dst/libOCCT.a" "$dst"/lib/libTK*.a 2>/dev/null
  rm -rf "$bld"
  echo "XONG $ten -> $dst/libOCCT.a ($(du -sh "$dst/libOCCT.a" | cut -f1))"
}

case ${1:-} in
  sim) build_mot sim iphonesimulator ;;
  device) build_mot device iphoneos ;;
  xcf)
    rm -rf "$GOC/ThirdParty/OCCT.xcframework"
    args=()
    for t in device sim; do [[ -f $OUT/$t/libOCCT.a ]] && args+=(-library "$OUT/$t/libOCCT.a"); done
    xcodebuild -create-xcframework "${args[@]}" -output "$GOC/ThirdParty/OCCT.xcframework"
    ;;
  *) echo "dung: $0 sim|device|xcf"; exit 1 ;;
esac
