# 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") {
  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",
  ]

  if (is_android) {
    ldflags += [
      "-Bdynamic",
      "-Wl,-z,nocopyreloc",
    ]
  }
}

config("no_exceptions") {
  cflags_cc = [ "-fno-exceptions" ]
}
