From 26f17c33a503a09966c770d9b69a96e1f3914ea6 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Wed, 24 Jul 2024 19:56:48 +0200 Subject: [PATCH] [Web] Add workaround for missing export in threaded builds The offending symbol gets stripped away by wasm-dce but it's used on the JavaScript side and causes and undefined symbol which also causes the closure compiler to throw an error. --- platform/web/detect.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/web/detect.py b/platform/web/detect.py index 79485ea28a1..bf75c2f9fcf 100644 --- a/platform/web/detect.py +++ b/platform/web/detect.py @@ -227,6 +227,11 @@ def configure(env: "SConsEnvironment"): env.Append(LINKFLAGS=["-sDEFAULT_PTHREAD_STACK_SIZE=%sKB" % env["default_pthread_stack_size"]]) env.Append(LINKFLAGS=["-sPTHREAD_POOL_SIZE=8"]) env.Append(LINKFLAGS=["-sWASM_MEM_MAX=2048MB"]) + if not env["dlink_enabled"]: + # Workaround https://github.com/emscripten-core/emscripten/issues/21844#issuecomment-2116936414. + # Not needed (and potentially dangerous) when dlink_enabled=yes, since we set EXPORT_ALL=1 in that case. + env.Append(LINKFLAGS=["-sEXPORTED_FUNCTIONS=['__emscripten_thread_crashed','_main']"]) + elif env["proxy_to_pthread"]: print_warning('"threads=no" support requires "proxy_to_pthread=no", disabling proxy to pthread.') env["proxy_to_pthread"] = False