# FreeCAD Web Dependency Boundary ## Scope This report records the `FW-P0-005` probes against the locked dependency sources and the current Emscripten toolchain. A successful dependency probe does not mean that the FreeCADBase or FreeCADApp targets are WebAssembly complete. | Dependency | Locked source | Probe result | Evidence | |---|---|---|---| | QtCore / QtXml | Qt 5.15.13 | Configure and wasm static archive build passed | `build-web/qt-probe/lib/libQt5Core.a`, `build-web/qt-probe/lib/libQt5Xml.a` | | CPython | Python 3.12.3 | Cross configure passed for `wasm32-unknown-emscripten` | `build-web/python-probe/Makefile`, `build-web/python-probe/pyconfig.h` | | PyCXX | PyCXX 7.1.11 | Four C/C++ bridge sources compiled to wasm objects | `build-web/pycxx-probe/*.o` | ## Reproduction Qt was configured with the checked-in `wasm-emscripten` mkspec and then only the Core/XML targets were built: ```text FreeCAD/FreeCADBaseLib/sources/src/Qt-5.15.13/qtbase/configure \ -xplatform wasm-emscripten -opensource -confirm-license -release -static \ -no-feature-thread -nomake examples -nomake tests \ -prefix FreeCAD/freecad-source/build-web/qt-install make -C FreeCAD/freecad-source/build-web/qt-probe/src --jobs=8 sub-xml ``` The configure summary reports that Qt 5.15.13 recommends Emscripten 1.39.8, while this workspace uses Emscripten 3.1.6. The mismatch is a compatibility warning, not a hidden exact-compatibility claim. `file` reports representative objects from both archives as WebAssembly MVP modules. CPython was configured using its checked-in wasm build instructions: ```text CONFIG_SITE=FreeCAD/FreeCADBaseLib/sources/src/Python-3.12.3/Tools/wasm/config.site-wasm32-emscripten \ emconfigure FreeCAD/FreeCADBaseLib/sources/src/Python-3.12.3/configure -C \ --host=wasm32-unknown-emscripten --build=x86_64-pc-linux-gnu \ --with-emscripten-target=browser --with-build-python=/usr/bin/python3.12 \ --without-ensurepip ``` The generated Makefile records `MACHDEP=emscripten`, `SOABI=cpython-312-wasm32-emscripten`, and `PY_ENABLE_SHARED=0`. The CPython runtime itself has not yet been compiled; a native build-Python and a later runtime build remain required. PyCXX 7.1.11 sources `cxx_extensions.cxx`, `cxxsupport.cxx`, `IndirectPythonInterface.cxx`, and `cxx_exceptions.cxx` compile cleanly with `em++` against the generated CPython headers. `file` confirms all four objects are WebAssembly modules. ## Blocking boundary The current FreeCAD CMake still calls `find_package(Python3 COMPONENTS Interpreter Development REQUIRED)` and `find_package(Qt5 ... REQUIRED)` for the FreeCADBase/FreeCADApp graph. The Web configuration currently has no installed Emscripten Python development package or Qt CMake package wired into those lookups. The first full-core configure is also stopped earlier by the missing `yaml-cpp` CMake package, as recorded in `freecad-web-core-configure.log`. Consequently, this task establishes usable Qt/Python/PyCXX source boundaries and evidence, but does not promote FreeCADBase, FreeCADApp, Document, or Python integration to `exact`. ## Logs - `FreeCAD/docs/qt-web-configure-probe.log` - `FreeCAD/docs/qt-web-qmake-probe.log` - `FreeCAD/docs/qt-core-xml-web-build-probe.log` - `FreeCAD/docs/python-web-configure-probe.log` - `FreeCAD/docs/pycxx-web-compile-probe.log` - `FreeCAD/docs/freecad-web-core-configure.log`