mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-09-04 08:33:55 +02:00
The pieces that make Magic actually buildable as a WASM library.
* magic/magicWasm.c — new headless entry point exporting four
functions used by the JS wrapper:
- magic_wasm_init() idempotent initialisation
- magic_wasm_run_command(s) dispatch one Magic command
- magic_wasm_source_file(p) execute a script from the VFS
- magic_wasm_update() drive a display-update cycle
Sets CAD_ROOT=/ if unset, so embedded technology files under
/magic/sys/ resolve correctly. Centers the command point inside
GrScreenRect so commands route to the layout window client
rather than the border/window-management client.
* utils/main.c, utils/main.h — split magicMain() into magicMainInit()
+ the dispatch loop. magicMainInit is idempotent (a static flag
guards against re-initialisation) so JS callers can call any of
the four wasm entry points first without sequencing.
* magic/Makefile — adds the WASM link target, gated by MAKE_WASM=1
set from toolchains/emscripten/defs.mak. Conditionally compiles
magicWasm.c into the main binary, links to magic.js and runs
post-build.sh on the result.
* toolchains/emscripten/defs.mak — Emscripten linker flags (WASM=1,
MODULARIZE, EXPORT_ES6, ALLOW_MEMORY_GROWTH, INITIAL_MEMORY=32M,
STACK_SIZE=5M), the four EXPORTED_FUNCTIONS, and the embed-file
bindings for the technology files under /magic/sys/.
* toolchains/emscripten/post-build.sh — patches Emscripten's ESM
output so it works in pure Node.js ESM: aliases require()
through createRequire, injects __filename / __dirname shims,
and resyncs the ___emscripten_embedded_file_data constant from
the wasm global section if Emscripten emitted a stale value.
Idempotent and pinned to emsdk 3.1.56 (see WARNING in the
header).
* toolchains/emscripten/README.md — full build documentation:
quick-start via npm/build.sh, manual build, list of embedded
files, exported C API, JavaScript usage example, and notes on
CAD_ROOT, DISPLAY_SUSPEND, and the signal-API stubs.
* .gitignore — adds the WASM artefacts (magic.js, magic.wasm,
magic.symbols), tightens the editor/OS cruft list, and keeps
toolchains/emscripten/defs.mak tracked despite the `defs.mak`
ignore rule.
63 lines
943 B
Plaintext
63 lines
943 B
Plaintext
# Autoconf / configure outputs
|
|
defs.mak
|
|
!toolchains/emscripten/defs.mak
|
|
config.cache
|
|
config.log
|
|
scripts/config.log
|
|
scripts/config.status
|
|
scripts/defs.mak
|
|
install.log
|
|
make.log
|
|
reconfigure.sh
|
|
|
|
# Compiled objects / libraries
|
|
*.o
|
|
*.a
|
|
*.so
|
|
*/Depend
|
|
database/database.h
|
|
|
|
# Editor / OS cruft
|
|
.*.swp
|
|
.*.swo
|
|
*~
|
|
.DS_Store
|
|
.vscode/
|
|
.idea/
|
|
|
|
# Magic runtime-generated files
|
|
magic/proto.magicrc
|
|
scmos/cif_template/objs/*
|
|
scmos/gdsquery.tech
|
|
scmos/minimum.tech
|
|
scmos/scmos-sub.tech
|
|
scmos/scmos-tm.tech
|
|
scmos/scmos.tech
|
|
scmos/scmosWR.tech
|
|
scmos/nmos.tech
|
|
|
|
# Native build artifacts
|
|
magic/magic
|
|
magic/tclmagic.dylib
|
|
tcltk/magic.sh
|
|
tcltk/magic.tcl
|
|
tcltk/magicdnull
|
|
tcltk/magicexec
|
|
tcltk/ext2spice.sh
|
|
tcltk/ext2sim.sh
|
|
tcltk/magicdnull.dSYM/
|
|
tcltk/magicexec.dSYM/
|
|
pfx/
|
|
|
|
# WASM build artifacts
|
|
magic/magic.js
|
|
magic/magic.js.symbols
|
|
magic/magic.symbols
|
|
magic/magic.wasm
|
|
net2ir/net2ir
|
|
net2ir/net2ir.js
|
|
net2ir/net2ir.wasm
|
|
|
|
# Generated test output
|
|
npm/examples/output/
|