From 5eed870a6a3a0cef9e52442d7d1b8cb4e45b7cbd Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Wed, 12 Jul 2023 15:56:46 +0200 Subject: [PATCH] [Web] Use fvisibility=hidden for side module when dlink_enabled. This hugely reduces the number of exports, making it acceptable for browsers. Note that dlink + threads is still not working due to upstream issues with the pthread emulation library. Should hopefully be solved once emscripten move to native WASM threads. --- platform/web/SCsub | 3 +++ platform/web/detect.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/platform/web/SCsub b/platform/web/SCsub index e44e59bfb97..1af0642554a 100644 --- a/platform/web/SCsub +++ b/platform/web/SCsub @@ -70,6 +70,9 @@ if env["dlink_enabled"]: sys_env.Append(LINKFLAGS=["-s", "WARN_ON_UNDEFINED_SYMBOLS=0"]) # Force exporting the standard library (printf, malloc, etc.) sys_env["ENV"]["EMCC_FORCE_STDLIBS"] = "libc,libc++,libc++abi" + sys_env["CCFLAGS"].remove("-fvisibility=hidden") + sys_env["LINKFLAGS"].remove("-fvisibility=hidden") + # The main emscripten runtime, with exported standard libraries. sys = sys_env.Program(build_targets, ["web_runtime.cpp"]) diff --git a/platform/web/detect.py b/platform/web/detect.py index 2685cbcd63e..0f1508f5301 100644 --- a/platform/web/detect.py +++ b/platform/web/detect.py @@ -211,6 +211,8 @@ def configure(env: "Environment"): env.Append(CCFLAGS=["-s", "SIDE_MODULE=2"]) env.Append(LINKFLAGS=["-s", "SIDE_MODULE=2"]) + env.Append(CCFLAGS=["-fvisibility=hidden"]) + env.Append(LINKFLAGS=["-fvisibility=hidden"]) env.extra_suffix = ".dlink" + env.extra_suffix # Reduce code size by generating less support code (e.g. skip NodeJS support).