#!/bin/zsh set -euo pipefail configuration="${1:?configuration is required}" sdk="${2:?sdk is required}" architecture="${3:?architecture is required}" output="${4:?output directory is required}" script_dir="${0:A:h}" project="$script_dir/../../../native/apple/broadcast/VoiceCatBroadcast.xcodeproj" mkdir -p "$output" signing=() # Both keys must always be set. The extension manifest expands these placeholders, and an # empty CURRENT_PROJECT_VERSION drops CFBundleVersion, which installd rejects. The defaults # match ApplicationDisplayVersion/ApplicationVersion in VoiceCat.iOS.csproj so that the host # and extension versions agree when no release build number is supplied. versioning=( MARKETING_VERSION="${VOICECAT_DISPLAY_VERSION:-0.0.1}" CURRENT_PROJECT_VERSION="${VOICECAT_BUILD_NUMBER:-1}" ) if [[ "$sdk" == "iphonesimulator" ]]; then signing+=(CODE_SIGNING_ALLOWED=NO) elif [[ -n "${VOICECAT_BROADCAST_CODESIGN_KEY:-}" && -n "${VOICECAT_BROADCAST_CODESIGN_PROVISION:-}" ]]; then signing+=( DEVELOPMENT_TEAM="${VOICECAT_DEVELOPMENT_TEAM:?VOICECAT_DEVELOPMENT_TEAM is required for distribution signing}" CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY="$VOICECAT_BROADCAST_CODESIGN_KEY" PROVISIONING_PROFILE_SPECIFIER="$VOICECAT_BROADCAST_CODESIGN_PROVISION" ) elif [[ -n "${VOICECAT_DEVELOPMENT_TEAM:-}" ]]; then signing+=(DEVELOPMENT_TEAM="$VOICECAT_DEVELOPMENT_TEAM" CODE_SIGN_STYLE=Automatic) if [[ "${VOICECAT_ALLOW_PROVISIONING_UPDATES:-}" == "1" ]]; then signing=(-allowProvisioningUpdates "${signing[@]}") fi fi xcodebuild \ -project "$project" \ -scheme VoiceCatBroadcast \ -configuration "$configuration" \ -sdk "$sdk" \ -arch "$architecture" \ -derivedDataPath "$output/derived" \ CONFIGURATION_BUILD_DIR="$output" \ "${versioning[@]}" \ "${signing[@]}" \ build xcent=$(find "$output/derived" -name 'VoiceCatBroadcast.appex.xcent' -print -quit) if [[ -f "$xcent" ]]; then cp "$xcent" "$output/VoiceCatBroadcast.xcent" else cp "$script_dir/../../../native/apple/broadcast/VoiceCatBroadcast.entitlements" "$output/VoiceCatBroadcast.xcent" fi