diff --git a/toolchains/emscripten/defs.mak b/toolchains/emscripten/defs.mak index a3b25d4e..c5f21ea5 100644 --- a/toolchains/emscripten/defs.mak +++ b/toolchains/emscripten/defs.mak @@ -20,6 +20,15 @@ MAKE_WASM = 1 # Emscripten linker flags. # The link step runs from the magic/ subdirectory, so embed-file paths # are relative to that directory (../scmos, ../windows/...). +# +# INCOMING_MODULE_JS_API is emscripten's default list plus `wasmBinary`. +# Our JS loaders (npm/examples/*.js) pass Module.wasmBinary to embed the .wasm, +# but emscripten 6.0.2 dropped wasmBinary (and a batch of GL/SDL members) from +# the default INCOMING_MODULE_JS_API. With ASSERTIONS=1 that turns into a hard +# runtime abort: "`Module.wasmBinary` was supplied but `wasmBinary` not included +# in INCOMING_MODULE_JS_API". We spell out the full default list (so external +# consumers passing locateFile/arguments/etc. keep working) and re-add +# wasmBinary. Keep this in sync with emscripten's default if it grows. TOP_EXTRA_LIBS += \ -sWASM=1 \ -sMODULARIZE=1 \ @@ -27,6 +36,7 @@ TOP_EXTRA_LIBS += \ -sUSE_ZLIB=1 \ -sEXPORTED_FUNCTIONS=_magic_wasm_init,_magic_wasm_run_command,_magic_wasm_source_file,_magic_wasm_update \ -sEXPORTED_RUNTIME_METHODS=cwrap,ccall,FS,setValue,getValue \ + -sINCOMING_MODULE_JS_API=ENVIRONMENT,arguments,canvas,dynamicLibraries,elementPointerLock,instantiateWasm,locateFile,monitorRunDependencies,noExitRuntime,noInitialRun,onAbort,onExit,onRuntimeInitialized,postRun,preInit,preRun,print,printErr,setStatus,statusMessage,stderr,stdin,stdout,thisProgram,wasm,websocket,wasmBinary \ -sALLOW_MEMORY_GROWTH=1 \ -sINITIAL_MEMORY=67108864 \ -Wl,-z,stack-size=10485760 \