2026-02-17 00:15:08 +00:00
|
|
|
.PHONY: wasm test clean
|
|
|
|
|
|
|
|
|
|
WASM_OUT := dist/go-html.wasm
|
2026-02-17 00:17:39 +00:00
|
|
|
# Raw size limit: 3MB (Go WASM has ~2MB runtime floor)
|
|
|
|
|
WASM_RAW_LIMIT := 3145728
|
|
|
|
|
# Gzip transfer size limit: 1MB (what users actually download)
|
|
|
|
|
WASM_GZ_LIMIT := 1048576
|
2026-02-17 00:15:08 +00:00
|
|
|
|
|
|
|
|
test:
|
|
|
|
|
go test ./...
|
|
|
|
|
|
|
|
|
|
wasm: $(WASM_OUT)
|
|
|
|
|
|
2026-02-17 00:21:24 +00:00
|
|
|
$(WASM_OUT): $(shell find . -name '*.go' -not -path './dist/*')
|
2026-02-17 00:15:08 +00:00
|
|
|
@mkdir -p dist
|
|
|
|
|
GOOS=js GOARCH=wasm go build -ldflags="-s -w" -o $(WASM_OUT) ./cmd/wasm/
|
2026-02-17 00:17:39 +00:00
|
|
|
@RAW=$$(stat -c%s "$(WASM_OUT)" 2>/dev/null || stat -f%z "$(WASM_OUT)"); \
|
|
|
|
|
GZ=$$(gzip -c "$(WASM_OUT)" | wc -c); \
|
|
|
|
|
echo "WASM size: $${RAW} bytes raw, $${GZ} bytes gzip"; \
|
|
|
|
|
if [ "$$GZ" -gt $(WASM_GZ_LIMIT) ]; then \
|
|
|
|
|
echo "FAIL: gzip transfer size exceeds 1MB limit ($${GZ} bytes)"; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
elif [ "$$RAW" -gt $(WASM_RAW_LIMIT) ]; then \
|
|
|
|
|
echo "WARNING: raw binary exceeds 3MB ($${RAW} bytes) — check imports"; \
|
2026-02-17 00:15:08 +00:00
|
|
|
else \
|
2026-02-17 00:17:39 +00:00
|
|
|
echo "OK: gzip $${GZ} bytes (limit 1MB), raw $${RAW} bytes (limit 3MB)"; \
|
2026-02-17 00:15:08 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
rm -rf dist/
|