mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
136 lines
4.8 KiB
Plaintext
136 lines
4.8 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("//buildtools/deps_revisions.gni")
|
||
|
import("//build/config/c++/c++.gni")
|
||
|
import("//build/config/clang/clang.gni")
|
||
|
import("//build/config/compiler/compiler.gni")
|
||
|
import("//build/config/sanitizers/sanitizers.gni")
|
||
|
import("//build/config/sysroot.gni")
|
||
|
import("//build/toolchain/toolchain.gni")
|
||
|
|
||
|
# TODO(crbug.com/830987): Come up with a better name for is POSIX + Fuchsia
|
||
|
# configuration.
|
||
|
assert(is_posix || is_fuchsia)
|
||
|
|
||
|
group("posix") {
|
||
|
visibility = [ "//:optimize_gn_gen" ]
|
||
|
}
|
||
|
|
||
|
# This is included by reference in the //build/config/compiler:runtime_library
|
||
|
# config that is applied to all targets. It is here to separate out the logic
|
||
|
# that is Posix-only. Please see that target for advice on what should go in
|
||
|
# :runtime_library vs. :compiler.
|
||
|
config("runtime_library") {
|
||
|
asmflags = []
|
||
|
cflags = []
|
||
|
cflags_c = []
|
||
|
cflags_cc = []
|
||
|
cflags_objc = []
|
||
|
cflags_objcc = []
|
||
|
defines = []
|
||
|
ldflags = []
|
||
|
lib_dirs = []
|
||
|
libs = []
|
||
|
|
||
|
if (use_custom_libcxx) {
|
||
|
if (libcpp_is_static) {
|
||
|
# Don't leak any symbols on a static build.
|
||
|
defines += [
|
||
|
"_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
|
||
|
"_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
|
||
|
]
|
||
|
}
|
||
|
if (!is_clang) {
|
||
|
# Gcc has a built-in abs() definition with default visibility.
|
||
|
# If it was not disabled, it would conflict with libc++'s abs()
|
||
|
# with hidden visibility.
|
||
|
cflags += [ "-fno-builtin-abs" ]
|
||
|
}
|
||
|
cflags_cc += [
|
||
|
"-nostdinc++",
|
||
|
"-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir),
|
||
|
"-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir),
|
||
|
]
|
||
|
defines += [
|
||
|
"CR_LIBCXX_REVISION=$libcxx_svn_revision",
|
||
|
"CR_LIBCXXABI_REVISION=$libcxxabi_svn_revision",
|
||
|
]
|
||
|
|
||
|
# Make sure we don't link against libc++ or libstdc++.
|
||
|
if (is_clang) {
|
||
|
# //build/config/android:runtime_library adds -nostdlib, which suppresses
|
||
|
# linking against all system libraries. -nostdlib++ would be redundant,
|
||
|
# and would generate an unused warning in this case.
|
||
|
if (!is_android) {
|
||
|
ldflags += [ "-nostdlib++" ]
|
||
|
}
|
||
|
} else {
|
||
|
ldflags += [ "-nodefaultlibs" ]
|
||
|
|
||
|
# Unfortunately, there's no way to disable linking against just libc++
|
||
|
# (gcc doesn't have -notstdlib++:
|
||
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83931); -nodefaultlibs
|
||
|
# removes all of the default libraries, so add back the ones that we need.
|
||
|
libs += [
|
||
|
"c",
|
||
|
"gcc_s",
|
||
|
"m",
|
||
|
"rt",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!is_mac && !is_ios && sysroot != "") {
|
||
|
# Pass the sysroot to all C compiler variants, the assembler, and linker.
|
||
|
sysroot_flags = [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ]
|
||
|
if (is_linux) {
|
||
|
# This is here so that all files get recompiled after a sysroot roll and
|
||
|
# when turning the sysroot on or off. (defines are passed via the command
|
||
|
# line, and build system rebuilds things when their commandline
|
||
|
# changes). Nothing should ever read this define.
|
||
|
sysroot_hash =
|
||
|
exec_script("//build/linux/sysroot_scripts/install-sysroot.py",
|
||
|
[ "--print-hash=$current_cpu" ],
|
||
|
"trim string",
|
||
|
[ "//build/linux/sysroot_scripts/sysroots.json" ])
|
||
|
defines += [ "CR_SYSROOT_HASH=$sysroot_hash" ]
|
||
|
}
|
||
|
asmflags += sysroot_flags
|
||
|
|
||
|
link_sysroot_flags =
|
||
|
[ "--sysroot=" + rebase_path(link_sysroot, root_build_dir) ]
|
||
|
ldflags += link_sysroot_flags
|
||
|
|
||
|
# When use_custom_libcxx=true, some -isystem flags get passed to
|
||
|
# cflags_cc to set up libc++ include paths. We want to make sure
|
||
|
# the sysroot includes take lower precendence than the libc++
|
||
|
# ones, so they must appear later in the command line. However,
|
||
|
# the gn reference states "These variant-specific versions of
|
||
|
# cflags* will be appended on the compiler command line after
|
||
|
# 'cflags'." Because of this, we must set the sysroot flags for
|
||
|
# all cflags variants instead of using 'cflags' directly.
|
||
|
cflags_c += sysroot_flags
|
||
|
cflags_cc += sysroot_flags
|
||
|
cflags_objc += sysroot_flags
|
||
|
cflags_objcc += sysroot_flags
|
||
|
|
||
|
# Need to get some linker flags out of the sysroot.
|
||
|
ld_paths = exec_script("sysroot_ld_path.py",
|
||
|
[
|
||
|
rebase_path("//build/linux/sysroot_ld_path.sh",
|
||
|
root_build_dir),
|
||
|
rebase_path(link_sysroot),
|
||
|
],
|
||
|
"list lines")
|
||
|
foreach(ld_path, ld_paths) {
|
||
|
ld_path = rebase_path(ld_path, root_build_dir)
|
||
|
ldflags += [
|
||
|
"-L" + ld_path,
|
||
|
"-Wl,-rpath-link=" + ld_path,
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
}
|