summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHein-Pieter van Braam <hp@tmm.cx>2017-09-23 22:55:26 +0200
committerHein-Pieter van Braam <hp@tmm.cx>2017-09-23 22:55:26 +0200
commit43757fcc85ac8e1c4657b30968b9bf2381aec329 (patch)
tree1278196e6e4a11190f5b63872ab77c028a33222c
parent480b417c5baf4d15379bfca873e19e0e0ba24f45 (diff)
Fix gcc lto
This repairs LTO on X11 and adds it to MingW targets. The difference in linktime is substantial, but runtime performance is quite a bit better.
-rw-r--r--platform/windows/detect.py9
-rw-r--r--platform/x11/detect.py3
2 files changed, 10 insertions, 2 deletions
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 65eb51a2f3..053ea466f3 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -64,6 +64,7 @@ def get_opts():
return [
('mingw_prefix_32', 'MinGW prefix (Win32)', mingw32),
('mingw_prefix_64', 'MinGW prefix (Win64)', mingw64),
+ ('use_lto', 'Use link time optimization (when using MingW)', 'no'),
('debug_symbols', 'Add debug symbols to release version (yes/no/full)', 'yes')
]
@@ -256,11 +257,15 @@ def configure(env):
env["CC"] = mingw_prefix + "gcc"
env['AS'] = mingw_prefix + "as"
env['CXX'] = mingw_prefix + "g++"
- env['AR'] = mingw_prefix + "ar"
- env['RANLIB'] = mingw_prefix + "ranlib"
+ env['AR'] = mingw_prefix + "gcc-ar"
+ env['RANLIB'] = mingw_prefix + "gcc-ranlib"
env['LD'] = mingw_prefix + "g++"
env["x86_libtheora_opt_gcc"] = True
+ if (env["use_lto"] == "yes"):
+ env.Append(CCFLAGS=['-flto'])
+ env.Append(LINKFLAGS=['-flto'])
+
## Compile flags
env.Append(CCFLAGS=['-DWINDOWS_ENABLED', '-mwindows'])
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index efd388e44f..3667df907e 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -120,6 +120,9 @@ def configure(env):
if (env["use_lto"] == "yes"):
env.Append(CCFLAGS=['-flto'])
env.Append(LINKFLAGS=['-flto'])
+ if (env["use_llvm"] == "no"):
+ env['RANLIB'] = 'gcc-ranlib'
+ env['AR'] = 'gcc-ar'
env.Append(CCFLAGS=['-pipe'])
env.Append(LINKFLAGS=['-pipe'])