xref: /aosp_15_r20/external/webrtc/third_party/abseil-cpp/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker# Copyright 2018 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# Flags specified here must not impact ABI. Code compiled with and without these
6*d9f75844SAndroid Build Coastguard Worker# opts will be linked together, and in some cases headers compiled with and
7*d9f75844SAndroid Build Coastguard Worker# without these options will be part of the same program.
8*d9f75844SAndroid Build Coastguard Worker
9*d9f75844SAndroid Build Coastguard Workerimport("//build/config/c++/c++.gni")
10*d9f75844SAndroid Build Coastguard Workerimport("//build/config/nacl/config.gni")
11*d9f75844SAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni")
12*d9f75844SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni")
13*d9f75844SAndroid Build Coastguard Workerimport("//build_overrides/build.gni")
14*d9f75844SAndroid Build Coastguard Workerimport("//third_party/abseil-cpp/absl.gni")
15*d9f75844SAndroid Build Coastguard Worker
16*d9f75844SAndroid Build Coastguard Workerconfig("absl_component_build") {
17*d9f75844SAndroid Build Coastguard Worker  defines = [ "ABSL_CONSUME_DLL" ]
18*d9f75844SAndroid Build Coastguard Worker}
19*d9f75844SAndroid Build Coastguard Worker
20*d9f75844SAndroid Build Coastguard Workerassert(!is_nacl || is_nacl_saigo,
21*d9f75844SAndroid Build Coastguard Worker       "base must not be built in most nacl toolchains")
22*d9f75844SAndroid Build Coastguard Worker
23*d9f75844SAndroid Build Coastguard Workercomponent("absl") {
24*d9f75844SAndroid Build Coastguard Worker  public_deps = [ ":absl_component_deps" ]
25*d9f75844SAndroid Build Coastguard Worker  if (is_component_build) {
26*d9f75844SAndroid Build Coastguard Worker    public_configs = [ ":absl_component_build" ]
27*d9f75844SAndroid Build Coastguard Worker
28*d9f75844SAndroid Build Coastguard Worker    if (is_win && is_clang) {
29*d9f75844SAndroid Build Coastguard Worker      if (current_cpu == "x64") {
30*d9f75844SAndroid Build Coastguard Worker        if (is_debug) {
31*d9f75844SAndroid Build Coastguard Worker          sources = [ "symbols_x64_dbg.def" ]
32*d9f75844SAndroid Build Coastguard Worker        } else {
33*d9f75844SAndroid Build Coastguard Worker          if (is_asan) {
34*d9f75844SAndroid Build Coastguard Worker            sources = [ "symbols_x64_rel_asan.def" ]
35*d9f75844SAndroid Build Coastguard Worker          } else {
36*d9f75844SAndroid Build Coastguard Worker            sources = [ "symbols_x64_rel.def" ]
37*d9f75844SAndroid Build Coastguard Worker          }
38*d9f75844SAndroid Build Coastguard Worker        }
39*d9f75844SAndroid Build Coastguard Worker      }
40*d9f75844SAndroid Build Coastguard Worker      if (current_cpu == "x86") {
41*d9f75844SAndroid Build Coastguard Worker        if (is_debug) {
42*d9f75844SAndroid Build Coastguard Worker          sources = [ "symbols_x86_dbg.def" ]
43*d9f75844SAndroid Build Coastguard Worker        } else {
44*d9f75844SAndroid Build Coastguard Worker          sources = [ "symbols_x86_rel.def" ]
45*d9f75844SAndroid Build Coastguard Worker        }
46*d9f75844SAndroid Build Coastguard Worker      }
47*d9f75844SAndroid Build Coastguard Worker      if (current_cpu == "arm64") {
48*d9f75844SAndroid Build Coastguard Worker        if (is_debug) {
49*d9f75844SAndroid Build Coastguard Worker          sources = [ "symbols_arm64_dbg.def" ]
50*d9f75844SAndroid Build Coastguard Worker        } else {
51*d9f75844SAndroid Build Coastguard Worker          sources = [ "symbols_arm64_rel.def" ]
52*d9f75844SAndroid Build Coastguard Worker        }
53*d9f75844SAndroid Build Coastguard Worker      }
54*d9f75844SAndroid Build Coastguard Worker    }
55*d9f75844SAndroid Build Coastguard Worker  }
56*d9f75844SAndroid Build Coastguard Worker}
57*d9f75844SAndroid Build Coastguard Worker
58*d9f75844SAndroid Build Coastguard Workergroup("absl_component_deps") {
59*d9f75844SAndroid Build Coastguard Worker  public_deps = [
60*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/algorithm:container",
61*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/base",
62*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/base:config",
63*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/base:core_headers",
64*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/cleanup",
65*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:btree",
66*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:fixed_array",
67*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:flat_hash_map",
68*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:flat_hash_set",
69*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:inlined_vector",
70*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:node_hash_map",
71*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/container:node_hash_set",
72*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/debugging:failure_signal_handler",
73*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/debugging:stacktrace",
74*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/debugging:symbolize",
75*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/functional:any_invocable",
76*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/functional:bind_front",
77*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/functional:function_ref",
78*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/hash",
79*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/log:die_if_null",
80*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/memory",
81*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/meta:type_traits",
82*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/numeric:bits",
83*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/numeric:int128",
84*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/random",
85*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/random:distributions",
86*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/status",
87*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/status:statusor",
88*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/strings",
89*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/strings:cord",
90*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/strings:str_format",
91*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/synchronization",
92*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/time",
93*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/types:optional",
94*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/types:span",
95*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/types:variant",
96*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/utility",
97*d9f75844SAndroid Build Coastguard Worker  ]
98*d9f75844SAndroid Build Coastguard Worker
99*d9f75844SAndroid Build Coastguard Worker  # The following dependencies currently don't build with NaCl.
100*d9f75844SAndroid Build Coastguard Worker  # TODO(https://crbug.com/1114625): Fix build errors and remove this section.
101*d9f75844SAndroid Build Coastguard Worker  if (is_nacl) {
102*d9f75844SAndroid Build Coastguard Worker    public_deps -=
103*d9f75844SAndroid Build Coastguard Worker        [ "//third_party/abseil-cpp/absl/debugging:failure_signal_handler" ]
104*d9f75844SAndroid Build Coastguard Worker  }
105*d9f75844SAndroid Build Coastguard Worker
106*d9f75844SAndroid Build Coastguard Worker  visibility = [ ":absl" ]
107*d9f75844SAndroid Build Coastguard Worker}
108*d9f75844SAndroid Build Coastguard Worker
109*d9f75844SAndroid Build Coastguard Workergroup("default") {
110*d9f75844SAndroid Build Coastguard Worker  deps = [
111*d9f75844SAndroid Build Coastguard Worker    "absl/types:any",
112*d9f75844SAndroid Build Coastguard Worker    "absl/types:bad_any_cast",
113*d9f75844SAndroid Build Coastguard Worker    "absl/types:bad_optional_access",
114*d9f75844SAndroid Build Coastguard Worker    "absl/types:optional",
115*d9f75844SAndroid Build Coastguard Worker    "absl/types:span",
116*d9f75844SAndroid Build Coastguard Worker  ]
117*d9f75844SAndroid Build Coastguard Worker}
118*d9f75844SAndroid Build Coastguard Worker
119*d9f75844SAndroid Build Coastguard Workerconfig("absl_include_config") {
120*d9f75844SAndroid Build Coastguard Worker  include_dirs = [ "." ]
121*d9f75844SAndroid Build Coastguard Worker}
122*d9f75844SAndroid Build Coastguard Worker
123*d9f75844SAndroid Build Coastguard Workerconfig("absl_define_config") {
124*d9f75844SAndroid Build Coastguard Worker  defines = [ "ABSL_ALLOCATOR_NOTHROW=1" ]
125*d9f75844SAndroid Build Coastguard Worker
126*d9f75844SAndroid Build Coastguard Worker  if (is_win && !use_custom_libcxx) {
127*d9f75844SAndroid Build Coastguard Worker    defines += [
128*d9f75844SAndroid Build Coastguard Worker      # See crbug.com/1101367: Acknowledge extended alignment when using
129*d9f75844SAndroid Build Coastguard Worker      # MSVC's standard library.
130*d9f75844SAndroid Build Coastguard Worker      "_ENABLE_EXTENDED_ALIGNED_STORAGE",
131*d9f75844SAndroid Build Coastguard Worker    ]
132*d9f75844SAndroid Build Coastguard Worker  }
133*d9f75844SAndroid Build Coastguard Worker}
134*d9f75844SAndroid Build Coastguard Worker
135*d9f75844SAndroid Build Coastguard Workerconfig("absl_default_cflags_cc") {
136*d9f75844SAndroid Build Coastguard Worker  cflags_cc = []
137*d9f75844SAndroid Build Coastguard Worker  if (is_clang) {
138*d9f75844SAndroid Build Coastguard Worker    cflags_cc += [
139*d9f75844SAndroid Build Coastguard Worker      # TODO(crbug.com/588506): Explicitly enable conversion warnings.
140*d9f75844SAndroid Build Coastguard Worker      "-Wbool-conversion",
141*d9f75844SAndroid Build Coastguard Worker      "-Wconstant-conversion",
142*d9f75844SAndroid Build Coastguard Worker      "-Wenum-conversion",
143*d9f75844SAndroid Build Coastguard Worker      "-Wint-conversion",
144*d9f75844SAndroid Build Coastguard Worker      "-Wliteral-conversion",
145*d9f75844SAndroid Build Coastguard Worker      "-Wnon-literal-null-conversion",
146*d9f75844SAndroid Build Coastguard Worker      "-Wnull-conversion",
147*d9f75844SAndroid Build Coastguard Worker      "-Wobjc-literal-conversion",
148*d9f75844SAndroid Build Coastguard Worker      "-Wstring-conversion",
149*d9f75844SAndroid Build Coastguard Worker    ]
150*d9f75844SAndroid Build Coastguard Worker    if (!is_nacl) {
151*d9f75844SAndroid Build Coastguard Worker      cflags_cc += [ "-Wbitfield-enum-conversion" ]
152*d9f75844SAndroid Build Coastguard Worker    }
153*d9f75844SAndroid Build Coastguard Worker  }
154*d9f75844SAndroid Build Coastguard Worker}
155*d9f75844SAndroid Build Coastguard Worker
156*d9f75844SAndroid Build Coastguard Workerconfig("absl_test_cflags_cc") {
157*d9f75844SAndroid Build Coastguard Worker  cflags_cc = []
158*d9f75844SAndroid Build Coastguard Worker  if (is_clang || !is_win) {
159*d9f75844SAndroid Build Coastguard Worker    cflags_cc += [
160*d9f75844SAndroid Build Coastguard Worker      "-Wno-conversion-null",
161*d9f75844SAndroid Build Coastguard Worker      "-Wno-missing-declarations",
162*d9f75844SAndroid Build Coastguard Worker      "-Wno-unused-function",
163*d9f75844SAndroid Build Coastguard Worker      "-Wno-unused-parameter",
164*d9f75844SAndroid Build Coastguard Worker      "-Wno-unused-private-field",
165*d9f75844SAndroid Build Coastguard Worker    ]
166*d9f75844SAndroid Build Coastguard Worker  }
167*d9f75844SAndroid Build Coastguard Worker  if (is_win) {
168*d9f75844SAndroid Build Coastguard Worker    cflags_cc += [
169*d9f75844SAndroid Build Coastguard Worker      "/wd4101",  # unreferenced local variable
170*d9f75844SAndroid Build Coastguard Worker    ]
171*d9f75844SAndroid Build Coastguard Worker  }
172*d9f75844SAndroid Build Coastguard Worker}
173*d9f75844SAndroid Build Coastguard Worker
174*d9f75844SAndroid Build Coastguard Workerconfig("absl_test_config") {
175*d9f75844SAndroid Build Coastguard Worker  cflags_cc = []
176*d9f75844SAndroid Build Coastguard Worker  if (is_win && !is_clang) {
177*d9f75844SAndroid Build Coastguard Worker    cflags_cc += [ "/wd4996" ]
178*d9f75844SAndroid Build Coastguard Worker  }
179*d9f75844SAndroid Build Coastguard Worker  if (is_clang) {
180*d9f75844SAndroid Build Coastguard Worker    cflags_cc += [
181*d9f75844SAndroid Build Coastguard Worker      "-Wno-deprecated-declarations",
182*d9f75844SAndroid Build Coastguard Worker      "-Wno-unused-private-field",
183*d9f75844SAndroid Build Coastguard Worker      "-Wno-unused-function",
184*d9f75844SAndroid Build Coastguard Worker    ]
185*d9f75844SAndroid Build Coastguard Worker  }
186*d9f75844SAndroid Build Coastguard Worker}
187*d9f75844SAndroid Build Coastguard Worker
188*d9f75844SAndroid Build Coastguard Workerif (build_with_chromium) {
189*d9f75844SAndroid Build Coastguard Worker  import("//testing/test.gni")
190*d9f75844SAndroid Build Coastguard Worker
191*d9f75844SAndroid Build Coastguard Worker  if (!is_component_build) {
192*d9f75844SAndroid Build Coastguard Worker    test("absl_tests") {
193*d9f75844SAndroid Build Coastguard Worker      testonly = true
194*d9f75844SAndroid Build Coastguard Worker      deps = [
195*d9f75844SAndroid Build Coastguard Worker        "absl/algorithm:algorithm_test",
196*d9f75844SAndroid Build Coastguard Worker        "absl/algorithm:container_test",
197*d9f75844SAndroid Build Coastguard Worker        "absl/base:config_test",
198*d9f75844SAndroid Build Coastguard Worker        "absl/base:prefetch_test",
199*d9f75844SAndroid Build Coastguard Worker        "absl/cleanup:cleanup_test",
200*d9f75844SAndroid Build Coastguard Worker        "absl/container:common_policy_traits_test",
201*d9f75844SAndroid Build Coastguard Worker        "absl/container:inlined_vector_test",
202*d9f75844SAndroid Build Coastguard Worker        "absl/container:node_slot_policy_test",
203*d9f75844SAndroid Build Coastguard Worker        "absl/container:sample_element_size_test",
204*d9f75844SAndroid Build Coastguard Worker        "absl/functional:any_invocable_test",
205*d9f75844SAndroid Build Coastguard Worker        "absl/hash:hash_test",
206*d9f75844SAndroid Build Coastguard Worker        "absl/hash:low_level_hash_test",
207*d9f75844SAndroid Build Coastguard Worker        "absl/log:basic_log_test",
208*d9f75844SAndroid Build Coastguard Worker        "absl/log:check_test",
209*d9f75844SAndroid Build Coastguard Worker        "absl/log:die_if_null_test",
210*d9f75844SAndroid Build Coastguard Worker        "absl/log:flags_test",
211*d9f75844SAndroid Build Coastguard Worker        "absl/log:globals_test",
212*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_entry_test",
213*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_format_test",
214*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_macro_hygiene_test",
215*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_modifier_methods_test",
216*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_sink_test",
217*d9f75844SAndroid Build Coastguard Worker        "absl/log:log_streamer_test",
218*d9f75844SAndroid Build Coastguard Worker        "absl/log:scoped_mock_log_test",
219*d9f75844SAndroid Build Coastguard Worker        "absl/log:stripping_test",
220*d9f75844SAndroid Build Coastguard Worker        "absl/log/internal:stderr_log_sink_test",
221*d9f75844SAndroid Build Coastguard Worker        "absl/memory:memory_test",
222*d9f75844SAndroid Build Coastguard Worker        "absl/meta:type_traits_test",
223*d9f75844SAndroid Build Coastguard Worker        "absl/profiling:exponential_biased_test",
224*d9f75844SAndroid Build Coastguard Worker        "absl/profiling:periodic_sampler_test",
225*d9f75844SAndroid Build Coastguard Worker        "absl/status:statusor_test",
226*d9f75844SAndroid Build Coastguard Worker        "absl/strings:ascii_test",
227*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_buffer_test",
228*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_data_edge_test",
229*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_rep_btree_navigator_test",
230*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_rep_btree_reader_test",
231*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_rep_btree_test",
232*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cord_rep_crc_test",
233*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_functions_test",
234*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_info_statistics_test",
235*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_info_test",
236*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_test",
237*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_update_scope_test",
238*d9f75844SAndroid Build Coastguard Worker        "absl/strings:cordz_update_tracker_test",
239*d9f75844SAndroid Build Coastguard Worker        "absl/strings:damerau_levenshtein_distance_test",
240*d9f75844SAndroid Build Coastguard Worker        "absl/strings:match_test",
241*d9f75844SAndroid Build Coastguard Worker        "absl/strings:str_replace_test",
242*d9f75844SAndroid Build Coastguard Worker        "absl/strings:string_view_test",
243*d9f75844SAndroid Build Coastguard Worker        "absl/types:optional_test",
244*d9f75844SAndroid Build Coastguard Worker        "absl/types:variant_test",
245*d9f75844SAndroid Build Coastguard Worker        "//third_party/googletest:gtest_main",
246*d9f75844SAndroid Build Coastguard Worker      ]
247*d9f75844SAndroid Build Coastguard Worker    }
248*d9f75844SAndroid Build Coastguard Worker  }
249*d9f75844SAndroid Build Coastguard Worker
250*d9f75844SAndroid Build Coastguard Worker  test("absl_hardening_tests") {
251*d9f75844SAndroid Build Coastguard Worker    testonly = true
252*d9f75844SAndroid Build Coastguard Worker    sources = [ "absl_hardening_test.cc" ]
253*d9f75844SAndroid Build Coastguard Worker    deps = [
254*d9f75844SAndroid Build Coastguard Worker      "//base/test:run_all_unittests",
255*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/base:config",
256*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/container:fixed_array",
257*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/container:inlined_vector",
258*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/strings",
259*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/types:optional",
260*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/types:span",
261*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/types:variant",
262*d9f75844SAndroid Build Coastguard Worker      "//third_party/googletest:gtest",
263*d9f75844SAndroid Build Coastguard Worker    ]
264*d9f75844SAndroid Build Coastguard Worker  }
265*d9f75844SAndroid Build Coastguard Worker}
266