From cefdb34f6c1af31048340182c10587099c39da44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 2 Nov 2017 09:11:29 +0100 Subject: [PATCH] SCons: make use_lto a global option and opt-in for iphone Supersedes #12553, see discussion in #12552. --- SConstruct | 1 + platform/iphone/detect.py | 8 ++++++-- platform/windows/detect.py | 1 - platform/x11/detect.py | 1 - 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/SConstruct b/SConstruct index 484368c9b5b..9d536e0d16c 100644 --- a/SConstruct +++ b/SConstruct @@ -143,6 +143,7 @@ opts.Add('p', "Platform (alias for 'platform')", '') opts.Add('platform', "Target platform (%s)" % ('|'.join(platform_list), ), '') opts.Add(EnumVariable('target', "Compilation target", 'debug', ('debug', 'release_debug', 'release'))) opts.Add(BoolVariable('tools', "Build the tools a.k.a. the Godot editor", True)) +opts.Add(BoolVariable('use_lto', 'Use linking time optimization', False)) # Components opts.Add(BoolVariable('deprecated', "Enable deprecated features", True)) diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py index 00d8a59f740..993a93ff893 100644 --- a/platform/iphone/detect.py +++ b/platform/iphone/detect.py @@ -47,8 +47,8 @@ def configure(env): if (env["target"].startswith("release")): env.Append(CPPFLAGS=['-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1']) - env.Append(CPPFLAGS=['-O2', '-flto', '-ftree-vectorize', '-fomit-frame-pointer', '-ffast-math', '-funsafe-math-optimizations']) - env.Append(LINKFLAGS=['-O2', '-flto']) + env.Append(CPPFLAGS=['-O2', '-ftree-vectorize', '-fomit-frame-pointer', '-ffast-math', '-funsafe-math-optimizations']) + env.Append(LINKFLAGS=['-O2']) if env["target"] == "release_debug": env.Append(CPPFLAGS=['-DDEBUG_ENABLED']) @@ -56,6 +56,10 @@ def configure(env): elif (env["target"] == "debug"): env.Append(CPPFLAGS=['-D_DEBUG', '-DDEBUG=1', '-gdwarf-2', '-O0', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + if (env["use_lto"]): + env.Append(CPPFLAGS=['-flto']) + env.Append(LINKFLAGS=['-flto']) + ## Architecture if env["ios_sim"] or env["arch"] == "x86": # i386, simulator diff --git a/platform/windows/detect.py b/platform/windows/detect.py index bac5df5668d..fbb02c9d1bc 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -64,7 +64,6 @@ def get_opts(): return [ ('mingw_prefix_32', 'MinGW prefix (Win32)', mingw32), ('mingw_prefix_64', 'MinGW prefix (Win64)', mingw64), - BoolVariable('use_lto', 'Use link time optimization (when using MingW)', False), EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')), ] diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 56bc1d4c590..6bd0ac83175 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -52,7 +52,6 @@ def get_opts(): BoolVariable('use_static_cpp', 'Link stdc++ statically', False), BoolVariable('use_sanitizer', 'Use LLVM compiler address sanitizer', False), BoolVariable('use_leak_sanitizer', 'Use LLVM compiler memory leaks sanitizer (implies use_sanitizer)', False), - BoolVariable('use_lto', 'Use link time optimization', False), BoolVariable('pulseaudio', 'Detect & use pulseaudio', True), BoolVariable('udev', 'Use udev for gamepad connection callbacks', False), EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')),