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"