-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Description
I have a javascript library (tensorflow.js) that I want to be able to access from a worker in C++ code. Previously (3.1.51), if I used --extern-pre-js to prepend this to the main js file, this worked.
It seems that after #21701 , extern-pre-js'es are no longer accessible from workers. If I modify the generated main.js file to always include the extern-pre-js (remove the check if (!isPthread)), things work like they did before.
If I use --pre-js instead of --extern-pre-js, I get an error because the acorn optimization fails on the js file that I pass in.
Is there some other way I should be making external javascript libraries accessible to Workers?
Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.60 (42a6ea2)
clang version 19.0.0git (https:/github.com/llvm/llvm-project bc9823cf60bf91cc8b45248c4205cd2c67b2a3d5)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/d.cheng/projects/emsdk/upstream/bin
Full link command and output with -v appended:
(Note: I formatted the output some, removed some verbose output and renamed my project name to asdf)
[1/1] : && /Users/d.cheng/projects/emsdk/upstream/emscripten/em++
-sUSE_BOOST_HEADERS=1
-sUSE_GIFLIB=1
-sUSE_LIBPNG
-sUSE_SDL=2
-pthread
-sNO_DISABLE_EXCEPTION_CATCHING
-sNO_DISABLE_EXCEPTION_CATCHING
-sUSE_ZLIB=1
-DBOOST_NO_CXX98_FUNCTION_BASE
-fexperimental-library
-g2
--embind-emit-tsd=asdf.d.ts
-g
-sUSE_BOOST_HEADERS=1
-sUSE_GIFLIB=1
-sUSE_LIBPNG
-sUSE_SDL=2
-pthread
-sNO_DISABLE_EXCEPTION_CATCHING
-sNO_DISABLE_EXCEPTION_CATCHING
-sUSE_ZLIB=1
--bind
-sPTHREAD_POOL_SIZE=navigator.hardwareConcurrency
-sNO_DISABLE_EXCEPTION_CATCHING
-sWASM_BIGINT
-sOFFSCREENCANVAS_SUPPORT=1
-sFULL_ES3=1
-sMODULARIZE
-sEXPORT_NAME="CreateAsdf"
-sUSE_ES6_IMPORT_META=0
-sEXPORTED_RUNTIME_METHODS=["FS"]
-sENVIRONMENT=web,worker
-sEXPORT_ES6=1
-v
-sINITIAL_MEMORY=268435456
-sASSERTIONS=0
--extern-pre-js /Users/d.cheng/projects/CommonCpp/asdf-wasm/JSDependencyBuilder/build/external-library.js
*** a bunch of --embed-file ***
*** a bunch of .o files ***
*** a bunch of .a files ***
em++: warning: --embind-emit-tsd is deprecated. Use --emit-tsd instead. [-Wdeprecated]
/Users/d.cheng/projects/emsdk/upstream/bin/clang --version
/Users/d.cheng/projects/emsdk/upstream/emscripten/tools/file_packager bin/asdf.data --from-emcc --embed *** a bunch of files to embed *** --no-node --obj-output=/var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/emscripten_temp_ajcbzrag/embedded_files.o
/Users/d.cheng/projects/emsdk/upstream/bin/wasm-ld @/var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/emscripten_5fqvg2za.rsp.utf-8
/Users/d.cheng/projects/emsdk/upstream/bin/llvm-objcopy bin/asdf.wasm bin/asdf.wasm --remove-section=producers
/Users/d.cheng/projects/emsdk/node/18.20.3_64bit/bin/node /Users/d.cheng/projects/emsdk/upstream/emscripten/src/compiler.mjs /var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/tmpm_edp739.json
/Users/d.cheng/projects/emsdk/node/18.20.3_64bit/bin/node /Users/d.cheng/projects/emsdk/upstream/emscripten/src/compiler.mjs /var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/tmpd4rrb3gn.json
/Users/d.cheng/projects/emsdk/node/18.20.3_64bit/bin/node /var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/emscripten_temp_ajcbzrag/tsgen_a.out.js
tsc --outFile /var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/emscripten_temp_ajcbzrag/jsdoc.d.ts --declaration --emitDeclarationOnly --allowJs /var/folders/_6/dll3kgx93qz05hvnymcr5jzh0000gp/T/emscripten_temp_ajcbzrag/jsdoc.js