xref: /aosp_15_r20/external/cronet/build/config/posix/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/config/sysroot.gni")
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker# This build configuration is used by both Fuchsia and POSIX systems.
8*6777b538SAndroid Build Coastguard Workerassert(is_posix || is_fuchsia)
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Workergroup("posix") {
11*6777b538SAndroid Build Coastguard Worker  visibility = [ "//:optimize_gn_gen" ]
12*6777b538SAndroid Build Coastguard Worker}
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Worker# This is included by reference in the //build/config/compiler:runtime_library
15*6777b538SAndroid Build Coastguard Worker# config that is applied to all targets. It is here to separate out the logic
16*6777b538SAndroid Build Coastguard Worker# that is Posix-only. Please see that target for advice on what should go in
17*6777b538SAndroid Build Coastguard Worker# :runtime_library vs. :compiler.
18*6777b538SAndroid Build Coastguard Workerconfig("runtime_library") {
19*6777b538SAndroid Build Coastguard Worker  asmflags = []
20*6777b538SAndroid Build Coastguard Worker  cflags = []
21*6777b538SAndroid Build Coastguard Worker  cflags_c = []
22*6777b538SAndroid Build Coastguard Worker  cflags_cc = []
23*6777b538SAndroid Build Coastguard Worker  cflags_objc = []
24*6777b538SAndroid Build Coastguard Worker  cflags_objcc = []
25*6777b538SAndroid Build Coastguard Worker  defines = []
26*6777b538SAndroid Build Coastguard Worker  ldflags = []
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard Worker  if (!is_apple && sysroot != "" && current_os != "zos") {
29*6777b538SAndroid Build Coastguard Worker    # Pass the sysroot to all C compiler variants, the assembler, and linker.
30*6777b538SAndroid Build Coastguard Worker    sysroot_flags = [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ]
31*6777b538SAndroid Build Coastguard Worker    if (is_linux || is_chromeos) {
32*6777b538SAndroid Build Coastguard Worker      # This is here so that all files get recompiled after a sysroot roll and
33*6777b538SAndroid Build Coastguard Worker      # when turning the sysroot on or off. (defines are passed via the command
34*6777b538SAndroid Build Coastguard Worker      # line, and build system rebuilds things when their commandline
35*6777b538SAndroid Build Coastguard Worker      # changes). Nothing should ever read this define.
36*6777b538SAndroid Build Coastguard Worker      sysroot_key =
37*6777b538SAndroid Build Coastguard Worker          exec_script("//build/linux/sysroot_scripts/install-sysroot.py",
38*6777b538SAndroid Build Coastguard Worker                      [ "--print-key=$current_cpu" ],
39*6777b538SAndroid Build Coastguard Worker                      "trim string",
40*6777b538SAndroid Build Coastguard Worker                      [ "//build/linux/sysroot_scripts/sysroots.json" ])
41*6777b538SAndroid Build Coastguard Worker      defines += [ "CR_SYSROOT_KEY=$sysroot_key" ]
42*6777b538SAndroid Build Coastguard Worker    }
43*6777b538SAndroid Build Coastguard Worker    asmflags += sysroot_flags
44*6777b538SAndroid Build Coastguard Worker    ldflags += sysroot_flags
45*6777b538SAndroid Build Coastguard Worker
46*6777b538SAndroid Build Coastguard Worker    # When use_custom_libcxx=true, some -isystem flags get passed to
47*6777b538SAndroid Build Coastguard Worker    # cflags_cc to set up libc++ include paths.  We want to make sure
48*6777b538SAndroid Build Coastguard Worker    # the sysroot includes take lower precendence than the libc++
49*6777b538SAndroid Build Coastguard Worker    # ones, so they must appear later in the command line.  However,
50*6777b538SAndroid Build Coastguard Worker    # the gn reference states "These variant-specific versions of
51*6777b538SAndroid Build Coastguard Worker    # cflags* will be appended on the compiler command line after
52*6777b538SAndroid Build Coastguard Worker    # 'cflags'."  Because of this, we must set the sysroot flags for
53*6777b538SAndroid Build Coastguard Worker    # all cflags variants instead of using 'cflags' directly.
54*6777b538SAndroid Build Coastguard Worker    cflags_c += sysroot_flags
55*6777b538SAndroid Build Coastguard Worker    cflags_cc += sysroot_flags
56*6777b538SAndroid Build Coastguard Worker    cflags_objc += sysroot_flags
57*6777b538SAndroid Build Coastguard Worker    cflags_objcc += sysroot_flags
58*6777b538SAndroid Build Coastguard Worker  }
59*6777b538SAndroid Build Coastguard Worker}
60