• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    srcs = [
233        "flag.cc",
234        "internal/flag_msvc.inc",
235    ],
236    hdrs = [
237        "declare.h",
238        "flag.h",
239    ],
240    copts = ABSL_DEFAULT_COPTS,
241    linkopts = ABSL_DEFAULT_LINKOPTS,
242    deps = [
243        ":config",
244        ":flag_internal",
245        ":reflection",
246        "//absl/base",
247        "//absl/base:config",
248        "//absl/base:core_headers",
249        "//absl/strings",
250    ],
251)
252
253cc_library(
254    name = "usage_internal",
255    srcs = [
256        "internal/usage.cc",
257    ],
258    hdrs = [
259        "internal/usage.h",
260    ],
261    copts = ABSL_DEFAULT_COPTS,
262    linkopts = ABSL_DEFAULT_LINKOPTS,
263    visibility = [
264        "//absl/flags:__pkg__",
265    ],
266    deps = [
267        ":commandlineflag",
268        ":config",
269        ":flag",
270        ":flag_internal",
271        ":path_util",
272        ":private_handle_accessor",
273        ":program_name",
274        ":reflection",
275        "//absl/base:config",
276        "//absl/base:core_headers",
277        "//absl/strings",
278        "//absl/synchronization",
279    ],
280)
281
282cc_library(
283    name = "usage",
284    srcs = [
285        "usage.cc",
286    ],
287    hdrs = [
288        "usage.h",
289    ],
290    copts = ABSL_DEFAULT_COPTS,
291    linkopts = ABSL_DEFAULT_LINKOPTS,
292    deps = [
293        ":usage_internal",
294        "//absl/base:config",
295        "//absl/base:core_headers",
296        "//absl/base:raw_logging_internal",
297        "//absl/strings",
298        "//absl/synchronization",
299    ],
300)
301
302cc_library(
303    name = "parse",
304    srcs = ["parse.cc"],
305    hdrs = [
306        "internal/parse.h",
307        "parse.h",
308    ],
309    copts = ABSL_DEFAULT_COPTS,
310    linkopts = ABSL_DEFAULT_LINKOPTS,
311    deps = [
312        ":commandlineflag",
313        ":commandlineflag_internal",
314        ":config",
315        ":flag",
316        ":flag_internal",
317        ":private_handle_accessor",
318        ":program_name",
319        ":reflection",
320        ":usage",
321        ":usage_internal",
322        "//absl/algorithm:container",
323        "//absl/base:config",
324        "//absl/base:core_headers",
325        "//absl/strings",
326        "//absl/synchronization",
327    ],
328)
329
330############################################################################
331# Unit tests in alphabetical order.
332
333cc_test(
334    name = "commandlineflag_test",
335    size = "small",
336    srcs = [
337        "commandlineflag_test.cc",
338    ],
339    copts = ABSL_TEST_COPTS,
340    linkopts = ABSL_DEFAULT_LINKOPTS,
341    tags = [
342        "no_test:os:android",
343        "no_test:os:ios",
344        "no_test_android",
345        "no_test_ios",
346        "no_test_wasm",
347    ],
348    deps = [
349        ":commandlineflag",
350        ":commandlineflag_internal",
351        ":config",
352        ":flag",
353        ":private_handle_accessor",
354        ":reflection",
355        "//absl/memory",
356        "//absl/strings",
357        "@com_google_googletest//:gtest",
358        "@com_google_googletest//:gtest_main",
359    ],
360)
361
362cc_test(
363    name = "config_test",
364    size = "small",
365    srcs = [
366        "config_test.cc",
367    ],
368    copts = ABSL_TEST_COPTS,
369    linkopts = ABSL_DEFAULT_LINKOPTS,
370    deps = [
371        ":config",
372        "@com_google_googletest//:gtest",
373        "@com_google_googletest//:gtest_main",
374    ],
375)
376
377cc_test(
378    name = "flag_test",
379    size = "small",
380    srcs = [
381        "flag_test.cc",
382        "flag_test_defs.cc",
383    ],
384    copts = ABSL_TEST_COPTS,
385    linkopts = ABSL_DEFAULT_LINKOPTS,
386    tags = [
387        "no_test:os:android",
388        "no_test:os:ios",
389        "no_test_android",
390        "no_test_ios",
391        "no_test_wasm",
392    ],
393    deps = [
394        ":config",
395        ":flag",
396        ":flag_internal",
397        ":marshalling",
398        ":reflection",
399        "//absl/base:core_headers",
400        "//absl/base:malloc_internal",
401        "//absl/numeric:int128",
402        "//absl/strings",
403        "//absl/time",
404        "@com_google_googletest//:gtest",
405        "@com_google_googletest//:gtest_main",
406    ],
407)
408
409cc_binary(
410    name = "flag_benchmark",
411    testonly = 1,
412    srcs = [
413        "flag_benchmark.cc",
414    ],
415    copts = ABSL_TEST_COPTS,
416    linkopts = select({
417        "//conditions:default": [],
418    }) + ABSL_DEFAULT_LINKOPTS,
419    tags = ["benchmark"],
420    visibility = ["//visibility:private"],
421    deps = [
422        "flag_benchmark.lds",
423        ":flag",
424        ":marshalling",
425        ":parse",
426        ":reflection",
427        "//absl/strings",
428        "//absl/time",
429        "//absl/types:optional",
430        "@com_github_google_benchmark//:benchmark_main",
431    ],
432)
433
434cc_test(
435    name = "marshalling_test",
436    size = "small",
437    srcs = [
438        "marshalling_test.cc",
439    ],
440    copts = ABSL_TEST_COPTS,
441    linkopts = ABSL_DEFAULT_LINKOPTS,
442    deps = [
443        ":marshalling",
444        "@com_google_googletest//:gtest",
445        "@com_google_googletest//:gtest_main",
446    ],
447)
448
449cc_test(
450    name = "parse_test",
451    size = "small",
452    srcs = [
453        "parse_test.cc",
454    ],
455    copts = ABSL_TEST_COPTS,
456    linkopts = ABSL_DEFAULT_LINKOPTS,
457    tags = [
458        "no_test:os:android",
459        "no_test:os:ios",
460        "no_test_android",
461        "no_test_ios",
462        "no_test_wasm",
463    ],
464    deps = [
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        ":commandlineflag_internal",
527        ":flag",
528        ":marshalling",
529        ":reflection",
530        ":usage_internal",
531        "//absl/memory",
532        "//absl/strings",
533        "@com_google_googletest//:gtest",
534        "@com_google_googletest//:gtest_main",
535    ],
536)
537
538cc_test(
539    name = "sequence_lock_test",
540    size = "small",
541    timeout = "moderate",
542    srcs = [
543        "internal/sequence_lock_test.cc",
544    ],
545    copts = ABSL_TEST_COPTS,
546    linkopts = ABSL_DEFAULT_LINKOPTS,
547    shard_count = 31,
548    tags = ["no_test_wasm"],
549    deps = [
550        ":flag_internal",
551        "//absl/base",
552        "//absl/container:fixed_array",
553        "//absl/time",
554        "@com_google_googletest//:gtest",
555        "@com_google_googletest//:gtest_main",
556    ],
557)
558
559cc_test(
560    name = "usage_config_test",
561    size = "small",
562    srcs = [
563        "usage_config_test.cc",
564    ],
565    copts = ABSL_TEST_COPTS,
566    linkopts = ABSL_DEFAULT_LINKOPTS,
567    deps = [
568        ":config",
569        ":path_util",
570        ":program_name",
571        "//absl/strings",
572        "@com_google_googletest//:gtest",
573        "@com_google_googletest//:gtest_main",
574    ],
575)
576
577cc_test(
578    name = "usage_test",
579    size = "small",
580    srcs = [
581        "internal/usage_test.cc",
582    ],
583    copts = ABSL_TEST_COPTS,
584    linkopts = ABSL_DEFAULT_LINKOPTS,
585    tags = [
586        "no_test:os:android",
587        "no_test:os:ios",
588        "no_test_android",
589        "no_test_ios",
590        "no_test_wasm",
591    ],
592    deps = [
593        ":config",
594        ":flag",
595        ":parse",
596        ":path_util",
597        ":program_name",
598        ":reflection",
599        ":usage",
600        ":usage_internal",
601        "//absl/strings",
602        "@com_google_googletest//:gtest",
603    ],
604)
605