Index: build/common.gypi |
diff --git a/build/common.gypi b/build/common.gypi |
index 1aa13d3dc9cbd0a2fe1362e728c9121728bf05c5..c3a614d635aec2aa2bd372e4adc68693d476042b 100644 |
--- a/build/common.gypi |
+++ b/build/common.gypi |
@@ -632,6 +632,11 @@ |
# compiler. Always do this by default. |
'host_clang%': 1, |
+ # Link-Time Optimizations |
+ # crbug.com/407544 |
+ 'use_lto%': 0, |
+ 'use_lto_o2%': 0, |
pasko
2014/10/10 11:59:21
it's worth explaining what use_lto_o2 is. Does use
Fabrice (no longer in Chrome)
2014/10/13 15:45:12
Done.
|
+ |
'conditions': [ |
# A flag for POSIX platforms |
['OS=="win"', { |
@@ -1179,6 +1184,8 @@ |
'proprietary_codecs%': '<(proprietary_codecs)', |
'use_goma%': '<(use_goma)', |
'gomadir%': '<(gomadir)', |
+ 'use_lto%': '<(use_lto)', |
+ 'use_lto_o2%': '<use_lto_o2', |
'video_hole%': '<(video_hole)', |
'enable_load_completion_hacks%': '<(enable_load_completion_hacks)', |
'support_pre_M6_history_database%': '<(support_pre_M6_history_database)', |
@@ -2303,6 +2310,11 @@ |
}, { |
'use_seccomp_bpf%': 0, |
}], |
+ # Set component build with LTO until all tests pass. |
+ # This reduces link time |
pasko
2014/10/10 11:59:21
nit:
s/This reduces link time/This reduces link t
Fabrice (no longer in Chrome)
2014/10/13 15:45:12
Done.
|
+ ['use_lto==1', { |
+ 'component%': "shared_library", |
+ }], |
], |
# older history files use fts2 instead of fts3 |
@@ -3745,6 +3757,13 @@ |
'cflags': [ |
'-march=<(arm_arch)', |
], |
+ 'conditions': [ |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'ldflags': [ |
+ '-march=<(arm_arch)', |
+ ], |
+ }], |
+ ], |
}], |
['clang==1 and OS!="android"', { |
'cflags': [ |
@@ -3757,21 +3776,49 @@ |
'cflags': [ |
'-mtune=<(arm_tune)', |
], |
+ 'conditions': [ |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'ldflags': [ |
+ '-mtune=<(arm_tune)', |
+ ], |
+ }], |
+ ], |
}], |
['arm_fpu!=""', { |
'cflags': [ |
'-mfpu=<(arm_fpu)', |
], |
+ 'conditions': [ |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'ldflags': [ |
+ '-mfpu=<(arm_fpu)', |
+ ], |
+ }], |
+ ], |
}], |
['arm_float_abi!=""', { |
'cflags': [ |
'-mfloat-abi=<(arm_float_abi)', |
], |
+ 'conditions': [ |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'ldflags': [ |
+ '-mfloat-abi=<(arm_float_abi)', |
+ ], |
+ }], |
+ ], |
}], |
['arm_thumb==1', { |
'cflags': [ |
'-mthumb', |
], |
+ 'conditions': [ |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'ldflags': [ |
+ '-mthumb', |
+ ], |
+ }], |
+ ], |
}], |
['OS=="android"', { |
# Most of the following flags are derived from what Android |
@@ -5666,6 +5713,29 @@ |
['CXX.host_wrapper', '<(gomadir)/gomacc'], |
], |
}], |
+ ['use_lto==1', { |
+ 'target_defaults': { |
+ 'target_conditions': [ |
+ ['_toolset=="target"', { |
+ 'cflags': [ |
+ '-flto', |
+ '-ffat-lto-objects', |
+ ], |
+ }], |
+ ], |
+ }, |
+ }], |
+ ['use_lto==1 or use_lto_o2==1', { |
+ 'target_defaults': { |
+ 'target_conditions': [ |
+ ['_toolset=="target"', { |
+ 'ldflags': [ |
+ '-flto=32', |
+ ], |
+ }], |
+ ], |
+ }, |
+ }], |
], |
'xcode_settings': { |
# DON'T ADD ANYTHING NEW TO THIS BLOCK UNLESS YOU REALLY REALLY NEED IT! |