summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FETCH_DEPS.md14
-rw-r--r--HOWTO.md9
-rwxr-xr-xscripts/crunch_demo.sh23
3 files changed, 46 insertions, 0 deletions
diff --git a/FETCH_DEPS.md b/FETCH_DEPS.md
index 24cbf08..c8f315f 100644
--- a/FETCH_DEPS.md
+++ b/FETCH_DEPS.md
@@ -56,3 +56,17 @@ Use one of the provided scripts:
- scripts/project_init.bat
These scripts will download `glfw3webgpu.h` and `glfw3webgpu.c` into `third_party/glfw3webgpu`.
+
+## UPX
+
+Executable packer for binary compression.
+
+### Installation
+
+**macOS:**
+```bash
+brew install upx
+```
+
+**Other platforms:**
+Download the appropriate release from https://github.com/upx/upx/releases and ensure the `upx` executable is in your PATH.
diff --git a/HOWTO.md b/HOWTO.md
index 60a29fa..5716524 100644
--- a/HOWTO.md
+++ b/HOWTO.md
@@ -40,6 +40,15 @@ cmake --build build
```
In this mode, the demo will always start in fullscreen.
+### Packed Build (Binary Crunching)
+
+To build the stripped binary and compress it using `UPX`, run the provided script:
+
+```bash
+./scripts/crunch_demo.sh
+```
+This requires `UPX` to be installed.
+
## Testing
**Commit Policy**: Always run tests before committing. Refer to `CONTRIBUTING.md` for details.
diff --git a/scripts/crunch_demo.sh b/scripts/crunch_demo.sh
new file mode 100755
index 0000000..333faa9
--- /dev/null
+++ b/scripts/crunch_demo.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Build a size-optimized binary and compress it with UPX.
+
+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"
+
+echo "Compressing with UPX..."
+upx --best --lzma -o "$OUT_BIN" "$SRC_BIN"
+
+echo "Done."
+ls -lh "$SRC_BIN" "$OUT_BIN"