3.3 KiB
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:
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:
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.logFreeCAD/docs/qt-web-qmake-probe.logFreeCAD/docs/qt-core-xml-web-build-probe.logFreeCAD/docs/python-web-configure-probe.logFreeCAD/docs/pycxx-web-compile-probe.logFreeCAD/docs/freecad-web-core-configure.log