summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/posix/BUILD.gn
blob: a49254f019e0f9ff50799baa0d5f9e8747b2945d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 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/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("//build/linux/sysroot_scripts/install-sysroot.py",
                      [ "--print-hash=$target_cpu" ],
                      "trim string",
                      [ "//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
  }
}