56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
target="${IOS_RUST_TARGET:-aarch64-apple-ios-sim}"
|
|
|
|
case "${target}" in
|
|
aarch64-apple-ios)
|
|
tdlib_platform_dir="${TDLIB_IOS_PLATFORM_DIR:-iphoneos}"
|
|
;;
|
|
aarch64-apple-ios-sim | x86_64-apple-ios)
|
|
tdlib_platform_dir="${TDLIB_IOS_PLATFORM_DIR:-iphonesimulator}"
|
|
;;
|
|
*)
|
|
printf 'Unsupported iOS Rust target: %s\n' "${target}" >&2
|
|
printf 'Supported targets: aarch64-apple-ios, aarch64-apple-ios-sim, x86_64-apple-ios\n' >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
tdlib_root="${LOCAL_TDLIB_PATH:-${repo_root}/.build/tdlib-ios/${tdlib_platform_dir}}"
|
|
tdlib_version="${TDLIB_VERSION:-1.8.29}"
|
|
|
|
if [[ -z "${DEVELOPER_DIR:-}" && -d /Applications/Xcode.app/Contents/Developer ]]; then
|
|
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
|
|
fi
|
|
|
|
if [[ ! -d "${tdlib_root}/include" ]]; then
|
|
printf 'TDLib include directory not found: %s\n' "${tdlib_root}/include" >&2
|
|
printf 'Run scripts/build-tdlib-ios.sh first or set LOCAL_TDLIB_PATH to a TDLib install root.\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "${tdlib_root}/lib/libtdjson.${tdlib_version}.dylib" ]]; then
|
|
printf 'TDLib dylib not found: %s\n' "${tdlib_root}/lib/libtdjson.${tdlib_version}.dylib" >&2
|
|
printf 'tdlib-rs local-tdlib expects the versioned dylib name on macOS-hosted builds.\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
cd "${repo_root}"
|
|
|
|
if ! rustup target list --installed | grep -qx "${target}"; then
|
|
rustup target add "${target}"
|
|
fi
|
|
|
|
export LOCAL_TDLIB_PATH="${tdlib_root}"
|
|
|
|
cargo build \
|
|
-p tele-ios-ffi \
|
|
--no-default-features \
|
|
--features core-session-local-tdlib \
|
|
--target "${target}" \
|
|
--release
|
|
|
|
printf 'Built tele-ios-ffi for %s with LOCAL_TDLIB_PATH=%s\n' "${target}" "${LOCAL_TDLIB_PATH}"
|