#!/bin/sh set -eu mac=$(cd "$(dirname "$0")" && pwd) root=$(dirname "$mac") shared=$HOME/Library/Caches/byre/build sdk=iphoneos destination="generic/platform=iOS" link= if [ "${1:-}" = --simulator ]; then sdk=iphonesimulator destination="generic/platform=iOS 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" ' sh "$root" "$shared" "$sdk" "$destination" "$app" "$link" 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"