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