# Environment variables set for all cargo invocations in this workspace. # CMAKE_POLICY_VERSION_MINIMUM is required for audiopus_sys's bundled # Opus CMake build to succeed on CMake 4.x (which removed compatibility # with cmake_minimum_required < 3.5). audiopus_sys v0.2.2 bundles # Opus 1.3.1 whose CMakeLists.txt uses a very old minimum version. # # IPHONEOS_DEPLOYMENT_TARGET=13.0 is required for iOS builds because # ___chkstk_darwin (the stack-probe symbol emitted by clang for functions # with large stack frames) only exists in the iOS 13.0+ runtime. The # pre-built libopus.a and any C code compiled by the cc crate reference # this symbol. Without this env var, the cc crate compiles C code # targeting iOS 10.0 (the Rust default), producing object files that # reference ___chkstk_darwin but can't resolve it against the 10.0 # runtime. Setting IPHONEOS_DEPLOYMENT_TARGET=13.0 ensures the cc crate # and CMake both target iOS 13.0+, where ___chkstk_darwin exists. # (DEC-003: minimum deployment target iOS 13.0) [env] CMAKE_POLICY_VERSION_MINIMUM = "3.5" IPHONEOS_DEPLOYMENT_TARGET = "13.0" # iOS target linker flags (DEC-003: minimum deployment target iOS 13.0). # # These rustflags pass -miphoneos-version-min=13.0 to the linker, ensuring # the final binary targets iOS 13.0+. This is defense-in-depth alongside # the IPHONEOS_DEPLOYMENT_TARGET env var above — the env var affects C # compilation (cc crate, CMake), while these rustflags affect the final # link step. # # NOTE: The canonical iOS build is done via tools/build-ios.sh, which # sets LIBOPUS_STATIC=1, LIBOPUS_NO_PKG=1, and LIBOPUS_LIB_DIR to # bypass audiopus_sys's CMake build entirely. [target.aarch64-apple-ios] rustflags = ["-C", "link-arg=-miphoneos-version-min=13.0"] [target.aarch64-apple-ios-sim] rustflags = ["-C", "link-arg=-miphonesimulator-version-min=13.0"] [target.x86_64-apple-ios] rustflags = ["-C", "link-arg=-miphonesimulator-version-min=13.0"]