emscripten
emscripten copied to clipboard
-s SINGLE_FILE=1 with -sWASM_WORKERS=1 results in `KeyError: 'libwasm_workers'`
Please include the following in your bug report:
Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.61 (67fa4c16496b157a7fc3377afd69ee0445e8a6e3)
Failing command line in full:
emcc *.cpp -o emulator/emulator.js -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sSINGLE_FILE=1 -sEXPORTED_FUNCTIONS=_speakLPC,_stopSpeaking,_main,_malloc,_free -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,callMain,addFunction,removeFunction -sEXPORT_ES6=1 -sMODULARIZE=1 -sALLOW_MEMORY_GROWTH=1 -sALLOW_TABLE_GROWTH=1
Full link command and output with -v appended:
emcc -v *.cpp -o emulator/emulator.js -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sSINGLE_FILE=1 -sEXPORTED_FUNCTIONS=_speakLPC,_stopSpeaking,_main,_malloc,_free -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,callMain,addFunction,removeFunction -sEXPORT_ES6=1 -sMODULARIZE=1 -sALLOW_MEMORY_GROWTH=1 -sALLOW_TABLE_GROWTH=1
/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory emulator.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/emulator_0.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
(in-process)
"/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name emulator.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/emulator_0.o -x c++ emulator.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
/Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory speech_synthesizer.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/speech_synthesizer_1.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
(in-process)
"/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name speech_synthesizer.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/speech_synthesizer_1.o -x c++ speech_synthesizer.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
/Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory tms5220.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/tms5220_2.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
(in-process)
"/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name tms5220.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/tms5220_2.o -x c++ tms5220.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
/Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory web_audio_worklet.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/web_audio_worklet_3.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
(in-process)
"/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name web_audio_worklet.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/web_audio_worklet_3.o -x c++ web_audio_worklet.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
/Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang --version
Traceback (most recent call last):
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 1602, in <module>
sys.exit(main(sys.argv))
^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 81, in inner
return func(*args, **kwds)
^^^^^^^^^^^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 1595, in main
ret = run(args)
^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 660, in run
return link.run(linker_inputs, options, state, newargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/link.py", line 3065, in run
phase_calculate_system_libraries(linker_arguments, newargs)
File "/opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 81, in inner
return func(*args, **kwds)
^^^^^^^^^^^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/link.py", line 1828, in phase_calculate_system_libraries
extra_files_to_link += system_libs.calculate(newargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2398, in calculate
libs_to_link = get_libs_to_link(args)
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2380, in get_libs_to_link
add_library('libwasm_workers')
File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2269, in add_library
lib = system_libs_map[libname]
~~~~~~~~~~~~~~~^^^^^^^^^
KeyError: 'libwasm_workers'
make: *** [build] Error 1
Note: Where possible, please avoid attaching screen shots of code or console
logs. Instead, please include them as text so that they may be copied /
searched. To make code blocks more readable and syntax highlighted, please
escape them with three backticks before and after, like this:
It looks like that combination of flags is not allowed: https://github.com/emscripten-core/emscripten/blob/74ada8315172abe32db7b475f52e5e2612dfbc9b/src/library_wasm_worker.js#L22-L24
However, the compiler should not crash so we should fix that.
It would be nice if we can have this feature that allows merging wasm workers with single file just like pthread with single file. @sbc100.