feat(wasm-dom): Phase 7 — KiCad pcbnew builds and runs on the DOM port

Pipeline: lexer generation (pcbcommon) ordered before the embind
pre-compile — a fresh-build-tree chicken-and-egg any new volume would
hit (generated pcb_lexer.h was included via -I${KICAD_BUILD}/common
before anything generated it). DOM flavor outputs flow through the
host-mounted output/dom/. pcbnew e2e on DOM: editor loads fully (layer
manager, toolbars, WebGL viewport, registry metrics), draw-lines test
passes; the header pixel-reference assertion fails as expected (native
DOM styling vs univ pixels) — port-aware references pending.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Viktor Vaczi 2026-06-11 09:14:00 +02:00
commit dba03b237f
4 changed files with 17 additions and 3 deletions

View file

@ -396,6 +396,20 @@ emcmake cmake "${KICAD_DIR}" \
-DHAVE_STRCASECMP=1 \
-DHAVE_STRNCASECMP=1
# Step 7.05: Generated lexer headers (pcb_lexer.h & co) are emitted by
# make_lexer custom commands attached to the consuming library target. The
# embind compile below includes them via -I${KICAD_BUILD}/common, so on a
# FRESH build tree that library must build first (step 8 depends on it
# anyway — this only reorders work, it doesn't add any).
case "${APP_NAME}" in
pcbnew)
if [ ! -f "${KICAD_BUILD}/common/pcb_lexer.h" ]; then
log_info "Generating lexers (building pcbcommon before embind)..."
( cd "${KICAD_BUILD}" && emmake make -j${JOBS} pcbcommon )
fi
;;
esac
# Step 7.1: Compile Embind bindings (after CMake so config.h exists)
# Exposes KiCad objects to JavaScript for future Pyodide integration.
# When no app-specific source exists, build an empty object so the linker line