summaryrefslogtreecommitdiff
path: root/modules/freetype
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2017-03-19 14:26:27 +0100
committerRémi Verschelde <rverschelde@gmail.com>2017-03-19 15:19:31 +0100
commit26c6c2b01a7507038f051bcdde9fcb41c7cc4d1f (patch)
tree9942f3a74b0b14c591af787fea8bc4b9f4d07a4f /modules/freetype
parent6e476f87330f58d900c2e2e8556fdfb1bde910ec (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.
Diffstat (limited to 'modules/freetype')
-rw-r--r--modules/freetype/SCsub32
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")