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