mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
105 lines
3.4 KiB
Plaintext
105 lines
3.4 KiB
Plaintext
|
# Copyright 2015 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.
|
||
|
|
||
|
import("//build/config/c++/c++.gni")
|
||
|
import("//build/config/sanitizers/sanitizers.gni")
|
||
|
import("//build/toolchain/toolchain.gni")
|
||
|
|
||
|
# Used by libc++ and libc++abi.
|
||
|
config("config") {
|
||
|
defines = [ "LIBCXX_BUILDING_LIBCXXABI" ]
|
||
|
if (libcpp_is_static) {
|
||
|
defines += [
|
||
|
# This resets the visibility to default only for the various
|
||
|
# flavors of operator new and operator delete. These symbols
|
||
|
# are weak and get overriden by Chromium-provided ones, but if
|
||
|
# these symbols had hidden visibility, this would make the
|
||
|
# Chromium symbols hidden too because elf visibility rules
|
||
|
# require that linkers use the least visible form when merging,
|
||
|
# and if this is hidden, then when we merge it with tcmalloc's
|
||
|
# operator new, hidden visibility would win. However, tcmalloc
|
||
|
# needs a visible operator new to also override operator new
|
||
|
# references from system libraries.
|
||
|
# TODO(lld): Ask lld for a --force-public-visibility flag or
|
||
|
# similar to that overrides the default elf merging rules, and
|
||
|
# make tcmalloc's gn config pass that to all its dependencies,
|
||
|
# then remove this override here.
|
||
|
"_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))",
|
||
|
]
|
||
|
}
|
||
|
cflags = [
|
||
|
"-fPIC",
|
||
|
"-fstrict-aliasing",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
if (libcpp_is_static) {
|
||
|
link_target_type = "source_set"
|
||
|
} else {
|
||
|
link_target_type = "shared_library"
|
||
|
}
|
||
|
target(link_target_type, "libc++") {
|
||
|
sources = [
|
||
|
"trunk/src/algorithm.cpp",
|
||
|
"trunk/src/any.cpp",
|
||
|
"trunk/src/bind.cpp",
|
||
|
"trunk/src/chrono.cpp",
|
||
|
"trunk/src/condition_variable.cpp",
|
||
|
"trunk/src/debug.cpp",
|
||
|
"trunk/src/exception.cpp",
|
||
|
"trunk/src/functional.cpp",
|
||
|
"trunk/src/future.cpp",
|
||
|
"trunk/src/hash.cpp",
|
||
|
"trunk/src/ios.cpp",
|
||
|
"trunk/src/iostream.cpp",
|
||
|
"trunk/src/locale.cpp",
|
||
|
"trunk/src/memory.cpp",
|
||
|
"trunk/src/mutex.cpp",
|
||
|
"trunk/src/new.cpp",
|
||
|
"trunk/src/optional.cpp",
|
||
|
"trunk/src/random.cpp",
|
||
|
"trunk/src/regex.cpp",
|
||
|
"trunk/src/shared_mutex.cpp",
|
||
|
"trunk/src/stdexcept.cpp",
|
||
|
"trunk/src/string.cpp",
|
||
|
"trunk/src/strstream.cpp",
|
||
|
"trunk/src/system_error.cpp",
|
||
|
"trunk/src/thread.cpp",
|
||
|
"trunk/src/typeinfo.cpp",
|
||
|
"trunk/src/utility.cpp",
|
||
|
"trunk/src/valarray.cpp",
|
||
|
"trunk/src/variant.cpp",
|
||
|
"trunk/src/vector.cpp",
|
||
|
]
|
||
|
configs -= [
|
||
|
"//build/config/compiler:chromium_code",
|
||
|
"//build/config/compiler:no_exceptions",
|
||
|
"//build/config/compiler:no_rtti",
|
||
|
"//build/config/coverage:default_coverage",
|
||
|
]
|
||
|
if (is_android && !libcpp_is_static) {
|
||
|
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
|
||
|
}
|
||
|
configs += [
|
||
|
":config",
|
||
|
"//build/config/compiler:no_chromium_code",
|
||
|
"//build/config/compiler:exceptions",
|
||
|
"//build/config/compiler:rtti",
|
||
|
"//build/config/sanitizers:sanitizer_options_link_helper",
|
||
|
]
|
||
|
|
||
|
defines = [ "_LIBCPP_BUILDING_LIBRARY" ]
|
||
|
if (!is_clang && !libcpp_is_static) {
|
||
|
# This is a temporary workaround to get libc++ builds working with
|
||
|
# gcc. It can be removed with either
|
||
|
# https://reviews.llvm.org/D35326 or
|
||
|
# https://reviews.llvm.org/D35388 lands.
|
||
|
defines += [ "_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS=__attribute__((__visibility__(\"default\")))" ]
|
||
|
}
|
||
|
|
||
|
deps = [
|
||
|
"//buildtools/third_party/libc++abi",
|
||
|
]
|
||
|
}
|