# Copyright 2015 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//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 != "" && current_os != "zos") { # 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. import("//build/linux/sysroot_scripts/sysroot.gni") defines += [ "CR_SYSROOT_KEY=$cr_sysroot_key" ] } 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 } }