Add LTO support for Android Chromium.

This is to add support for a Link-Time Optimizations experiment in Android Chromium. As it is disabled by default, it won't change anything for most configurations.
BUG=chromium:407544
R=andrew@webrtc.org, tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/21299004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7009 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/build/common.gypi b/webrtc/build/common.gypi
index cbc398e..00bd4d4 100644
--- a/webrtc/build/common.gypi
+++ b/webrtc/build/common.gypi
@@ -112,6 +112,11 @@
     'mips_fpu%' : 1,
     'enable_android_opensl%': 1,
 
+    # Link-Time Optimizations
+    # Executes code generation at link-time instead of compile-time
+    # https://gcc.gnu.org/wiki/LinkTimeOptimization
+    'use_lto%': 0,
+
     'conditions': [
       ['build_with_chromium==1', {
         # Exclude pulse audio on Chromium since its prerequisites don't require
diff --git a/webrtc/common_audio/common_audio.gyp b/webrtc/common_audio/common_audio.gyp
index 58b9bb9..ae3bacb 100644
--- a/webrtc/common_audio/common_audio.gyp
+++ b/webrtc/common_audio/common_audio.gyp
@@ -184,6 +184,15 @@
             'signal_processing/min_max_operations_neon.S',
             'signal_processing/vector_scaling_operations_neon.S',
           ],
+          'conditions': [
+            # Disable LTO in common_audio_neon target due to compiler bug
+            ['use_lto==1', {
+              'cflags!': [
+                '-flto',
+                '-ffat-lto-objects',
+              ],
+            }],
+          ],
         },
       ],  # targets
     }],
diff --git a/webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.gypi b/webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.gypi
index 7010b1e..7bef170 100644
--- a/webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.gypi
+++ b/webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.gypi
@@ -140,6 +140,15 @@
             'lpc_masking_model_neon.S',
             'transform_neon.S',
           ],
+          'conditions': [
+            # Disable LTO in isac_neon target due to compiler bug
+            ['use_lto==1', {
+              'cflags!': [
+                '-flto',
+                '-ffat-lto-objects',
+              ],
+            }],
+          ],
         },
       ],
     }],
diff --git a/webrtc/modules/audio_processing/audio_processing.gypi b/webrtc/modules/audio_processing/audio_processing.gypi
index 98d437f..9298f11 100644
--- a/webrtc/modules/audio_processing/audio_processing.gypi
+++ b/webrtc/modules/audio_processing/audio_processing.gypi
@@ -222,6 +222,13 @@
             ],
             'includes!': ['../../build/arm_neon.gypi',],
           }],
+          # Disable LTO in audio_processing_neon target due to compiler bug
+          ['use_lto==1', {
+            'cflags!': [
+              '-flto',
+              '-ffat-lto-objects',
+            ],
+          }],
         ],
       }],
     }],