xref: /aosp_15_r20/external/abseil-cpp/absl/flags/BUILD.bazel (revision 9356374a3709195abf420251b3e825997ff56c0f)
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        ":parse",
394        ":reflection",
395        "//absl/base:core_headers",
396        "//absl/base:malloc_internal",
397        "//absl/base:raw_logging_internal",
398        "//absl/numeric:int128",
399        "//absl/strings",
400        "//absl/time",
401        "//absl/types:optional",
402        "@com_google_googletest//:gtest",
403        "@com_google_googletest//:gtest_main",
404    ],
405)
406
407cc_binary(
408    name = "flag_benchmark",
409    testonly = True,
410    srcs = [
411        "flag_benchmark.cc",
412    ],
413    copts = ABSL_TEST_COPTS,
414    linkopts = select({
415        "//conditions:default": [],
416    }) + ABSL_DEFAULT_LINKOPTS,
417    tags = ["benchmark"],
418    visibility = ["//visibility:private"],
419    deps = [
420        "flag_benchmark.lds",
421        ":flag",
422        ":marshalling",
423        ":parse",
424        ":reflection",
425        "//absl/strings",
426        "//absl/time",
427        "//absl/types:optional",
428        "@com_github_google_benchmark//:benchmark_main",
429    ],
430)
431
432cc_test(
433    name = "marshalling_test",
434    size = "small",
435    srcs = [
436        "marshalling_test.cc",
437    ],
438    copts = ABSL_TEST_COPTS,
439    linkopts = ABSL_DEFAULT_LINKOPTS,
440    deps = [
441        ":marshalling",
442        "@com_google_googletest//:gtest",
443        "@com_google_googletest//:gtest_main",
444    ],
445)
446
447cc_test(
448    name = "parse_test",
449    size = "small",
450    timeout = "moderate",
451    srcs = [
452        "parse_test.cc",
453    ],
454    copts = ABSL_TEST_COPTS,
455    linkopts = ABSL_DEFAULT_LINKOPTS,
456    tags = [
457        "no_test:os:android",
458        "no_test:os:ios",
459        "no_test_android",
460        "no_test_ios",
461        "no_test_wasm",
462    ],
463    deps = [
464        ":config",
465        ":flag",
466        ":parse",
467        ":reflection",
468        ":usage_internal",
469        "//absl/base:scoped_set_env",
470        "//absl/log",
471        "//absl/strings",
472        "//absl/types:span",
473        "@com_google_googletest//:gtest",
474        "@com_google_googletest//:gtest_main",
475    ],
476)
477
478cc_test(
479    name = "path_util_test",
480    size = "small",
481    srcs = [
482        "internal/path_util_test.cc",
483    ],
484    copts = ABSL_TEST_COPTS,
485    linkopts = ABSL_DEFAULT_LINKOPTS,
486    deps = [
487        ":path_util",
488        "@com_google_googletest//:gtest",
489        "@com_google_googletest//:gtest_main",
490    ],
491)
492
493cc_test(
494    name = "program_name_test",
495    size = "small",
496    srcs = [
497        "internal/program_name_test.cc",
498    ],
499    copts = ABSL_TEST_COPTS,
500    linkopts = ABSL_DEFAULT_LINKOPTS,
501    tags = ["no_test_wasm"],
502    deps = [
503        ":program_name",
504        "//absl/strings",
505        "@com_google_googletest//:gtest",
506        "@com_google_googletest//:gtest_main",
507    ],
508)
509
510cc_test(
511    name = "reflection_test",
512    size = "small",
513    srcs = [
514        "reflection_test.cc",
515    ],
516    copts = ABSL_TEST_COPTS,
517    linkopts = ABSL_DEFAULT_LINKOPTS,
518    tags = [
519        "no_test:os:android",
520        "no_test:os:ios",
521        "no_test_android",
522        "no_test_ios",
523        "no_test_wasm",
524    ],
525    deps = [
526        ":config",
527        ":flag",
528        ":reflection",
529        "//absl/memory",
530        "//absl/strings",
531        "@com_google_googletest//:gtest",
532        "@com_google_googletest//:gtest_main",
533    ],
534)
535
536cc_test(
537    name = "sequence_lock_test",
538    size = "small",
539    timeout = "moderate",
540    srcs = [
541        "internal/sequence_lock_test.cc",
542    ],
543    copts = ABSL_TEST_COPTS,
544    linkopts = ABSL_DEFAULT_LINKOPTS,
545    shard_count = 31,
546    tags = ["no_test_wasm"],
547    deps = [
548        ":flag_internal",
549        "//absl/base",
550        "//absl/container:fixed_array",
551        "//absl/time",
552        "@com_google_googletest//:gtest",
553        "@com_google_googletest//:gtest_main",
554    ],
555)
556
557cc_test(
558    name = "usage_config_test",
559    size = "small",
560    srcs = [
561        "usage_config_test.cc",
562    ],
563    copts = ABSL_TEST_COPTS,
564    linkopts = ABSL_DEFAULT_LINKOPTS,
565    deps = [
566        ":config",
567        ":path_util",
568        ":program_name",
569        "//absl/strings",
570        "@com_google_googletest//:gtest",
571        "@com_google_googletest//:gtest_main",
572    ],
573)
574
575cc_test(
576    name = "usage_test",
577    size = "small",
578    srcs = [
579        "internal/usage_test.cc",
580    ],
581    copts = ABSL_TEST_COPTS,
582    linkopts = ABSL_DEFAULT_LINKOPTS,
583    tags = [
584        "no_test:os:android",
585        "no_test:os:ios",
586        "no_test_android",
587        "no_test_ios",
588        "no_test_wasm",
589    ],
590    deps = [
591        ":config",
592        ":flag",
593        ":parse",
594        ":path_util",
595        ":program_name",
596        ":reflection",
597        ":usage",
598        ":usage_internal",
599        "//absl/strings",
600        "@com_google_googletest//:gtest",
601    ],
602)
603