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