diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2017-03-19 14:26:27 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2017-03-19 15:19:31 +0100 |
commit | 26c6c2b01a7507038f051bcdde9fcb41c7cc4d1f (patch) | |
tree | 9942f3a74b0b14c591af787fea8bc4b9f4d07a4f | |
parent | 6e476f87330f58d900c2e2e8556fdfb1bde910ec (diff) |
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.
-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 e4dd1c36a0..5b1e1c189f 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") |