#!/usr/bin/env bash # Rebuild frontend/loudness-wasm.js (base64-embedded WebAssembly loudness core) # from frontend/wasm/loudness.c. Uses clang (wasm32 + wasm-ld) when present, # else Zig's bundled clang: `uv pip install ziglang` into a venv and set # ZIG="/bin/python -m ziglang" (default: ~/.local/share/ytp-zig). set -euo pipefail cd "$(dirname "$0")/.." tmp=$(mktemp -d); trap 'rm -rf "$tmp"' EXIT FLAGS=(-O3 -nostdlib -fno-builtin -ffreestanding -Wl,--no-entry -Wl,--export=inbuf -Wl,--export=steps -Wl,--export=count -Wl,--export=setup -Wl,--export=feed -Wl,--export-memory -Wl,--initial-memory=4325376 -Wl,-z,stack-size=8192 -Wl,--strip-all) if command -v clang >/dev/null && clang --print-targets 2>/dev/null | grep -q wasm32; then clang --target=wasm32 "${FLAGS[@]}" frontend/wasm/loudness.c -o "$tmp/l.wasm" else ZIG=${ZIG:-"$HOME/.local/share/ytp-zig/bin/python -m ziglang"} $ZIG cc -target wasm32-freestanding "${FLAGS[@]}" frontend/wasm/loudness.c -o "$tmp/l.wasm" fi b64=$(base64 -w0 "$tmp/l.wasm") cat > frontend/loudness-wasm.js <