#!/usr/bin/env bash # Build the OCaml SX engine for browser use (WASM + JS fallback). # # Outputs: # _build/default/browser/sx_browser.bc.wasm.js WASM loader # _build/default/browser/sx_browser.bc.wasm.assets/ WASM modules # _build/default/browser/sx_browser.bc.js JS fallback # # Usage: # cd hosts/ocaml && ./browser/build.sh set -euo pipefail cd "$(dirname "$0")/.." eval $(opam env 2>/dev/null || true) echo "=== Building OCaml SX browser engine ===" # Build all targets: bytecode, JS, WASM dune build browser/sx_browser.bc.js browser/sx_browser.bc.wasm.js echo "" echo "--- Output sizes ---" echo -n "JS (unoptimized): "; ls -lh _build/default/browser/sx_browser.bc.js | awk '{print $5}' echo -n "WASM loader: "; ls -lh _build/default/browser/sx_browser.bc.wasm.js | awk '{print $5}' echo -n "WASM modules: "; du -sh _build/default/browser/sx_browser.bc.wasm.assets/*.wasm | awk '{s+=$1}END{print s"K"}' # Optimized JS build js_of_ocaml --opt=3 -o _build/default/browser/sx_browser.opt.js _build/default/browser/sx_browser.bc echo -n "JS (optimized): "; ls -lh _build/default/browser/sx_browser.opt.js | awk '{print $5}' echo "" echo "=== Build complete ===" echo "" echo "Test with:" echo " node hosts/ocaml/browser/run_tests_js.js # JS" echo " node --experimental-wasm-imported-strings hosts/ocaml/browser/run_tests_wasm.js # WASM"