xref: /aosp_15_r20/external/cronet/third_party/abseil-cpp/absl.gni (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2020 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 Worker# This file contains the definition of the template absl_source_set which
6*6777b538SAndroid Build Coastguard Worker# should be the only type of target needed in abseil's BUILD.gn files.
7*6777b538SAndroid Build Coastguard Worker# This template will correctly set "configs" and "public_configs" in order
8*6777b538SAndroid Build Coastguard Worker# to correctly compile abseil in Chromium.
9*6777b538SAndroid Build Coastguard Worker#
10*6777b538SAndroid Build Coastguard Worker# Usage:
11*6777b538SAndroid Build Coastguard Worker# Most of the times its usage will be similar to the example below but all
12*6777b538SAndroid Build Coastguard Worker# the arguments avilable in source_set are also available for absl_source_set.
13*6777b538SAndroid Build Coastguard Worker#
14*6777b538SAndroid Build Coastguard Worker#  absl_source_set("foo") {
15*6777b538SAndroid Build Coastguard Worker#    sources = [ "foo.cc" ]
16*6777b538SAndroid Build Coastguard Worker#    public = [ "foo.h" ]
17*6777b538SAndroid Build Coastguard Worker#    deps = [ ":bar" ]
18*6777b538SAndroid Build Coastguard Worker#  }
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Workerimport("//build_overrides/build.gni")
21*6777b538SAndroid Build Coastguard Worker
22*6777b538SAndroid Build Coastguard Workerdeclare_args() {
23*6777b538SAndroid Build Coastguard Worker  absl_build_tests = build_with_chromium
24*6777b538SAndroid Build Coastguard Worker}
25*6777b538SAndroid Build Coastguard Worker
26*6777b538SAndroid Build Coastguard Workertemplate("absl_source_set") {
27*6777b538SAndroid Build Coastguard Worker  source_set(target_name) {
28*6777b538SAndroid Build Coastguard Worker    if (defined(invoker.testonly) && invoker.testonly && !absl_build_tests) {
29*6777b538SAndroid Build Coastguard Worker      not_needed(invoker, "*")
30*6777b538SAndroid Build Coastguard Worker    } else {
31*6777b538SAndroid Build Coastguard Worker      forward_variables_from(invoker, "*")
32*6777b538SAndroid Build Coastguard Worker      configs -= [ "//build/config/compiler:chromium_code" ]
33*6777b538SAndroid Build Coastguard Worker      configs += [
34*6777b538SAndroid Build Coastguard Worker        "//build/config/compiler:no_chromium_code",
35*6777b538SAndroid Build Coastguard Worker        "//build/config/compiler:prevent_unsafe_narrowing",
36*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_default_cflags_cc",
37*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_define_config",
38*6777b538SAndroid Build Coastguard Worker      ]
39*6777b538SAndroid Build Coastguard Worker
40*6777b538SAndroid Build Coastguard Worker      if (is_component_build) {
41*6777b538SAndroid Build Coastguard Worker        defines = [ "ABSL_BUILD_DLL" ]
42*6777b538SAndroid Build Coastguard Worker        if (!is_win && current_os != "aix") {
43*6777b538SAndroid Build Coastguard Worker          configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
44*6777b538SAndroid Build Coastguard Worker          configs += [ "//build/config/gcc:symbol_visibility_default" ]
45*6777b538SAndroid Build Coastguard Worker        }
46*6777b538SAndroid Build Coastguard Worker      }
47*6777b538SAndroid Build Coastguard Worker
48*6777b538SAndroid Build Coastguard Worker      if (!defined(public_configs)) {
49*6777b538SAndroid Build Coastguard Worker        public_configs = []
50*6777b538SAndroid Build Coastguard Worker      }
51*6777b538SAndroid Build Coastguard Worker      public_configs += [
52*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_include_config",
53*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_public_cflags_cc",
54*6777b538SAndroid Build Coastguard Worker      ]
55*6777b538SAndroid Build Coastguard Worker
56*6777b538SAndroid Build Coastguard Worker      if (!defined(visibility)) {
57*6777b538SAndroid Build Coastguard Worker        # Within Chromium builds, restrict direct visibility of Abseil sources, so
58*6777b538SAndroid Build Coastguard Worker        # users must depend on //third_party/abseil-cpp:absl. This prevents use of
59*6777b538SAndroid Build Coastguard Worker        # banned targets like absl/types:any. A few targets require exceptions.
60*6777b538SAndroid Build Coastguard Worker        # TODO(crbug.com/1096380): Consider replacing build_with_chromium with
61*6777b538SAndroid Build Coastguard Worker        # is_component_build for a narrower, more accurate condition.
62*6777b538SAndroid Build Coastguard Worker        if (build_with_chromium) {
63*6777b538SAndroid Build Coastguard Worker          visibility = [
64*6777b538SAndroid Build Coastguard Worker            # Abseil itself.
65*6777b538SAndroid Build Coastguard Worker            "//third_party/abseil-cpp/*",
66*6777b538SAndroid Build Coastguard Worker
67*6777b538SAndroid Build Coastguard Worker            # GTest.  It unconditionally #includes any.h if pretty-print support
68*6777b538SAndroid Build Coastguard Worker            # for absl types is enabled.
69*6777b538SAndroid Build Coastguard Worker            "//third_party/googletest/*",
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker            # WebRTC binary to run PSNR and SSIM video quality analysis. It
72*6777b538SAndroid Build Coastguard Worker            # statically links absl and it is used by "browser_tests" when
73*6777b538SAndroid Build Coastguard Worker            # is_component_build=false but it cannot depend on the absl
74*6777b538SAndroid Build Coastguard Worker            # component because it uses absl/flags.
75*6777b538SAndroid Build Coastguard Worker            "//third_party/webrtc/rtc_tools:frame_analyzer",
76*6777b538SAndroid Build Coastguard Worker
77*6777b538SAndroid Build Coastguard Worker            # WebRTC binaries used by //:chromium_builder_asan. They both
78*6777b538SAndroid Build Coastguard Worker            # statically link absl (because they depend on absl/flags) and are
79*6777b538SAndroid Build Coastguard Worker            # used by Chromium only when is_component_build=false.
80*6777b538SAndroid Build Coastguard Worker            "//third_party/webrtc/rtc_tools:rtp_generator",
81*6777b538SAndroid Build Coastguard Worker            "//third_party/webrtc/rtc_tools:video_replay",
82*6777b538SAndroid Build Coastguard Worker
83*6777b538SAndroid Build Coastguard Worker            # Not used by Chromium directly.
84*6777b538SAndroid Build Coastguard Worker            "//chromecast/internal/*",
85*6777b538SAndroid Build Coastguard Worker            "//libassistant/*",
86*6777b538SAndroid Build Coastguard Worker
87*6777b538SAndroid Build Coastguard Worker            # Not built into Chrome.
88*6777b538SAndroid Build Coastguard Worker            "//components/optimization_guide/internal/*",
89*6777b538SAndroid Build Coastguard Worker          ]
90*6777b538SAndroid Build Coastguard Worker        } else {
91*6777b538SAndroid Build Coastguard Worker          visibility = [ "*" ]
92*6777b538SAndroid Build Coastguard Worker        }
93*6777b538SAndroid Build Coastguard Worker      }
94*6777b538SAndroid Build Coastguard Worker    }
95*6777b538SAndroid Build Coastguard Worker  }
96*6777b538SAndroid Build Coastguard Worker}
97*6777b538SAndroid Build Coastguard Worker
98*6777b538SAndroid Build Coastguard Workertemplate("absl_test") {
99*6777b538SAndroid Build Coastguard Worker  source_set(target_name) {
100*6777b538SAndroid Build Coastguard Worker    if (!absl_build_tests) {
101*6777b538SAndroid Build Coastguard Worker      not_needed(invoker, "*")
102*6777b538SAndroid Build Coastguard Worker    } else {
103*6777b538SAndroid Build Coastguard Worker      forward_variables_from(invoker, "*")
104*6777b538SAndroid Build Coastguard Worker      testonly = true
105*6777b538SAndroid Build Coastguard Worker      configs -= [ "//build/config/compiler:chromium_code" ]
106*6777b538SAndroid Build Coastguard Worker      configs += [
107*6777b538SAndroid Build Coastguard Worker        "//build/config/compiler:no_chromium_code",
108*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_default_cflags_cc",
109*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_define_config",
110*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_test_config",
111*6777b538SAndroid Build Coastguard Worker      ]
112*6777b538SAndroid Build Coastguard Worker
113*6777b538SAndroid Build Coastguard Worker      if (!defined(public_configs)) {
114*6777b538SAndroid Build Coastguard Worker        public_configs = []
115*6777b538SAndroid Build Coastguard Worker      }
116*6777b538SAndroid Build Coastguard Worker      public_configs += [
117*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_include_config",
118*6777b538SAndroid Build Coastguard Worker        "//third_party/abseil-cpp:absl_public_cflags_cc",
119*6777b538SAndroid Build Coastguard Worker      ]
120*6777b538SAndroid Build Coastguard Worker
121*6777b538SAndroid Build Coastguard Worker      visibility = [ "//third_party/abseil-cpp/:*" ]
122*6777b538SAndroid Build Coastguard Worker      deps += [
123*6777b538SAndroid Build Coastguard Worker        "//third_party/googletest:gmock",
124*6777b538SAndroid Build Coastguard Worker        "//third_party/googletest:gtest",
125*6777b538SAndroid Build Coastguard Worker      ]
126*6777b538SAndroid Build Coastguard Worker    }
127*6777b538SAndroid Build Coastguard Worker  }
128*6777b538SAndroid Build Coastguard Worker}
129