Browse Source

Web: Workaround Emscripten 3.1.42+ LTO regression

Fixes #80010.

(cherry picked from commit b064008c07be856d6f3a5079d11746137e03ede5)
Rémi Verschelde 1 year ago
parent
commit
c88a8f96b4
2 changed files with 6 additions and 2 deletions
  1. 2 2
      .github/workflows/javascript_builds.yml
  2. 4 0
      platform/javascript/detect.py

+ 2 - 2
.github/workflows/javascript_builds.yml

@@ -7,7 +7,7 @@ env:
   # Only used for the cache key. Increment version to force clean build.
   GODOT_BASE_BRANCH: 3.x
   SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
-  EM_VERSION: 3.1.18
+  EM_VERSION: 3.1.45
   EM_CACHE_FOLDER: "emsdk-cache"
 
 concurrency:
@@ -16,7 +16,7 @@ concurrency:
 
 jobs:
   javascript-template:
-    runs-on: "ubuntu-20.04"
+    runs-on: "ubuntu-22.04"
     name: Template (target=release, tools=no)
 
     steps:

+ 4 - 0
platform/javascript/detect.py

@@ -111,6 +111,10 @@ def configure(env):
         else:
             env.Append(CCFLAGS=["-flto"])
             env.Append(LINKFLAGS=["-flto"])
+        # Workaround https://github.com/emscripten-core/emscripten/issues/19781.
+        cc_semver = tuple(get_compiler_version(env))
+        if cc_semver >= (3, 1, 42):
+            env.Append(LINKFLAGS=["-Wl,-u,scalbnf"])
 
     # Sanitizers
     if env["use_ubsan"]: