#!/usr/bin/env bash
# Build pdftex.wasm + bibtex.wasm from the official TeX Live source (GitHub mirror of tug.org svn).
# Needs Docker. Output: public/engine/{pdftex,bibtex}.{mjs,wasm}
#   scripts/build-wasm.sh            # build (cached in docker volume latex-engine-wasm-build)
#   CLEAN=1 scripts/build-wasm.sh    # from scratch
set -euo pipefail
HERE="$(cd "$(dirname "$0")/.." && pwd)"
TL_VER="2026.1"                        # texlive-source tag tags/texlive-$TL_VER
EMSDK_VER="5.0.7"
case "$(uname -m)" in arm64|aarch64) EMSDK_IMAGE="emscripten/emsdk:${EMSDK_VER}-arm64" ;; *) EMSDK_IMAGE="emscripten/emsdk:${EMSDK_VER}" ;; esac
CACHE="$HERE/.texlive-cache"
SRC_TGZ="$CACHE/src/texlive-source-${TL_VER}.tar.gz"
OUT="$CACHE/wasm-out"
mkdir -p "$CACHE/src" "$OUT" "$HERE/public/engine"

if [ ! -f "$SRC_TGZ" ]; then
  curl -fL -o "$SRC_TGZ.part" "https://codeload.github.com/TeX-Live/texlive-source/tar.gz/refs/heads/tags/texlive-${TL_VER}"
  mv "$SRC_TGZ.part" "$SRC_TGZ"
fi
if [ "${CLEAN:-0}" = 1 ]; then docker volume rm -f latex-engine-wasm-build >/dev/null; fi

docker run --rm \
  -e TL_VER="$TL_VER" -e RECONFIGURE="${RECONFIGURE:-0}" \
  -v latex-engine-wasm-build:/build \
  -v "$CACHE/src:/src:ro" \
  -v "$OUT:/out" \
  -v "$HERE/scripts/wasm:/scripts:ro" \
  "$EMSDK_IMAGE" bash /scripts/build-in-container.sh

cp "$OUT"/pdftex.mjs "$OUT"/pdftex.wasm "$OUT"/bibtex.mjs "$OUT"/bibtex.wasm "$OUT"/versions.txt "$HERE/public/engine/"
ls -la "$HERE/public/engine"
