Index: build/config/gcc/BUILD.gn |
diff --git a/build/config/gcc/BUILD.gn b/build/config/gcc/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..47bcc0b61243a0b84c61c43b229cc0b935c22b0a |
--- /dev/null |
+++ b/build/config/gcc/BUILD.gn |
@@ -0,0 +1,46 @@ |
+# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# This config causes functions not to be automatically exported from shared |
+# libraries. By default, all symbols are exported but this means there are |
+# lots of exports that slow everything down. In general we explicitly mark |
+# which functiosn we want to export from components. |
+# |
+# Some third_party code assumes all functions are exported so this is separated |
+# into its own config so such libraries can remove this config to make symbols |
+# public again. |
+# |
+# See http://gcc.gnu.org/wiki/Visibility |
+config("symbol_visibility_hidden") { |
+ # Note that -fvisibility-inlines-hidden is set globally in the compiler |
+ # config since that can almost always be applied. |
+ cflags = [ "-fvisibility=hidden" ] |
+} |
+ |
+# Settings for executables and shared libraries. |
+config("executable_ldconfig") { |
+ if (is_android) { |
+ ldflags = [ |
+ "-Bdynamic", |
+ "-Wl,-z,nocopyreloc", |
+ ] |
+ } else { |
+ # Android doesn't support rpath. |
+ ldflags = [ |
+ # Want to pass "\$". GN will re-escape as required for ninja. |
+ "-Wl,-rpath=\$ORIGIN/", |
+ "-Wl,-rpath-link=", |
+ |
+ # Newer binutils don't set DT_RPATH unless you disable "new" dtags |
+ # and the new DT_RUNPATH doesn't work without --no-as-needed flag. |
+ "-Wl,--disable-new-dtags", |
+ ] |
+ } |
+} |
+ |
+config("no_exceptions") { |
+ no_exceptions_flags = [ "-fno-exceptions" ] |
+ cflags_cc = no_exceptions_flags |
+ cflags_objcc = no_exceptions_flags |
+} |