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
17# Internal-only target, do not depend on directly.
18absl_cc_library(
19  NAME
20    flags_path_util
21  HDRS
22    "internal/path_util.h"
23  COPTS
24    ${ABSL_DEFAULT_COPTS}
25  LINKOPTS
26    ${ABSL_DEFAULT_LINKOPTS}
27  DEPS
28    absl::config
29    absl::strings
30  PUBLIC
31)
32
33# Internal-only target, do not depend on directly.
34absl_cc_library(
35  NAME
36    flags_program_name
37  SRCS
38    "internal/program_name.cc"
39  HDRS
40    "internal/program_name.h"
41  COPTS
42    ${ABSL_DEFAULT_COPTS}
43  LINKOPTS
44    ${ABSL_DEFAULT_LINKOPTS}
45  DEPS
46    absl::config
47    absl::core_headers
48    absl::flags_path_util
49    absl::strings
50    absl::synchronization
51  PUBLIC
52)
53
54absl_cc_library(
55  NAME
56    flags_config
57  SRCS
58    "usage_config.cc"
59  HDRS
60    "config.h"
61    "usage_config.h"
62  COPTS
63    ${ABSL_DEFAULT_COPTS}
64  LINKOPTS
65    ${ABSL_DEFAULT_LINKOPTS}
66  DEPS
67    absl::config
68    absl::flags_path_util
69    absl::flags_program_name
70    absl::core_headers
71    absl::strings
72    absl::synchronization
73)
74
75absl_cc_library(
76  NAME
77    flags_marshalling
78  SRCS
79    "marshalling.cc"
80  HDRS
81    "marshalling.h"
82  COPTS
83    ${ABSL_DEFAULT_COPTS}
84  LINKOPTS
85    ${ABSL_DEFAULT_LINKOPTS}
86  DEPS
87    absl::config
88    absl::core_headers
89    absl::log_severity
90    absl::optional
91    absl::strings
92    absl::str_format
93)
94
95# Internal-only target, do not depend on directly.
96absl_cc_library(
97  NAME
98    flags_commandlineflag_internal
99  SRCS
100    "internal/commandlineflag.cc"
101  HDRS
102    "internal/commandlineflag.h"
103  COPTS
104    ${ABSL_DEFAULT_COPTS}
105  LINKOPTS
106    ${ABSL_DEFAULT_LINKOPTS}
107  DEPS
108    absl::config
109    absl::dynamic_annotations
110    absl::fast_type_id
111)
112
113absl_cc_library(
114  NAME
115    flags_commandlineflag
116  SRCS
117    "commandlineflag.cc"
118  HDRS
119    "commandlineflag.h"
120  COPTS
121    ${ABSL_DEFAULT_COPTS}
122  LINKOPTS
123    ${ABSL_DEFAULT_LINKOPTS}
124  DEPS
125    absl::config
126    absl::fast_type_id
127    absl::flags_commandlineflag_internal
128    absl::optional
129    absl::strings
130)
131
132# Internal-only target, do not depend on directly.
133absl_cc_library(
134  NAME
135    flags_private_handle_accessor
136  SRCS
137    "internal/private_handle_accessor.cc"
138  HDRS
139    "internal/private_handle_accessor.h"
140  COPTS
141    ${ABSL_DEFAULT_COPTS}
142  LINKOPTS
143    ${ABSL_DEFAULT_LINKOPTS}
144  DEPS
145    absl::config
146    absl::flags_commandlineflag
147    absl::flags_commandlineflag_internal
148    absl::strings
149)
150
151absl_cc_library(
152  NAME
153    flags_reflection
154  SRCS
155    "reflection.cc"
156  HDRS
157    "reflection.h"
158    "internal/registry.h"
159  COPTS
160    ${ABSL_DEFAULT_COPTS}
161  LINKOPTS
162    ${ABSL_DEFAULT_LINKOPTS}
163  DEPS
164    absl::config
165    absl::flags_commandlineflag
166    absl::flags_private_handle_accessor
167    absl::flags_config
168    absl::strings
169    absl::synchronization
170    absl::flat_hash_map
171)
172
173# Internal-only target, do not depend on directly.
174absl_cc_library(
175  NAME
176    flags_internal
177  SRCS
178    "internal/flag.cc"
179  HDRS
180    "internal/flag.h"
181    "internal/sequence_lock.h"
182  COPTS
183    ${ABSL_DEFAULT_COPTS}
184  LINKOPTS
185    ${ABSL_DEFAULT_LINKOPTS}
186  DEPS
187    absl::base
188    absl::config
189    absl::flags_commandlineflag
190    absl::flags_commandlineflag_internal
191    absl::flags_config
192    absl::flags_marshalling
193    absl::synchronization
194    absl::meta
195    absl::utility
196  PUBLIC
197)
198
199absl_cc_library(
200  NAME
201    flags
202  SRCS
203    "flag.cc"
204  HDRS
205    "declare.h"
206    "flag.h"
207    "internal/flag_msvc.inc"
208  COPTS
209    ${ABSL_DEFAULT_COPTS}
210  LINKOPTS
211    ${ABSL_DEFAULT_LINKOPTS}
212  DEPS
213    absl::config
214    absl::flags_commandlineflag
215    absl::flags_config
216    absl::flags_internal
217    absl::flags_reflection
218    absl::base
219    absl::core_headers
220    absl::strings
221)
222
223# Internal-only target, do not depend on directly.
224absl_cc_library(
225  NAME
226    flags_usage_internal
227  SRCS
228    "internal/usage.cc"
229  HDRS
230    "internal/usage.h"
231  COPTS
232    ${ABSL_DEFAULT_COPTS}
233  LINKOPTS
234    ${ABSL_DEFAULT_LINKOPTS}
235  DEPS
236    absl::config
237    absl::flags_config
238    absl::flags
239    absl::flags_commandlineflag
240    absl::flags_internal
241    absl::flags_path_util
242    absl::flags_private_handle_accessor
243    absl::flags_program_name
244    absl::flags_reflection
245    absl::flat_hash_map
246    absl::strings
247    absl::synchronization
248)
249
250absl_cc_library(
251  NAME
252    flags_usage
253  SRCS
254    "usage.cc"
255  HDRS
256    "usage.h"
257  COPTS
258    ${ABSL_DEFAULT_COPTS}
259  LINKOPTS
260    ${ABSL_DEFAULT_LINKOPTS}
261  DEPS
262    absl::config
263    absl::core_headers
264    absl::flags_usage_internal
265    absl::strings
266    absl::synchronization
267)
268
269absl_cc_library(
270  NAME
271    flags_parse
272  SRCS
273    "parse.cc"
274  HDRS
275    "internal/parse.h"
276    "parse.h"
277  COPTS
278    ${ABSL_DEFAULT_COPTS}
279  LINKOPTS
280    ${ABSL_DEFAULT_LINKOPTS}
281  DEPS
282    absl::algorithm_container
283    absl::config
284    absl::core_headers
285    absl::flags_config
286    absl::flags
287    absl::flags_commandlineflag
288    absl::flags_commandlineflag_internal
289    absl::flags_internal
290    absl::flags_private_handle_accessor
291    absl::flags_program_name
292    absl::flags_reflection
293    absl::flags_usage
294    absl::strings
295    absl::synchronization
296)
297
298############################################################################
299# Unit tests in alpahabetical order.
300
301absl_cc_test(
302  NAME
303    flags_commandlineflag_test
304  SRCS
305    "commandlineflag_test.cc"
306  COPTS
307    ${ABSL_TEST_COPTS}
308  DEPS
309    absl::flags
310    absl::flags_commandlineflag
311    absl::flags_commandlineflag_internal
312    absl::flags_config
313    absl::flags_private_handle_accessor
314    absl::flags_reflection
315    absl::memory
316    absl::strings
317    GTest::gtest_main
318)
319
320absl_cc_test(
321  NAME
322    flags_config_test
323  SRCS
324    "config_test.cc"
325  COPTS
326    ${ABSL_TEST_COPTS}
327  DEPS
328    absl::flags_config
329    GTest::gtest_main
330)
331
332absl_cc_test(
333  NAME
334    flags_flag_test
335  SRCS
336    "flag_test.cc"
337    "flag_test_defs.cc"
338  COPTS
339    ${ABSL_TEST_COPTS}
340  DEPS
341    absl::core_headers
342    absl::flags
343    absl::flags_config
344    absl::flags_internal
345    absl::flags_marshalling
346    absl::flags_reflection
347    absl::strings
348    absl::time
349    GTest::gtest_main
350)
351
352absl_cc_test(
353  NAME
354    flags_marshalling_test
355  SRCS
356    "marshalling_test.cc"
357  COPTS
358    ${ABSL_TEST_COPTS}
359  DEPS
360    absl::flags_marshalling
361    GTest::gtest_main
362)
363
364absl_cc_test(
365  NAME
366    flags_parse_test
367  SRCS
368    "parse_test.cc"
369  COPTS
370    ${ABSL_TEST_COPTS}
371  DEPS
372    absl::flags
373    absl::flags_parse
374    absl::flags_reflection
375    absl::flags_usage_internal
376    absl::raw_logging_internal
377    absl::scoped_set_env
378    absl::span
379    absl::strings
380    GTest::gmock_main
381)
382
383absl_cc_test(
384  NAME
385    flags_path_util_test
386  SRCS
387    "internal/path_util_test.cc"
388  COPTS
389    ${ABSL_TEST_COPTS}
390  DEPS
391    absl::flags_path_util
392    GTest::gtest_main
393)
394
395absl_cc_test(
396  NAME
397    flags_program_name_test
398  SRCS
399    "internal/program_name_test.cc"
400  COPTS
401    ${ABSL_TEST_COPTS}
402  DEPS
403    absl::flags_program_name
404    absl::strings
405    GTest::gtest_main
406)
407
408absl_cc_test(
409  NAME
410    flags_reflection_test
411  SRCS
412    "reflection_test.cc"
413  COPTS
414    ${ABSL_TEST_COPTS}
415  DEPS
416    absl::flags_commandlineflag_internal
417    absl::flags
418    absl::flags_reflection
419    absl::flags_usage
420    absl::memory
421    absl::strings
422    GTest::gmock_main
423)
424
425absl_cc_test(
426  NAME
427    flags_sequence_lock_test
428  SRCS
429    "internal/sequence_lock_test.cc"
430  COPTS
431    ${ABSL_TEST_COPTS}
432  DEPS
433    absl::base
434    absl::flags_internal
435    absl::time
436    GTest::gmock_main
437)
438
439absl_cc_test(
440  NAME
441    flags_usage_config_test
442  SRCS
443    "usage_config_test.cc"
444  COPTS
445    ${ABSL_TEST_COPTS}
446  DEPS
447    absl::flags_config
448    absl::flags_path_util
449    absl::flags_program_name
450    absl::strings
451    GTest::gtest_main
452)
453
454absl_cc_test(
455  NAME
456    flags_usage_test
457  SRCS
458    "internal/usage_test.cc"
459  COPTS
460    ${ABSL_TEST_COPTS}
461  DEPS
462    absl::flags_config
463    absl::flags
464    absl::flags_path_util
465    absl::flags_program_name
466    absl::flags_parse
467    absl::flags_reflection
468    absl::flags_usage
469    absl::strings
470    GTest::gmock
471)
472