#!/bin/zsh set -euo pipefail script_dir=${0:A:h} build_one() { local sdk=$1 local rid=$2 local sdk_path sdk_path=$(xcrun --sdk "$sdk" --show-sdk-path) local compiler compiler=$(xcrun --sdk "$sdk" --find clang) local build_dir="$script_dir/artifacts/native-build-$rid-cmake" cmake -S "$script_dir/../native/media" -B "$build_dir" \ -DCMAKE_SYSTEM_NAME=iOS \ -DCMAKE_C_COMPILER="$compiler" \ -DCMAKE_OSX_SYSROOT="$sdk_path" \ -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DCMAKE_OSX_DEPLOYMENT_TARGET=18.0 \ -DVOICECAT_DOTNET_RID="$rid" \ -DVOICECAT_BUNDLED_OPUS=ON cmake --build "$build_dir" --config Release --target voicecat_media --parallel 2 cmake --install "$build_dir" --config Release \ --component DotnetMedia --prefix "$script_dir/artifacts/native" local staged="$script_dir/artifacts/native/runtimes/$rid/native/libvoicecat_media.a" local opus="$build_dir/_deps/opus-build/libopus.a" local rnnoise="$build_dir/librnnoise.a" local combined="$staged.combined" xcrun --sdk "$sdk" libtool -static -o "$combined" "$build_dir/libvoicecat_media.a" "$opus" "$rnnoise" mv "$combined" "$staged" } build_one iphoneos ios-arm64 build_one iphonesimulator iossimulator-arm64