From 26c6c2b01a7507038f051bcdde9fcb41c7cc4d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sun, 19 Mar 2017 14:26:27 +0100 Subject: [PATCH] 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. --- modules/freetype/SCsub | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub index e4dd1c36a05b..5b1e1c189f9b 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")