Source code

Revision control

Copy as Markdown

Other Tools

# 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("//chromium/build/config/sysroot.gni")
# This build configuration is used by both Fuchsia and POSIX systems.
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 = []
if (!is_apple && 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 || is_chromeos) {
# 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("//chromium/build/linux/sysroot_scripts/install-sysroot.py",
[ "--print-hash=$target_cpu" ],
"trim string",
[ "//chromium/build/linux/sysroot_scripts/sysroots.json" ])
defines += [ "CR_SYSROOT_HASH=$sysroot_hash" ]
}
asmflags += sysroot_flags
ldflags += 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
}
}