#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" out_dir="${1:-${repo_root}/build/ios-fake-ffi-xcframework}" target="${IOS_RUST_TARGET:-aarch64-apple-ios-sim}" lib_path="${repo_root}/target/${target}/release/libtele_ios_ffi.a" framework_name="${IOS_FFI_FRAMEWORK_NAME:-tele_ios_ffi}" if [[ -z "${DEVELOPER_DIR:-}" && -d /Applications/Xcode.app/Contents/Developer ]]; then export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer fi cd "${repo_root}" if ! rustup target list --installed | grep -qx "${target}"; then rustup target add "${target}" fi cargo build \ -p tele-ios-ffi \ --no-default-features \ --features standalone-fake \ --target "${target}" \ --release rm -rf "${out_dir}" mkdir -p "${out_dir}/Swift" "${out_dir}/Headers" cargo run -p uniffi-bindgen-swift -- "${lib_path}" "${out_dir}/Swift" --swift-sources cargo run -p uniffi-bindgen-swift -- "${lib_path}" "${out_dir}/Headers" --headers cargo run -p uniffi-bindgen-swift -- "${lib_path}" "${out_dir}/Headers" \ --modulemap \ --module-name tele_ios_ffiFFI \ --modulemap-filename module.modulemap xcodebuild -create-xcframework \ -library "${lib_path}" \ -headers "${out_dir}/Headers" \ -output "${out_dir}/${framework_name}.xcframework" printf 'Generated fake-only iOS FFI XCFramework in %s\n' "${out_dir}"