xref: /aosp_15_r20/external/webrtc/third_party/abseil-cpp/absl/flags/BUILD.bazel (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1#
2# Copyright 2019 The Abseil Authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17load(
18    "//absl:copts/configure_copts.bzl",
19    "ABSL_DEFAULT_COPTS",
20    "ABSL_DEFAULT_LINKOPTS",
21    "ABSL_TEST_COPTS",
22)
23
24package(default_visibility = ["//visibility:public"])
25
26licenses(["notice"])
27
28cc_library(
29    name = "path_util",
30    hdrs = [
31        "internal/path_util.h",
32    ],
33    copts = ABSL_DEFAULT_COPTS,
34    linkopts = ABSL_DEFAULT_LINKOPTS,
35    visibility = [
36        "//absl/flags:__pkg__",
37    ],
38    deps = [
39        "//absl/base:config",
40        "//absl/strings",
41    ],
42)
43
44cc_library(
45    name = "program_name",
46    srcs = [
47        "internal/program_name.cc",
48    ],
49    hdrs = [
50        "internal/program_name.h",
51    ],
52    copts = ABSL_DEFAULT_COPTS,
53    linkopts = ABSL_DEFAULT_LINKOPTS,
54    visibility = [
55        "//absl/flags:__pkg__",
56        "//absl/log:__pkg__",
57    ],
58    deps = [
59        ":path_util",
60        "//absl/base:config",
61        "//absl/base:core_headers",
62        "//absl/strings",
63        "//absl/synchronization",
64    ],
65)
66
67cc_library(
68    name = "config",
69    srcs = [
70        "usage_config.cc",
71    ],
72    hdrs = [
73        "config.h",
74        "usage_config.h",
75    ],
76    copts = ABSL_DEFAULT_COPTS,
77    linkopts = ABSL_DEFAULT_LINKOPTS,
78    deps = [
79        ":path_util",
80        ":program_name",
81        "//absl/base:config",
82        "//absl/base:core_headers",
83        "//absl/strings",
84        "//absl/synchronization",
85    ],
86)
87
88cc_library(
89    name = "marshalling",
90    srcs = [
91        "marshalling.cc",
92    ],
93    hdrs = [
94        "marshalling.h",
95    ],
96    copts = ABSL_DEFAULT_COPTS,
97    linkopts = ABSL_DEFAULT_LINKOPTS,
98    deps = [
99        "//absl/base:config",
100        "//absl/base:core_headers",
101        "//absl/base:log_severity",
102        "//absl/strings",
103        "//absl/strings:str_format",
104        "//absl/types:optional",
105    ],
106)
107
108cc_library(
109    name = "commandlineflag_internal",
110    srcs = [
111        "internal/commandlineflag.cc",
112    ],
113    hdrs = [
114        "internal/commandlineflag.h",
115    ],
116    copts = ABSL_DEFAULT_COPTS,
117    linkopts = ABSL_DEFAULT_LINKOPTS,
118    visibility = [
119        "//visibility:private",
120    ],
121    deps = [
122        "//absl/base:config",
123        "//absl/base:fast_type_id",
124    ],
125)
126
127cc_library(
128    name = "commandlineflag",
129    srcs = [
130        "commandlineflag.cc",
131    ],
132    hdrs = [
133        "commandlineflag.h",
134    ],
135    copts = ABSL_DEFAULT_COPTS,
136    linkopts = ABSL_DEFAULT_LINKOPTS,
137    deps = [
138        ":commandlineflag_internal",
139        "//absl/base:config",
140        "//absl/base:fast_type_id",
141        "//absl/strings",
142        "//absl/types:optional",
143    ],
144)
145
146cc_library(
147    name = "private_handle_accessor",
148    srcs = [
149        "internal/private_handle_accessor.cc",
150    ],
151    hdrs = [
152        "internal/private_handle_accessor.h",
153    ],
154    copts = ABSL_DEFAULT_COPTS,
155    linkopts = ABSL_DEFAULT_LINKOPTS,
156    visibility = [
157        "//absl/flags:__pkg__",
158    ],
159    deps = [
160        ":commandlineflag",
161        ":commandlineflag_internal",
162        "//absl/base:config",
163        "//absl/strings",
164    ],
165)
166
167cc_library(
168    name = "reflection",
169    srcs = [
170        "reflection.cc",
171    ],
172    hdrs = [
173        "internal/registry.h",
174        "reflection.h",
175    ],
176    copts = ABSL_DEFAULT_COPTS,
177    linkopts = ABSL_DEFAULT_LINKOPTS,
178    deps = [
179        ":commandlineflag",
180        ":commandlineflag_internal",
181        ":config",
182        ":private_handle_accessor",
183        "//absl/base:config",
184        "//absl/base:core_headers",
185        "//absl/container:flat_hash_map",
186        "//absl/strings",
187        "//absl/synchronization",
188    ],
189)
190
191cc_library(
192    name = "flag_internal",
193    srcs = [
194        "internal/flag.cc",
195    ],
196    hdrs = [
197        "internal/flag.h",
198        "internal/sequence_lock.h",
199    ],
200    copts = ABSL_DEFAULT_COPTS,
201    linkopts = ABSL_DEFAULT_LINKOPTS,
202    visibility = ["//absl/base:__subpackages__"],
203    deps = [
204        ":commandlineflag",
205        ":commandlineflag_internal",
206        ":config",
207        ":marshalling",
208        ":reflection",
209        "//absl/base",
210        "//absl/base:config",
211        "//absl/base:core_headers",
212        "//absl/base:dynamic_annotations",
213        "//absl/memory",
214        "//absl/meta:type_traits",
215        "//absl/strings",
216        "//absl/synchronization",
217        "//absl/utility",
218    ],
219)
220
221cc_library(
222    name = "flag",
223    srcs = [
224        "flag.cc",
225        "internal/flag_msvc.inc",
226    ],
227    hdrs = [
228        "declare.h",
229        "flag.h",
230    ],
231    copts = ABSL_DEFAULT_COPTS,
232    linkopts = ABSL_DEFAULT_LINKOPTS,
233    deps = [
234        ":config",
235        ":flag_internal",
236        ":reflection",
237        "//absl/base",
238        "//absl/base:config",
239        "//absl/base:core_headers",
240        "//absl/strings",
241    ],
242)
243
244cc_library(
245    name = "usage_internal",
246    srcs = [
247        "internal/usage.cc",
248    ],
249    hdrs = [
250        "internal/usage.h",
251    ],
252    copts = ABSL_DEFAULT_COPTS,
253    linkopts = ABSL_DEFAULT_LINKOPTS,
254    visibility = [
255        "//absl/flags:__pkg__",
256    ],
257    deps = [
258        ":commandlineflag",
259        ":config",
260        ":flag",
261        ":flag_internal",
262        ":path_util",
263        ":private_handle_accessor",
264        ":program_name",
265        ":reflection",
266        "//absl/base:config",
267        "//absl/base:core_headers",
268        "//absl/container:flat_hash_map",
269        "//absl/strings",
270    ],
271)
272
273cc_library(
274    name = "usage",
275    srcs = [
276        "usage.cc",
277    ],
278    hdrs = [
279        "usage.h",
280    ],
281    copts = ABSL_DEFAULT_COPTS,
282    linkopts = ABSL_DEFAULT_LINKOPTS,
283    deps = [
284        ":usage_internal",
285        "//absl/base:config",
286        "//absl/base:core_headers",
287        "//absl/strings",
288        "//absl/synchronization",
289    ],
290)
291
292cc_library(
293    name = "parse",
294    srcs = ["parse.cc"],
295    hdrs = [
296        "internal/parse.h",
297        "parse.h",
298    ],
299    copts = ABSL_DEFAULT_COPTS,
300    linkopts = ABSL_DEFAULT_LINKOPTS,
301    deps = [
302        ":commandlineflag",
303        ":commandlineflag_internal",
304        ":config",
305        ":flag",
306        ":flag_internal",
307        ":private_handle_accessor",
308        ":program_name",
309        ":reflection",
310        ":usage",
311        ":usage_internal",
312        "//absl/base:config",
313        "//absl/base:core_headers",
314        "//absl/strings",
315        "//absl/synchronization",
316    ],
317)
318
319############################################################################
320# Unit tests in alphabetical order.
321
322cc_test(
323    name = "commandlineflag_test",
324    size = "small",
325    srcs = [
326        "commandlineflag_test.cc",
327    ],
328    copts = ABSL_TEST_COPTS,
329    linkopts = ABSL_DEFAULT_LINKOPTS,
330    tags = [
331        "no_test:os:android",
332        "no_test:os:ios",
333        "no_test_android",
334        "no_test_ios",
335        "no_test_wasm",
336    ],
337    deps = [
338        ":commandlineflag",
339        ":commandlineflag_internal",
340        ":config",
341        ":flag",
342        ":private_handle_accessor",
343        ":reflection",
344        "//absl/memory",
345        "//absl/strings",
346        "@com_google_googletest//:gtest_main",
347    ],
348)
349
350cc_test(
351    name = "config_test",
352    size = "small",
353    srcs = [
354        "config_test.cc",
355    ],
356    copts = ABSL_TEST_COPTS,
357    linkopts = ABSL_DEFAULT_LINKOPTS,
358    deps = [
359        ":config",
360        "@com_google_googletest//:gtest_main",
361    ],
362)
363
364cc_test(
365    name = "flag_test",
366    size = "small",
367    srcs = [
368        "flag_test.cc",
369        "flag_test_defs.cc",
370    ],
371    copts = ABSL_TEST_COPTS,
372    linkopts = ABSL_DEFAULT_LINKOPTS,
373    tags = [
374        "no_test:os:android",
375        "no_test:os:ios",
376        "no_test_android",
377        "no_test_ios",
378        "no_test_wasm",
379    ],
380    deps = [
381        ":config",
382        ":flag",
383        ":flag_internal",
384        ":marshalling",
385        ":reflection",
386        "//absl/base:core_headers",
387        "//absl/base:malloc_internal",
388        "//absl/strings",
389        "//absl/time",
390        "@com_google_googletest//:gtest_main",
391    ],
392)
393
394cc_binary(
395    name = "flag_benchmark",
396    testonly = 1,
397    srcs = [
398        "flag_benchmark.cc",
399    ],
400    copts = ABSL_TEST_COPTS,
401    linkopts = select({
402        "//conditions:default": [],
403    }) + ABSL_DEFAULT_LINKOPTS,
404    tags = ["benchmark"],
405    visibility = ["//visibility:private"],
406    deps = [
407        "flag_benchmark.lds",
408        ":flag",
409        ":marshalling",
410        ":parse",
411        ":reflection",
412        "//absl/strings",
413        "//absl/time",
414        "//absl/types:optional",
415        "@com_github_google_benchmark//:benchmark_main",
416    ],
417)
418
419cc_test(
420    name = "marshalling_test",
421    size = "small",
422    srcs = [
423        "marshalling_test.cc",
424    ],
425    copts = ABSL_TEST_COPTS,
426    linkopts = ABSL_DEFAULT_LINKOPTS,
427    deps = [
428        ":marshalling",
429        "@com_google_googletest//:gtest_main",
430    ],
431)
432
433cc_test(
434    name = "parse_test",
435    size = "small",
436    srcs = [
437        "parse_test.cc",
438    ],
439    copts = ABSL_TEST_COPTS,
440    linkopts = ABSL_DEFAULT_LINKOPTS,
441    tags = [
442        "no_test:os:android",
443        "no_test:os:ios",
444        "no_test_android",
445        "no_test_ios",
446        "no_test_wasm",
447    ],
448    deps = [
449        ":flag",
450        ":parse",
451        ":reflection",
452        ":usage_internal",
453        "//absl/base:raw_logging_internal",
454        "//absl/base:scoped_set_env",
455        "//absl/strings",
456        "//absl/types:span",
457        "@com_google_googletest//:gtest_main",
458    ],
459)
460
461cc_test(
462    name = "path_util_test",
463    size = "small",
464    srcs = [
465        "internal/path_util_test.cc",
466    ],
467    copts = ABSL_TEST_COPTS,
468    linkopts = ABSL_DEFAULT_LINKOPTS,
469    deps = [
470        ":path_util",
471        "@com_google_googletest//:gtest_main",
472    ],
473)
474
475cc_test(
476    name = "program_name_test",
477    size = "small",
478    srcs = [
479        "internal/program_name_test.cc",
480    ],
481    copts = ABSL_TEST_COPTS,
482    linkopts = ABSL_DEFAULT_LINKOPTS,
483    tags = ["no_test_wasm"],
484    deps = [
485        ":program_name",
486        "//absl/strings",
487        "@com_google_googletest//:gtest_main",
488    ],
489)
490
491cc_test(
492    name = "reflection_test",
493    size = "small",
494    srcs = [
495        "reflection_test.cc",
496    ],
497    copts = ABSL_TEST_COPTS,
498    linkopts = ABSL_DEFAULT_LINKOPTS,
499    tags = [
500        "no_test:os:android",
501        "no_test:os:ios",
502        "no_test_android",
503        "no_test_ios",
504        "no_test_wasm",
505    ],
506    deps = [
507        ":commandlineflag_internal",
508        ":flag",
509        ":marshalling",
510        ":reflection",
511        ":usage_internal",
512        "//absl/memory",
513        "//absl/strings",
514        "@com_google_googletest//:gtest_main",
515    ],
516)
517
518cc_test(
519    name = "sequence_lock_test",
520    size = "small",
521    timeout = "moderate",
522    srcs = [
523        "internal/sequence_lock_test.cc",
524    ],
525    copts = ABSL_TEST_COPTS,
526    linkopts = ABSL_DEFAULT_LINKOPTS,
527    shard_count = 31,
528    tags = ["no_test_wasm"],
529    deps = [
530        ":flag_internal",
531        "//absl/base",
532        "//absl/container:fixed_array",
533        "//absl/time",
534        "@com_google_googletest//:gtest_main",
535    ],
536)
537
538cc_test(
539    name = "usage_config_test",
540    size = "small",
541    srcs = [
542        "usage_config_test.cc",
543    ],
544    copts = ABSL_TEST_COPTS,
545    linkopts = ABSL_DEFAULT_LINKOPTS,
546    deps = [
547        ":config",
548        ":path_util",
549        ":program_name",
550        "//absl/strings",
551        "@com_google_googletest//:gtest_main",
552    ],
553)
554
555cc_test(
556    name = "usage_test",
557    size = "small",
558    srcs = [
559        "internal/usage_test.cc",
560    ],
561    copts = ABSL_TEST_COPTS,
562    linkopts = ABSL_DEFAULT_LINKOPTS,
563    tags = [
564        "no_test:os:android",
565        "no_test:os:ios",
566        "no_test_android",
567        "no_test_ios",
568        "no_test_wasm",
569    ],
570    deps = [
571        ":config",
572        ":flag",
573        ":parse",
574        ":path_util",
575        ":program_name",
576        ":reflection",
577        ":usage",
578        ":usage_internal",
579        "//absl/strings",
580        "@com_google_googletest//:gtest",
581    ],
582)
583