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