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

@ -183,7 +183,7 @@ compile_app() {
local out_dir="output"
local kicad_build="kicad-${app}"
if [[ "${WX_PORT:-}" == "dom" ]]; then
out_dir="output-dom"
out_dir="output/dom"
kicad_build="kicad-${app}-dom"
fi

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

View file

@ -15,7 +15,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# WX_PORT=dom into output-dom/) from tests/apps-dom/kicad.
if [ "${WX_PORT:-}" = "dom" ]; then
KICAD_TEST="$PROJECT_ROOT/tests/apps-dom/kicad"
OUTPUT_DIR="$PROJECT_ROOT/output-dom"
OUTPUT_DIR="$PROJECT_ROOT/output/dom"
KICAD_BUILD_SUFFIX="-dom"
else
KICAD_TEST="$PROJECT_ROOT/tests/apps/kicad"

@ -1 +1 @@
Subproject commit 34aa940aa7c1f9d82d03ec5fe50df16374a32670
Subproject commit 7979b030a38b28deb9adfe3178e391a03dcc0a4a