diff options
| author | Rémi Verschelde | 2017-03-19 14:26:27 +0100 |
|---|---|---|
| committer | Rémi Verschelde | 2017-03-19 16:14:47 +0100 |
| commit | 3251e93cee07e431dca9a8c81d797a648bdd3d26 (patch) | |
| tree | b09023c313aa641bf49d0095f9809445b2e8c643 /modules | |
| parent | 4230b22558516473fe2b11f05436fab13269789c (diff) | |
| download | godot-3251e93cee07e431dca9a8c81d797a648bdd3d26.tar.gz godot-3251e93cee07e431dca9a8c81d797a648bdd3d26.tar.zst godot-3251e93cee07e431dca9a8c81d797a648bdd3d26.zip | |
Fix linking order for builtin freetype
Before this change the libfreetype_builtin.a lib would be appended
at the very end of the linking flags, after system libs such as -lX11
or -lkernel32.
(cherry picked from commit 26c6c2b01a7507038f051bcdde9fcb41c7cc4d1f)
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/freetype/SCsub | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub index 87652a3dd..d3e4fbf7e 100644 --- a/modules/freetype/SCsub +++ b/modules/freetype/SCsub @@ -2,7 +2,7 @@ Import('env') -# Not building in a separate env as core needs it +# Not building in a separate env as scene needs it # Thirdparty source files if (env['builtin_freetype'] != 'no'): @@ -64,24 +64,20 @@ if (env['builtin_freetype'] != 'no'): if (env['builtin_libpng'] != 'no'): env.Append(CPPPATH=["#thirdparty/libpng"]) - """ FIXME: Remove this commented code if Windows can handle the monolithic lib - # fix for Windows' shell miserably failing on long lines, split in two libraries - half1 = [] - half2 = [] - for x in thirdparty_sources: - if (x.find("src/base") != -1 and x.find("src/sfnt") != -1): - half1.append(x) - else: - half2.append(x) - - lib = env.Library("freetype_builtin1", half2) - env.Append(LIBS = [lib]) - lib = env.Library("freetype_builtin2", half1) - env.Append(LIBS = [lib]) - """ - lib = env.Library("freetype_builtin", thirdparty_sources) - env.Append(LIBS=[lib]) + # Needs to be appended to arrive after libscene in the linker call, + # but we don't want it to arrive *after* system libs, so manual hack + # LIBS contains first SCons Library objects ("SCons.Node.FS.File object") + # and then plain strings for system library. We insert between the two. + inserted = False + print(env["LIBS"]) + for idx, linklib in enumerate(env["LIBS"]): + if isinstance(linklib, basestring): # first system lib such as "X11", otherwise SCons lib object + env["LIBS"].insert(idx, lib) + inserted = True + break + if not inserted: + env.Append(LIBS=[lib]) # Godot source files env.add_source_files(env.modules_sources, "*.cpp") |
