From 9e860a84a0343693beffb11ddaf2c3c9a19264af Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Fri, 14 Jun 2024 01:42:39 +0200 Subject: [PATCH] [Web] Force emcc to use "wasm" longjmp mode SUPPORT_LONGJMP have changed since emscripten 3.1.32 to default to "wasm" mode when exceptions are enabled, and "emscripten" mode when disabled. While we generally doesn't use exception in core, linked libraries may need them, and emscripten don't plan to support WASM EH + Emscripten SjLj in the long term. (cherry picked from commit 1bb543b6f4234a967f1d89dca78e380208177635) --- tools/web.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/web.py b/tools/web.py index 8953325c..dea42b26 100644 --- a/tools/web.py +++ b/tools/web.py @@ -35,12 +35,16 @@ def generate(env): # Thread support (via SharedArrayBuffer). if env["threads"]: - env.Append(CCFLAGS=["-s", "USE_PTHREADS=1"]) - env.Append(LINKFLAGS=["-s", "USE_PTHREADS=1"]) + env.Append(CCFLAGS=["-sUSE_PTHREADS=1"]) + env.Append(LINKFLAGS=["-sUSE_PTHREADS=1"]) # Build as side module (shared library). - env.Append(CPPFLAGS=["-s", "SIDE_MODULE=1"]) - env.Append(LINKFLAGS=["-s", "SIDE_MODULE=1"]) + env.Append(CPPFLAGS=["-sSIDE_MODULE=1"]) + env.Append(LINKFLAGS=["-sSIDE_MODULE=1"]) + + # Force wasm longjmp mode. + env.Append(CCFLAGS=["-sSUPPORT_LONGJMP='wasm'"]) + env.Append(LINKFLAGS=["-sSUPPORT_LONGJMP='wasm'"]) env.Append(CPPDEFINES=["WEB_ENABLED", "UNIX_ENABLED"])