From 3da3b187ecb391403620f21a027c244e378ac933 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 20 May 2026 17:10:56 -0400 Subject: [PATCH] =?UTF-8?q?build(display):=20universal=20binary=20?= =?UTF-8?q?=E2=80=94=20compile=20x86=5F64=20+=20arm64=20and=20lipo=20into?= =?UTF-8?q?=20fat=20binary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiles both arches separately then links with lipo -create. Prevents silent failure when a binary built on Apple Silicon is deployed to Intel venue Macs (MacBook Air 2018 fleet). --- README.md | 3 +++ scripts/build-display-control.sh | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a0d5597..d764f27 100644 --- a/README.md +++ b/README.md @@ -363,6 +363,9 @@ xcode-select --install # From the repo root: ./scripts/build-display-control.sh +# The script compiles x86_64 and arm64 separately then links a universal binary. +# Expected output at the end: x86_64 arm64 + # Test with a second display connected: ./resources/bin/display_control status ./resources/bin/display_control extend diff --git a/scripts/build-display-control.sh b/scripts/build-display-control.sh index 2c04fd8..90c28e5 100755 --- a/scripts/build-display-control.sh +++ b/scripts/build-display-control.sh @@ -24,13 +24,26 @@ fi mkdir -p "$OUT_DIR" -echo "Building display_control..." -clang -framework Cocoa -framework Carbon \ - -o "$OUT_BIN" "$SRC" +TMP_X86="$OUT_DIR/display_control_x86_64" +TMP_ARM="$OUT_DIR/display_control_arm64" + +echo "Building display_control (x86_64)..." +clang -arch x86_64 -framework Cocoa -framework Carbon \ + -o "$TMP_X86" "$SRC" + +echo "Building display_control (arm64)..." +clang -arch arm64 -framework Cocoa -framework Carbon \ + -o "$TMP_ARM" "$SRC" + +echo "Linking universal binary..." +lipo -create -output "$OUT_BIN" "$TMP_X86" "$TMP_ARM" +rm "$TMP_X86" "$TMP_ARM" chmod +x "$OUT_BIN" -echo "Built: $OUT_BIN" +echo "" +echo "Built universal binary: $OUT_BIN" +lipo -archs "$OUT_BIN" echo "" echo "Test it:" echo " $OUT_BIN status"