1# 2# Copyright 2022 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 35# Public targets 36 37cc_library( 38 name = "absl_check", 39 hdrs = ["absl_check.h"], 40 copts = ABSL_DEFAULT_COPTS, 41 linkopts = ABSL_DEFAULT_LINKOPTS, 42 deps = [ 43 "//absl/log/internal:check_impl", 44 ], 45) 46 47cc_library( 48 name = "absl_log", 49 hdrs = ["absl_log.h"], 50 copts = ABSL_DEFAULT_COPTS, 51 linkopts = ABSL_DEFAULT_LINKOPTS, 52 deps = [ 53 "//absl/log/internal:log_impl", 54 ], 55) 56 57cc_library( 58 name = "check", 59 hdrs = ["check.h"], 60 copts = ABSL_DEFAULT_COPTS, 61 linkopts = ABSL_DEFAULT_LINKOPTS, 62 deps = [ 63 "//absl/log/internal:check_impl", 64 "//absl/log/internal:check_op", 65 "//absl/log/internal:conditions", 66 "//absl/log/internal:log_message", 67 "//absl/log/internal:strip", 68 ], 69) 70 71cc_library( 72 name = "die_if_null", 73 srcs = ["die_if_null.cc"], 74 hdrs = ["die_if_null.h"], 75 copts = ABSL_DEFAULT_COPTS, 76 linkopts = ABSL_DEFAULT_LINKOPTS, 77 deps = [ 78 ":log", 79 "//absl/base:config", 80 "//absl/base:core_headers", 81 "//absl/strings", 82 ], 83) 84 85cc_library( 86 name = "flags", 87 srcs = ["flags.cc"], 88 hdrs = ["flags.h"], 89 copts = ABSL_DEFAULT_COPTS, 90 linkopts = ABSL_DEFAULT_LINKOPTS, 91 visibility = ["//visibility:public"], 92 deps = [ 93 ":globals", 94 "//absl/base:config", 95 "//absl/base:core_headers", 96 "//absl/base:log_severity", 97 "//absl/flags:flag", 98 "//absl/flags:marshalling", 99 "//absl/log/internal:config", 100 "//absl/log/internal:flags", 101 "//absl/log/internal:vlog_config", 102 "//absl/strings", 103 ], 104 # Binaries which do not access these flags from C++ still want this library linked in. 105 alwayslink = True, 106) 107 108cc_library( 109 name = "globals", 110 srcs = ["globals.cc"], 111 hdrs = ["globals.h"], 112 copts = ABSL_DEFAULT_COPTS, 113 linkopts = ABSL_DEFAULT_LINKOPTS, 114 visibility = ["//visibility:public"], 115 deps = [ 116 "//absl/base:atomic_hook", 117 "//absl/base:config", 118 "//absl/base:core_headers", 119 "//absl/base:log_severity", 120 "//absl/base:raw_logging_internal", 121 "//absl/hash", 122 "//absl/log/internal:vlog_config", 123 "//absl/strings", 124 ], 125) 126 127cc_library( 128 name = "initialize", 129 srcs = ["initialize.cc"], 130 hdrs = ["initialize.h"], 131 copts = ABSL_DEFAULT_COPTS, 132 linkopts = ABSL_DEFAULT_LINKOPTS, 133 visibility = ["//visibility:public"], 134 deps = [ 135 ":globals", 136 "//absl/base:config", 137 "//absl/log/internal:globals", 138 "//absl/time", 139 ], 140) 141 142cc_library( 143 name = "log", 144 hdrs = ["log.h"], 145 copts = ABSL_DEFAULT_COPTS, 146 linkopts = ABSL_DEFAULT_LINKOPTS, 147 deps = [ 148 ":vlog_is_on", 149 "//absl/log/internal:log_impl", 150 ], 151) 152 153cc_library( 154 name = "log_entry", 155 hdrs = ["log_entry.h"], 156 copts = ABSL_DEFAULT_COPTS, 157 linkopts = ABSL_DEFAULT_LINKOPTS, 158 deps = [ 159 "//absl/base:config", 160 "//absl/base:core_headers", 161 "//absl/base:log_severity", 162 "//absl/log/internal:config", 163 "//absl/strings", 164 "//absl/time", 165 "//absl/types:span", 166 ], 167) 168 169cc_library( 170 name = "log_sink", 171 srcs = ["log_sink.cc"], 172 hdrs = ["log_sink.h"], 173 copts = ABSL_DEFAULT_COPTS, 174 linkopts = ABSL_DEFAULT_LINKOPTS, 175 deps = [ 176 ":log_entry", 177 "//absl/base:config", 178 ], 179) 180 181cc_library( 182 name = "log_sink_registry", 183 hdrs = ["log_sink_registry.h"], 184 copts = ABSL_DEFAULT_COPTS, 185 linkopts = ABSL_DEFAULT_LINKOPTS, 186 deps = [ 187 ":log_sink", 188 "//absl/base:config", 189 "//absl/base:nullability", 190 "//absl/log/internal:log_sink_set", 191 ], 192) 193 194cc_library( 195 name = "log_streamer", 196 hdrs = ["log_streamer.h"], 197 copts = ABSL_DEFAULT_COPTS, 198 linkopts = ABSL_DEFAULT_LINKOPTS, 199 deps = [ 200 ":absl_log", 201 "//absl/base:config", 202 "//absl/base:log_severity", 203 "//absl/strings", 204 "//absl/strings:internal", 205 "//absl/types:optional", 206 "//absl/utility", 207 ], 208) 209 210cc_library( 211 name = "scoped_mock_log", 212 testonly = True, 213 srcs = ["scoped_mock_log.cc"], 214 hdrs = ["scoped_mock_log.h"], 215 copts = ABSL_DEFAULT_COPTS, 216 linkopts = ABSL_DEFAULT_LINKOPTS, 217 deps = [ 218 ":log_entry", 219 ":log_sink", 220 ":log_sink_registry", 221 "//absl/base:config", 222 "//absl/base:log_severity", 223 "//absl/base:raw_logging_internal", 224 "//absl/strings", 225 "@googletest//:gtest", 226 ], 227) 228 229cc_library( 230 name = "structured", 231 hdrs = ["structured.h"], 232 copts = ABSL_DEFAULT_COPTS, 233 linkopts = ABSL_DEFAULT_LINKOPTS, 234 deps = [ 235 "//absl/base:config", 236 "//absl/base:core_headers", 237 "//absl/log/internal:structured", 238 "//absl/strings", 239 ], 240) 241 242cc_library( 243 name = "absl_vlog_is_on", 244 hdrs = ["absl_vlog_is_on.h"], 245 copts = ABSL_DEFAULT_COPTS, 246 linkopts = ABSL_DEFAULT_LINKOPTS, 247 deps = [ 248 "//absl/base:config", 249 "//absl/base:core_headers", 250 "//absl/log/internal:vlog_config", 251 "//absl/strings", 252 ], 253) 254 255cc_library( 256 name = "vlog_is_on", 257 hdrs = ["vlog_is_on.h"], 258 copts = ABSL_DEFAULT_COPTS, 259 linkopts = ABSL_DEFAULT_LINKOPTS, 260 deps = [ 261 ":absl_vlog_is_on", 262 ], 263) 264 265# TODO(b/200695798): run this in TAP projects with -DABSL_MAX_VLOG_VERBOSITY={-100,100} 266cc_test( 267 name = "vlog_is_on_test", 268 size = "small", 269 srcs = [ 270 "vlog_is_on_test.cc", 271 ], 272 copts = ABSL_TEST_COPTS, 273 linkopts = ABSL_DEFAULT_LINKOPTS, 274 deps = [ 275 ":flags", 276 ":globals", 277 ":log", 278 ":scoped_mock_log", 279 ":vlog_is_on", 280 "//absl/base:log_severity", 281 "//absl/flags:flag", 282 "//absl/types:optional", 283 "@googletest//:gtest", 284 "@googletest//:gtest_main", 285 ], 286) 287 288# Test targets 289 290cc_test( 291 name = "absl_check_test", 292 size = "small", 293 timeout = "moderate", 294 srcs = ["absl_check_test.cc"], 295 copts = ABSL_TEST_COPTS, 296 linkopts = ABSL_DEFAULT_LINKOPTS, 297 tags = [ 298 "no_test:os:ios", 299 "no_test_ios", 300 "no_test_wasm", 301 ], 302 deps = [ 303 ":absl_check", 304 ":check_test_impl", 305 "@googletest//:gtest", 306 "@googletest//:gtest_main", 307 ], 308) 309 310cc_test( 311 name = "absl_log_basic_test", 312 size = "small", 313 timeout = "moderate", 314 srcs = ["absl_log_basic_test.cc"], 315 copts = ABSL_TEST_COPTS, 316 linkopts = ABSL_DEFAULT_LINKOPTS, 317 deps = [ 318 ":absl_log", 319 ":log_basic_test_impl", 320 "@googletest//:gtest", 321 "@googletest//:gtest_main", 322 ], 323) 324 325cc_test( 326 name = "check_test", 327 size = "small", 328 timeout = "moderate", 329 srcs = ["check_test.cc"], 330 copts = ABSL_TEST_COPTS, 331 linkopts = ABSL_DEFAULT_LINKOPTS, 332 tags = [ 333 "no_test:os:ios", 334 "no_test_ios", 335 "no_test_wasm", 336 ], 337 deps = [ 338 ":check", 339 ":check_test_impl", 340 "@googletest//:gtest", 341 "@googletest//:gtest_main", 342 ], 343) 344 345cc_library( 346 name = "check_test_impl", 347 testonly = True, 348 copts = ABSL_TEST_COPTS, 349 linkopts = ABSL_DEFAULT_LINKOPTS, 350 tags = [ 351 "no_test:os:ios", 352 "no_test_ios", 353 "no_test_wasm", 354 ], 355 textual_hdrs = ["check_test_impl.inc"], 356 visibility = ["//visibility:private"], 357 deps = [ 358 "//absl/base:config", 359 "//absl/base:core_headers", 360 "//absl/log/internal:test_helpers", 361 "//absl/status", 362 "//absl/strings", 363 "//absl/strings:string_view", 364 "@googletest//:gtest", 365 ], 366) 367 368cc_test( 369 name = "die_if_null_test", 370 size = "small", 371 srcs = ["die_if_null_test.cc"], 372 copts = ABSL_TEST_COPTS, 373 linkopts = ABSL_DEFAULT_LINKOPTS, 374 deps = [ 375 ":die_if_null", 376 "//absl/base:core_headers", 377 "//absl/log/internal:test_helpers", 378 "@googletest//:gtest", 379 "@googletest//:gtest_main", 380 ], 381) 382 383cc_test( 384 name = "flags_test", 385 size = "small", 386 srcs = ["flags_test.cc"], 387 copts = ABSL_TEST_COPTS, 388 linkopts = ABSL_DEFAULT_LINKOPTS, 389 deps = [ 390 ":flags", 391 ":globals", 392 ":log", 393 ":scoped_mock_log", 394 "//absl/base:core_headers", 395 "//absl/base:log_severity", 396 "//absl/flags:flag", 397 "//absl/flags:reflection", 398 "//absl/log/internal:flags", 399 "//absl/log/internal:test_helpers", 400 "//absl/log/internal:test_matchers", 401 "//absl/strings", 402 "@googletest//:gtest", 403 "@googletest//:gtest_main", 404 ], 405) 406 407cc_test( 408 name = "globals_test", 409 size = "small", 410 srcs = ["globals_test.cc"], 411 copts = ABSL_TEST_COPTS, 412 linkopts = ABSL_DEFAULT_LINKOPTS, 413 deps = [ 414 ":globals", 415 ":log", 416 ":scoped_mock_log", 417 "//absl/base:core_headers", 418 "//absl/base:log_severity", 419 "//absl/log/internal:globals", 420 "//absl/log/internal:test_helpers", 421 "@googletest//:gtest", 422 "@googletest//:gtest_main", 423 ], 424) 425 426cc_test( 427 name = "log_basic_test", 428 size = "small", 429 timeout = "moderate", 430 srcs = ["log_basic_test.cc"], 431 copts = ABSL_TEST_COPTS, 432 linkopts = ABSL_DEFAULT_LINKOPTS, 433 deps = [ 434 ":log", 435 ":log_basic_test_impl", 436 "@googletest//:gtest", 437 "@googletest//:gtest_main", 438 ], 439) 440 441cc_library( 442 name = "log_basic_test_impl", 443 testonly = True, 444 copts = ABSL_TEST_COPTS, 445 linkopts = ABSL_DEFAULT_LINKOPTS, 446 textual_hdrs = ["log_basic_test_impl.inc"], 447 visibility = ["//visibility:private"], 448 deps = [ 449 "//absl/base", 450 "//absl/base:log_severity", 451 "//absl/log:globals", 452 "//absl/log:log_entry", 453 "//absl/log:scoped_mock_log", 454 "//absl/log/internal:globals", 455 "//absl/log/internal:test_actions", 456 "//absl/log/internal:test_helpers", 457 "//absl/log/internal:test_matchers", 458 "@googletest//:gtest", 459 ], 460) 461 462cc_test( 463 name = "log_entry_test", 464 size = "small", 465 srcs = ["log_entry_test.cc"], 466 copts = ABSL_TEST_COPTS, 467 linkopts = ABSL_DEFAULT_LINKOPTS, 468 deps = [ 469 ":log_entry", 470 "//absl/base:config", 471 "//absl/base:core_headers", 472 "//absl/base:log_severity", 473 "//absl/log/internal:append_truncated", 474 "//absl/log/internal:format", 475 "//absl/log/internal:test_helpers", 476 "//absl/strings", 477 "//absl/time", 478 "//absl/types:span", 479 "@googletest//:gtest", 480 "@googletest//:gtest_main", 481 ], 482) 483 484cc_test( 485 name = "log_format_test", 486 size = "small", 487 srcs = ["log_format_test.cc"], 488 copts = ABSL_TEST_COPTS, 489 linkopts = ABSL_DEFAULT_LINKOPTS, 490 deps = [ 491 ":check", 492 ":log", 493 ":scoped_mock_log", 494 "//absl/base:config", 495 "//absl/log/internal:test_matchers", 496 "//absl/strings", 497 "//absl/strings:str_format", 498 "//absl/types:optional", 499 "@googletest//:gtest", 500 "@googletest//:gtest_main", 501 ], 502) 503 504cc_test( 505 name = "log_macro_hygiene_test", 506 size = "small", 507 srcs = ["log_macro_hygiene_test.cc"], 508 copts = ABSL_TEST_COPTS, 509 linkopts = ABSL_DEFAULT_LINKOPTS, 510 deps = [ 511 ":log", 512 ":scoped_mock_log", 513 "//absl/base:core_headers", 514 "//absl/base:log_severity", 515 "@googletest//:gtest", 516 "@googletest//:gtest_main", 517 ], 518) 519 520cc_test( 521 name = "log_sink_test", 522 size = "medium", 523 srcs = ["log_sink_test.cc"], 524 copts = ABSL_TEST_COPTS, 525 linkopts = ABSL_DEFAULT_LINKOPTS, 526 tags = [ 527 "no_test:os:ios", 528 "no_test_ios", 529 "no_test_wasm", 530 ], 531 deps = [ 532 ":log", 533 ":log_sink", 534 ":log_sink_registry", 535 ":scoped_mock_log", 536 "//absl/base:core_headers", 537 "//absl/log/internal:test_actions", 538 "//absl/log/internal:test_helpers", 539 "//absl/log/internal:test_matchers", 540 "//absl/strings", 541 "@googletest//:gtest", 542 "@googletest//:gtest_main", 543 ], 544) 545 546cc_test( 547 name = "log_streamer_test", 548 size = "medium", 549 srcs = ["log_streamer_test.cc"], 550 copts = ABSL_TEST_COPTS, 551 linkopts = ABSL_DEFAULT_LINKOPTS, 552 deps = [ 553 ":log", 554 ":log_streamer", 555 ":scoped_mock_log", 556 "//absl/base", 557 "//absl/base:core_headers", 558 "//absl/base:log_severity", 559 "//absl/log/internal:test_actions", 560 "//absl/log/internal:test_helpers", 561 "//absl/log/internal:test_matchers", 562 "//absl/strings", 563 "@googletest//:gtest", 564 "@googletest//:gtest_main", 565 ], 566) 567 568cc_test( 569 name = "log_modifier_methods_test", 570 size = "small", 571 srcs = ["log_modifier_methods_test.cc"], 572 copts = ABSL_TEST_COPTS, 573 linkopts = ABSL_DEFAULT_LINKOPTS, 574 deps = [ 575 ":log", 576 ":log_sink", 577 ":scoped_mock_log", 578 "//absl/log/internal:test_actions", 579 "//absl/log/internal:test_helpers", 580 "//absl/log/internal:test_matchers", 581 "//absl/strings", 582 "//absl/time", 583 "@googletest//:gtest", 584 "@googletest//:gtest_main", 585 ], 586) 587 588cc_test( 589 name = "scoped_mock_log_test", 590 size = "small", 591 srcs = ["scoped_mock_log_test.cc"], 592 copts = ABSL_TEST_COPTS, 593 linkopts = ABSL_DEFAULT_LINKOPTS, 594 linkstatic = 1, 595 tags = [ 596 "no_test:os:ios", 597 "no_test_ios", 598 "no_test_wasm", 599 ], 600 deps = [ 601 ":globals", 602 ":log", 603 ":scoped_mock_log", 604 "//absl/base:core_headers", 605 "//absl/base:log_severity", 606 "//absl/log/internal:test_helpers", 607 "//absl/log/internal:test_matchers", 608 "//absl/memory", 609 "//absl/strings", 610 "//absl/synchronization", 611 "@googletest//:gtest", 612 "@googletest//:gtest_main", 613 ], 614) 615 616cc_test( 617 name = "stripping_test", 618 size = "small", 619 srcs = ["stripping_test.cc"], 620 copts = ABSL_TEST_COPTS, 621 linkopts = ABSL_DEFAULT_LINKOPTS, 622 # This test requires all code live in the binary (instead of shared libraries) 623 # because we test for the existence of specific literals in the binary. 624 linkstatic = 1, 625 deps = [ 626 ":check", 627 ":log", 628 "//absl/base:log_severity", 629 "//absl/base:strerror", 630 "//absl/flags:program_name", 631 "//absl/log/internal:test_helpers", 632 "//absl/status", 633 "//absl/strings", 634 "//absl/strings:str_format", 635 "@googletest//:gtest", 636 "@googletest//:gtest_main", 637 ], 638) 639 640cc_test( 641 name = "structured_test", 642 size = "small", 643 srcs = ["structured_test.cc"], 644 copts = ABSL_TEST_COPTS, 645 linkopts = ABSL_DEFAULT_LINKOPTS, 646 deps = [ 647 ":log", 648 ":scoped_mock_log", 649 ":structured", 650 "//absl/base:core_headers", 651 "//absl/log/internal:test_helpers", 652 "//absl/log/internal:test_matchers", 653 "@googletest//:gtest", 654 "@googletest//:gtest_main", 655 ], 656) 657 658cc_test( 659 name = "log_benchmark", 660 size = "small", 661 srcs = ["log_benchmark.cc"], 662 copts = ABSL_TEST_COPTS, 663 linkopts = ABSL_DEFAULT_LINKOPTS, 664 tags = ["benchmark"], 665 deps = [ 666 ":check", 667 ":flags", 668 ":globals", 669 ":log", 670 ":log_entry", 671 ":log_sink", 672 ":log_sink_registry", 673 ":vlog_is_on", 674 "//absl/base:core_headers", 675 "//absl/base:log_severity", 676 "//absl/flags:flag", 677 "//absl/log/internal:flags", 678 "@google_benchmark//:benchmark_main", 679 ], 680) 681