Explorar el Código

Web: Workaround Emscripten 3.1.42+ LTO regression

Fixes #80010.

(cherry picked from commit b064008c07be856d6f3a5079d11746137e03ede5)
Rémi Verschelde hace 1 año
padre
commit
6122cf3178
Se han modificado 2 ficheros con 7 adiciones y 2 borrados
  1. 2 2
      .github/workflows/web_builds.yml
  2. 5 0
      platform/web/detect.py

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

@@ -7,7 +7,7 @@ env:
   # Used for the cache key. Add version suffix to force clean build.
   # Used for the cache key. Add version suffix to force clean build.
   GODOT_BASE_BRANCH: '4.1'
   GODOT_BASE_BRANCH: '4.1'
   SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no
   SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no
-  EM_VERSION: 3.1.18
+  EM_VERSION: 3.1.45
   EM_CACHE_FOLDER: "emsdk-cache"
   EM_CACHE_FOLDER: "emsdk-cache"
 
 
 concurrency:
 concurrency:
@@ -16,7 +16,7 @@ concurrency:
 
 
 jobs:
 jobs:
   web-template:
   web-template:
-    runs-on: "ubuntu-20.04"
+    runs-on: "ubuntu-22.04"
     name: Template (target=template_release)
     name: Template (target=template_release)
 
 
     steps:
     steps:

+ 5 - 0
platform/web/detect.py

@@ -121,6 +121,11 @@ def configure(env: "Environment"):
         else:
         else:
             env.Append(CCFLAGS=["-flto"])
             env.Append(CCFLAGS=["-flto"])
             env.Append(LINKFLAGS=["-flto"])
             env.Append(LINKFLAGS=["-flto"])
+        # Workaround https://github.com/emscripten-core/emscripten/issues/19781.
+        cc_version = get_compiler_version(env)
+        cc_semver = (int(cc_version["major"]), int(cc_version["minor"]), int(cc_version["patch"]))
+        if cc_semver >= (3, 1, 42):
+            env.Append(LINKFLAGS=["-Wl,-u,scalbnf"])
 
 
     # Sanitizers
     # Sanitizers
     if env["use_ubsan"]:
     if env["use_ubsan"]: