summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FETCH_DEPS.md10
-rwxr-xr-xscripts/crunch_demo.sh40
2 files changed, 34 insertions, 16 deletions
diff --git a/FETCH_DEPS.md b/FETCH_DEPS.md
index c8f315f..ce62db2 100644
--- a/FETCH_DEPS.md
+++ b/FETCH_DEPS.md
@@ -59,14 +59,10 @@ These scripts will download `glfw3webgpu.h` and `glfw3webgpu.c` into `third_part
## UPX
-Executable packer for binary compression.
+Executable packer for binary compression (Linux/Windows only).
+On macOS, the build script defaults to `strip` and `gzexe` due to UPX compatibility issues.
### Installation
-**macOS:**
-```bash
-brew install upx
-```
-
-**Other platforms:**
+**Linux/Windows:**
Download the appropriate release from https://github.com/upx/upx/releases and ensure the `upx` executable is in your PATH.
diff --git a/scripts/crunch_demo.sh b/scripts/crunch_demo.sh
index 333faa9..d9c77a4 100755
--- a/scripts/crunch_demo.sh
+++ b/scripts/crunch_demo.sh
@@ -1,23 +1,45 @@
#!/bin/sh
-# Build a size-optimized binary and compress it with UPX.
+# Build a size-optimized binary and compress it.
set -e
-if ! command -v upx >/dev/null 2>&1; then
- echo "Error: upx is not installed or not in PATH."
- echo "Please install it using 'brew install upx' or from https://github.com/upx/upx"
- exit 1
-fi
-
echo "Building stripped binary..."
cmake -S . -B build_strip -DDEMO_STRIP_ALL=ON
cmake --build build_strip
SRC_BIN="build_strip/demo64k"
OUT_BIN="build_strip/demo64k_packed"
+OS_NAME=$(uname -s)
+
+if [ "$OS_NAME" = "Darwin" ]; then
+ echo "macOS detected. Using 'strip' and 'gzexe' (UPX is unreliable on macOS)."
+
+ # Copy original to output to work on it
+ cp "$SRC_BIN" "$OUT_BIN"
+
+ echo "Stripping symbols..."
+ strip -u -r "$OUT_BIN"
+
+ if command -v gzexe >/dev/null 2>&1; then
+ echo "Compressing with gzexe..."
+ gzexe "$OUT_BIN"
+ # gzexe creates a backup file ending in ~, remove it
+ rm -f "$OUT_BIN~"
+ else
+ echo "Warning: gzexe not found, skipping compression."
+ fi
-echo "Compressing with UPX..."
-upx --best --lzma -o "$OUT_BIN" "$SRC_BIN"
+else
+ # Linux / other
+ if ! command -v upx >/dev/null 2>&1; then
+ echo "Error: upx is not installed or not in PATH."
+ echo "Please install it using your package manager."
+ exit 1
+ fi
+
+ echo "Compressing with UPX..."
+ upx --best --lzma -o "$OUT_BIN" "$SRC_BIN"
+fi
echo "Done."
ls -lh "$SRC_BIN" "$OUT_BIN"