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