You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
SCons: Add 'split_libmodules' option to workaround linker issue
The new 'split_libmodules=yes' option is useful to work around linker command line size limitations when linking a huge number of objects. We're currently over 64k chars when linking libmodules.a on Windows with MinGW, which triggers issues as seen in #30892. Even on Linux, we can also reach linker command line size limitations by adding more custom modules. We force this option to True for MinGW on Windows, which fixes #30892. Additional changes to lib splitting: - Fix linking of the split module libs with interdependent symbols, hacking our way into LINKCOM and SHLINKCOM to set the `--start-group` and `--end-group` flags. - Fix Python 3 compatibility in `methods.split_lib()`. - Drop seemingly obsolete condition for 'msys' on 'posix'. - Drop the unnecessary 'split_drivers' as the drivers lib is no longer too big since we moved all thirdparty builds to modules. Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
This commit is contained in:
@@ -151,14 +151,14 @@ def setup_msvc_auto(env):
|
||||
env['bits'] = '64'
|
||||
else:
|
||||
env['bits'] = '32'
|
||||
print(" Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits']))
|
||||
print("Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits']))
|
||||
if env['TARGET_ARCH'] in ('amd64', 'x86_64'):
|
||||
env["x86_libtheora_opt_vc"] = False
|
||||
|
||||
def setup_mingw(env):
|
||||
"""Set up env for use with mingw"""
|
||||
# Nothing to do here
|
||||
print("Using Mingw")
|
||||
print("Using MinGW")
|
||||
pass
|
||||
|
||||
def configure_msvc(env, manual_msvc_config):
|
||||
@@ -294,7 +294,10 @@ def configure_mingw(env):
|
||||
## Compiler configuration
|
||||
|
||||
if (os.name == "nt"):
|
||||
env['ENV']['TMP'] = os.environ['TMP'] # way to go scons, you can be so stupid sometimes
|
||||
# Force splitting libmodules.a in multiple chunks to work around
|
||||
# issues reaching the linker command line size limit, which also
|
||||
# seem to induce huge slowdown for 'ar' (GH-30892).
|
||||
env['split_libmodules'] = True
|
||||
else:
|
||||
env["PROGSUFFIX"] = env["PROGSUFFIX"] + ".exe" # for linux cross-compilation
|
||||
|
||||
|
||||
Reference in New Issue
Block a user