diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-12-09 19:22:08 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2019-12-11 15:40:28 +0100 |
commit | c320a822132223eba5b317314c5cdc001799d423 (patch) | |
tree | 4bfa4424bfb7d931cfd7717dae4f4728ec5804ba /drivers | |
parent | cd9d5132854e239726a08098d9029bdd00eee752 (diff) |
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/SCsub | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/SCsub b/drivers/SCsub index 583973c025..d7003a07ce 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -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]) |