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 srcs = ["log_entry.cc"], 156 hdrs = ["log_entry.h"], 157 copts = ABSL_DEFAULT_COPTS, 158 linkopts = ABSL_DEFAULT_LINKOPTS, 159 deps = [ 160 "//absl/base:config", 161 "//absl/base:core_headers", 162 "//absl/base:log_severity", 163 "//absl/log/internal:config", 164 "//absl/strings", 165 "//absl/time", 166 "//absl/types:span", 167 ], 168) 169 170cc_library( 171 name = "log_sink", 172 srcs = ["log_sink.cc"], 173 hdrs = ["log_sink.h"], 174 copts = ABSL_DEFAULT_COPTS, 175 linkopts = ABSL_DEFAULT_LINKOPTS, 176 deps = [ 177 ":log_entry", 178 "//absl/base:config", 179 ], 180) 181 182cc_library( 183 name = "log_sink_registry", 184 hdrs = ["log_sink_registry.h"], 185 copts = ABSL_DEFAULT_COPTS, 186 linkopts = ABSL_DEFAULT_LINKOPTS, 187 deps = [ 188 ":log_sink", 189 "//absl/base:config", 190 "//absl/base:nullability", 191 "//absl/log/internal:log_sink_set", 192 ], 193) 194 195cc_library( 196 name = "log_streamer", 197 hdrs = ["log_streamer.h"], 198 copts = ABSL_DEFAULT_COPTS, 199 linkopts = ABSL_DEFAULT_LINKOPTS, 200 deps = [ 201 ":absl_log", 202 "//absl/base:config", 203 "//absl/base:log_severity", 204 "//absl/strings", 205 "//absl/strings:internal", 206 "//absl/types:optional", 207 "//absl/utility", 208 ], 209) 210 211cc_library( 212 name = "scoped_mock_log", 213 testonly = True, 214 srcs = ["scoped_mock_log.cc"], 215 hdrs = ["scoped_mock_log.h"], 216 copts = ABSL_DEFAULT_COPTS, 217 linkopts = ABSL_DEFAULT_LINKOPTS, 218 deps = [ 219 ":log_entry", 220 ":log_sink", 221 ":log_sink_registry", 222 "//absl/base:config", 223 "//absl/base:log_severity", 224 "//absl/base:raw_logging_internal", 225 "//absl/strings", 226 "@com_google_googletest//:gtest", 227 ], 228) 229 230cc_library( 231 name = "structured", 232 hdrs = ["structured.h"], 233 copts = ABSL_DEFAULT_COPTS, 234 linkopts = ABSL_DEFAULT_LINKOPTS, 235 deps = [ 236 "//absl/base:config", 237 "//absl/base:core_headers", 238 "//absl/log/internal:structured", 239 "//absl/strings", 240 ], 241) 242 243cc_library( 244 name = "absl_vlog_is_on", 245 hdrs = ["absl_vlog_is_on.h"], 246 copts = ABSL_DEFAULT_COPTS, 247 linkopts = ABSL_DEFAULT_LINKOPTS, 248 deps = [ 249 "//absl/base:config", 250 "//absl/base:core_headers", 251 "//absl/log/internal:vlog_config", 252 "//absl/strings", 253 ], 254) 255 256cc_library( 257 name = "vlog_is_on", 258 hdrs = ["vlog_is_on.h"], 259 copts = ABSL_DEFAULT_COPTS, 260 linkopts = ABSL_DEFAULT_LINKOPTS, 261 deps = [ 262 ":absl_vlog_is_on", 263 ], 264) 265 266# TODO(b/200695798): run this in TAP projects with -DABSL_MAX_VLOG_VERBOSITY={-100,100} 267cc_test( 268 name = "vlog_is_on_test", 269 size = "small", 270 srcs = [ 271 "vlog_is_on_test.cc", 272 ], 273 copts = ABSL_TEST_COPTS, 274 linkopts = ABSL_DEFAULT_LINKOPTS, 275 deps = [ 276 ":flags", 277 ":globals", 278 ":log", 279 ":scoped_mock_log", 280 ":vlog_is_on", 281 "//absl/base:log_severity", 282 "//absl/flags:flag", 283 "//absl/types:optional", 284 "@com_google_googletest//:gtest", 285 "@com_google_googletest//:gtest_main", 286 ], 287) 288 289# Test targets 290 291cc_test( 292 name = "absl_check_test", 293 size = "small", 294 timeout = "moderate", 295 srcs = ["absl_check_test.cc"], 296 copts = ABSL_TEST_COPTS, 297 linkopts = ABSL_DEFAULT_LINKOPTS, 298 tags = [ 299 "no_test:os:ios", 300 "no_test_ios", 301 "no_test_wasm", 302 ], 303 deps = [ 304 ":absl_check", 305 ":check_test_impl", 306 "@com_google_googletest//:gtest", 307 "@com_google_googletest//:gtest_main", 308 ], 309) 310 311cc_test( 312 name = "absl_log_basic_test", 313 size = "small", 314 timeout = "moderate", 315 srcs = ["absl_log_basic_test.cc"], 316 copts = ABSL_TEST_COPTS, 317 linkopts = ABSL_DEFAULT_LINKOPTS, 318 deps = [ 319 ":absl_log", 320 ":log_basic_test_impl", 321 "@com_google_googletest//:gtest", 322 "@com_google_googletest//:gtest_main", 323 ], 324) 325 326cc_test( 327 name = "check_test", 328 size = "small", 329 timeout = "moderate", 330 srcs = ["check_test.cc"], 331 copts = ABSL_TEST_COPTS, 332 linkopts = ABSL_DEFAULT_LINKOPTS, 333 tags = [ 334 "no_test:os:ios", 335 "no_test_ios", 336 "no_test_wasm", 337 ], 338 deps = [ 339 ":check", 340 ":check_test_impl", 341 "@com_google_googletest//:gtest", 342 "@com_google_googletest//:gtest_main", 343 ], 344) 345 346cc_library( 347 name = "check_test_impl", 348 testonly = True, 349 copts = ABSL_TEST_COPTS, 350 linkopts = ABSL_DEFAULT_LINKOPTS, 351 tags = [ 352 "no_test:os:ios", 353 "no_test_ios", 354 "no_test_wasm", 355 ], 356 textual_hdrs = ["check_test_impl.inc"], 357 visibility = ["//visibility:private"], 358 deps = [ 359 "//absl/base:config", 360 "//absl/base:core_headers", 361 "//absl/log/internal:test_helpers", 362 "//absl/status", 363 "//absl/strings", 364 "//absl/strings:string_view", 365 "@com_google_googletest//:gtest", 366 ], 367) 368 369cc_test( 370 name = "die_if_null_test", 371 size = "small", 372 srcs = ["die_if_null_test.cc"], 373 copts = ABSL_TEST_COPTS, 374 linkopts = ABSL_DEFAULT_LINKOPTS, 375 deps = [ 376 ":die_if_null", 377 "//absl/base:core_headers", 378 "//absl/log/internal:test_helpers", 379 "@com_google_googletest//:gtest", 380 "@com_google_googletest//:gtest_main", 381 ], 382) 383 384cc_test( 385 name = "flags_test", 386 size = "small", 387 srcs = ["flags_test.cc"], 388 copts = ABSL_TEST_COPTS, 389 linkopts = ABSL_DEFAULT_LINKOPTS, 390 deps = [ 391 ":flags", 392 ":globals", 393 ":log", 394 ":scoped_mock_log", 395 "//absl/base:core_headers", 396 "//absl/base:log_severity", 397 "//absl/flags:flag", 398 "//absl/flags:reflection", 399 "//absl/log/internal:flags", 400 "//absl/log/internal:test_helpers", 401 "//absl/log/internal:test_matchers", 402 "//absl/strings", 403 "@com_google_googletest//:gtest", 404 "@com_google_googletest//:gtest_main", 405 ], 406) 407 408cc_test( 409 name = "globals_test", 410 size = "small", 411 srcs = ["globals_test.cc"], 412 copts = ABSL_TEST_COPTS, 413 linkopts = ABSL_DEFAULT_LINKOPTS, 414 deps = [ 415 ":globals", 416 ":log", 417 ":scoped_mock_log", 418 "//absl/base:core_headers", 419 "//absl/base:log_severity", 420 "//absl/log/internal:globals", 421 "//absl/log/internal:test_helpers", 422 "@com_google_googletest//:gtest", 423 "@com_google_googletest//:gtest_main", 424 ], 425) 426 427cc_test( 428 name = "log_basic_test", 429 size = "small", 430 timeout = "moderate", 431 srcs = ["log_basic_test.cc"], 432 copts = ABSL_TEST_COPTS, 433 linkopts = ABSL_DEFAULT_LINKOPTS, 434 deps = [ 435 ":log", 436 ":log_basic_test_impl", 437 "@com_google_googletest//:gtest", 438 "@com_google_googletest//:gtest_main", 439 ], 440) 441 442cc_library( 443 name = "log_basic_test_impl", 444 testonly = True, 445 copts = ABSL_TEST_COPTS, 446 linkopts = ABSL_DEFAULT_LINKOPTS, 447 textual_hdrs = ["log_basic_test_impl.inc"], 448 visibility = ["//visibility:private"], 449 deps = [ 450 "//absl/base", 451 "//absl/base:log_severity", 452 "//absl/log:globals", 453 "//absl/log:log_entry", 454 "//absl/log:scoped_mock_log", 455 "//absl/log/internal:globals", 456 "//absl/log/internal:test_actions", 457 "//absl/log/internal:test_helpers", 458 "//absl/log/internal:test_matchers", 459 "@com_google_googletest//:gtest", 460 ], 461) 462 463cc_test( 464 name = "log_entry_test", 465 size = "small", 466 srcs = ["log_entry_test.cc"], 467 copts = ABSL_TEST_COPTS, 468 linkopts = ABSL_DEFAULT_LINKOPTS, 469 deps = [ 470 ":log_entry", 471 "//absl/base:config", 472 "//absl/base:core_headers", 473 "//absl/base:log_severity", 474 "//absl/log/internal:append_truncated", 475 "//absl/log/internal:format", 476 "//absl/log/internal:test_helpers", 477 "//absl/strings", 478 "//absl/time", 479 "//absl/types:span", 480 "@com_google_googletest//:gtest", 481 "@com_google_googletest//:gtest_main", 482 ], 483) 484 485cc_test( 486 name = "log_format_test", 487 size = "small", 488 srcs = ["log_format_test.cc"], 489 copts = ABSL_TEST_COPTS, 490 linkopts = ABSL_DEFAULT_LINKOPTS, 491 deps = [ 492 ":check", 493 ":log", 494 ":scoped_mock_log", 495 "//absl/log/internal:test_matchers", 496 "//absl/strings", 497 "//absl/strings:str_format", 498 "//absl/types:optional", 499 "@com_google_googletest//:gtest", 500 "@com_google_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 "@com_google_googletest//:gtest", 516 "@com_google_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 "@com_google_googletest//:gtest", 542 "@com_google_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 "@com_google_googletest//:gtest", 564 "@com_google_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 "@com_google_googletest//:gtest", 584 "@com_google_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 "@com_google_googletest//:gtest", 612 "@com_google_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 "@com_google_googletest//:gtest", 636 "@com_google_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 "@com_google_googletest//:gtest", 654 "@com_google_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 "@com_github_google_benchmark//:benchmark_main", 679 ], 680) 681