Files
telegram-tui/scripts/build-ios-fake-ffi-xcframework.sh
2026-05-20 23:50:53 +03:00

43 lines
1.3 KiB
Bash
Executable File

#!/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}"