#!/bin/sh set -eu mac=$(cd "$(dirname "$0")" && pwd) root=$(dirname "$mac") shared=$HOME/Library/Caches/byre/build sdk=iphoneos destination="generic/platform=iOS" triple=arm64-apple-ios27.0 link= if [ "${1:-}" = --simulator ]; then sdk=iphonesimulator destination="generic/platform=iOS Simulator" triple=arm64-apple-ios27.0-simulator link="-Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker $shared/mac/phone/byre.entitlements" fi build=$mac/.build/phone/$sdk app=$build/Byre.app svg=$mac/icon.svg mkdir -p "$shared" "$build" lockf -k "$shared.lock" sh -ec ' rsync -rlc --delete --exclude /mac/.build --exclude /mac/Frameworks --exclude /hands/.build "$1/mac" "$1/api" "$1/hands" "$2/" sh "$2/mac/tailscalekit.sh" "$2" cd "$2/mac" xcodebuild build -quiet -scheme Byre -destination "$4" -configuration Release -derivedDataPath "$2/phone" -skipPackagePluginValidation -skipMacroValidation CODE_SIGNING_ALLOWED=NO "OTHER_LDFLAGS=\$(inherited) $6" products=$2/phone/Build/Products/Release-$3 rm -rf "$5" mkdir -p "$5/Frameworks" cp "$products/Byre" "$5/Byre" ditto "$products/TailscaleKit.framework" "$5/Frameworks/TailscaleKit.framework" objects=$2/phone/Build/Intermediates.noindex/Byre.build/Release-$3/Byre-p.build echo "$objects/Objects-normal/arm64/Byre-primary.swiftconstvalues" > "$objects/Byre.SwiftConstValuesFileList" xcrun appintentsmetadataprocessor --output "$5" --toolchain-dir "$(dirname "$(dirname "$(dirname "$(xcrun --find swiftc)")")")" --module-name Byre --sdk-root "$(xcrun --sdk "$3" --show-sdk-path)" --xcode-version "$(xcodebuild -version | awk "NR == 2 { print \$3 }")" --platform-family iOS --deployment-target 27.0 --target-triple "$7" --source-file-list "$objects/Objects-normal/arm64/Byre.SwiftFileList" --swift-const-vals-list "$objects/Byre.SwiftConstValuesFileList" --metadata-file-list "$objects/Byre.DependencyMetadataFileList" --static-metadata-file-list "$objects/Byre.DependencyStaticMetadataFileList" --binary-file "$5/Byre" --no-app-shortcuts-localization ' sh "$root" "$shared" "$sdk" "$destination" "$app" "$link" "$triple" assets=$build/Assets.xcassets/AppIcon.appiconset rm -rf "$build/Assets.xcassets" mkdir -p "$assets" rsvg-convert --width 1024 --height 1024 --output "$assets/icon.png" "$svg" cat > "$assets/Contents.json" <$(if [ "$sdk" = iphoneos ]; then echo iPhoneOS; else echo iPhoneSimulator; fi)" "$plist" plutil -insert DTPlatformName -string "$sdk" "$plist" plutil -insert DTPlatformVersion -string "$platform" "$plist" plutil -insert DTSDKName -string "$sdk$platform" "$plist" plutil -insert DTSDKBuild -string "$sdkbuild" "$plist" plutil -insert DTPlatformBuild -string "$sdkbuild" "$plist" plutil -insert DTXcode -string "$(xcodebuild -version | awk 'NR == 1 { split($2, v, "."); printf "%d%d%d", v[1], v[2], v[3] }')" "$plist" plutil -insert DTXcodeBuild -string "$(xcodebuild -version | awk 'NR == 2 { print $3 }')" "$plist" plutil -insert DTCompiler -string com.apple.compilers.llvm.clang.1_0 "$plist" mkdir -p "$app/fonts" cp "$mac"/fonts/*.woff2 "$app/fonts/" codesign --force --sign - "$app/Frameworks/TailscaleKit.framework" if [ "$sdk" = iphonesimulator ]; then codesign --force --sign - "$app" echo "$app" exit 0 fi codesign --force --sign - --entitlements "$mac/phone/byre.entitlements" "$app" archive=$build/Byre.xcarchive rm -rf "$archive" mkdir -p "$archive/Products/Applications" ditto "$app" "$archive/Products/Applications/Byre.app" cat > "$archive/Info.plist" < ApplicationProperties ApplicationPath Applications/Byre.app Architectures arm64 CFBundleIdentifier $(plutil -extract CFBundleIdentifier raw "$plist") CFBundleShortVersionString $(plutil -extract CFBundleShortVersionString raw "$plist") CFBundleVersion $(plutil -extract CFBundleVersion raw "$plist") Team XDZ54KDM4W ArchiveVersion 2 CreationDate $(date -u +%Y-%m-%dT%H:%M:%SZ) Name Byre SchemeName Byre EOF echo "$archive"