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