diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/crunch_demo.sh | 40 |
1 files changed, 31 insertions, 9 deletions
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" |
