diff options
| -rw-r--r-- | FETCH_DEPS.md | 10 | ||||
| -rwxr-xr-x | scripts/crunch_demo.sh | 40 |
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" |
