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:
@ -46,9 +46,7 @@ if env['vsproj']:
|
||||
env.AddToVSProject(env.drivers_sources)
|
||||
os.chdir(path)
|
||||
|
||||
if env.split_drivers:
|
||||
env.split_lib("drivers")
|
||||
else:
|
||||
env.add_source_files(env.drivers_sources, "*.cpp")
|
||||
lib = env.add_library("drivers", env.drivers_sources)
|
||||
env.Prepend(LIBS=[lib])
|
||||
env.add_source_files(env.drivers_sources, "*.cpp")
|
||||
|
||||
lib = env.add_library("drivers", env.drivers_sources)
|
||||
env.Prepend(LIBS=[lib])
|
||||
|
||||
Reference in New Issue
Block a user