The tool used to be compiled by the macOS app build, or by the module itself on the booth with swiftc — and a catalog install got source only, which the unbundled 1.10.0 shell made every fresh install. Under the module guide's rule it now ships built: bin/ltc-capture-macos-arm64 and bin/ltc-capture-macos-x86_64, signed with the Developer ID (hardened runtime, audio-input entitlement), from native/ltc-capture.swift via native/build.sh. Nothing is built or looked for on the machine any more: captureTool() picks the binary for this platform, and where there is none — Windows, until a Windows implementation exists — timecode reports itself off in the tile and the health line while the rest of the module runs. The runtime build, its "building…" states and the device picker's build kick are gone with it. The old top-level binary is no longer gitignored (it is no longer written). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
49 lines
1.9 KiB
Bash
Executable File
49 lines
1.9 KiB
Bash
Executable File
#!/bin/zsh
|
|
# Build this module's native helper for every macOS architecture it ships —
|
|
# ../bin/ltc-capture-macos-arm64 and ../bin/ltc-capture-macos-x86_64 —
|
|
# from ltc-capture.swift beside this script. Run it on any Mac with the
|
|
# Xcode command line tools; both architectures cross-compile from either.
|
|
# The binaries are committed: a machine running ProdDash never builds
|
|
# anything (docs/MODULE-GUIDE.md, "Native helpers").
|
|
#
|
|
# Signed with a Developer ID Application certificate when one is installed
|
|
# (override with CODESIGN_IDENTITY) — hardened runtime plus the audio-input
|
|
# entitlement, which a helper that reads a microphone needs under the
|
|
# hardened runtime — and ad-hoc otherwise, which is fine on your own Macs.
|
|
#
|
|
# Windows is not built here: there is no Windows implementation of this
|
|
# tool yet, so on Windows the module reports timecode off.
|
|
set -e -u
|
|
cd "$(dirname "$0")"
|
|
|
|
NAME="ltc-capture"
|
|
DEPLOYMENT_TARGET="13.0"
|
|
|
|
command -v swiftc >/dev/null || {
|
|
echo "build.sh: swiftc not found — install the Xcode command line tools: xcode-select --install" >&2
|
|
exit 1
|
|
}
|
|
|
|
IDENTITY="${CODESIGN_IDENTITY:-}"
|
|
if [[ -z "$IDENTITY" ]]; then
|
|
IDENTITY=$(security find-identity -v -p codesigning 2>/dev/null \
|
|
| awk -F'"' '/Developer ID Application/ {print $2; exit}')
|
|
fi
|
|
if [[ -n "$IDENTITY" ]]; then
|
|
echo "signing as $IDENTITY"
|
|
SIGN=(--force --sign "$IDENTITY" --options runtime --timestamp)
|
|
else
|
|
echo "signing ad-hoc (no Developer ID installed — fine on your own Macs)"
|
|
SIGN=(--force --sign - --options runtime)
|
|
fi
|
|
|
|
mkdir -p ../bin
|
|
for ARCH in arm64 x86_64; do
|
|
OUT="../bin/$NAME-macos-$ARCH"
|
|
echo " compiling $OUT"
|
|
swiftc -O -whole-module-optimization -target "$ARCH-apple-macos$DEPLOYMENT_TARGET" -o "$OUT" "$NAME.swift"
|
|
codesign "${SIGN[@]}" --entitlements helper.entitlements "$OUT"
|
|
codesign --verify --strict "$OUT"
|
|
echo " built $OUT ($(du -h "$OUT" | awk '{print $1}'))"
|
|
done
|