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/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 "@com_google_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/log/internal:structured", 237 "//absl/strings", 238 ], 239) 240 241cc_library( 242 name = "absl_vlog_is_on", 243 hdrs = ["absl_vlog_is_on.h"], 244 copts = ABSL_DEFAULT_COPTS, 245 linkopts = ABSL_DEFAULT_LINKOPTS, 246 visibility = [ 247 "//absl/log:__subpackages__", 248 ], 249 deps = [ 250 "//absl/base:config", 251 "//absl/base:core_headers", 252 "//absl/log/internal:vlog_config", 253 "//absl/strings", 254 ], 255) 256 257cc_library( 258 name = "vlog_is_on", 259 hdrs = ["vlog_is_on.h"], 260 copts = ABSL_DEFAULT_COPTS, 261 linkopts = ABSL_DEFAULT_LINKOPTS, 262 visibility = [ 263 "//absl/log:__subpackages__", 264 ], 265 deps = [ 266 ":absl_vlog_is_on", 267 ], 268) 269 270# TODO(b/200695798): run this in TAP projects with -DABSL_MAX_VLOG_VERBOSITY={-100,100} 271cc_test( 272 name = "vlog_is_on_test", 273 size = "small", 274 srcs = [ 275 "vlog_is_on_test.cc", 276 ], 277 copts = ABSL_TEST_COPTS, 278 linkopts = ABSL_DEFAULT_LINKOPTS, 279 deps = [ 280 ":flags", 281 ":globals", 282 ":log", 283 ":scoped_mock_log", 284 ":vlog_is_on", 285 "//absl/base:log_severity", 286 "//absl/flags:flag", 287 "//absl/types:optional", 288 "@com_google_googletest//:gtest", 289 "@com_google_googletest//:gtest_main", 290 ], 291) 292 293# Test targets 294 295cc_test( 296 name = "absl_check_test", 297 size = "small", 298 srcs = ["absl_check_test.cc"], 299 copts = ABSL_TEST_COPTS, 300 linkopts = ABSL_DEFAULT_LINKOPTS, 301 tags = [ 302 "no_test:os:ios", 303 "no_test_ios", 304 "no_test_wasm", 305 ], 306 deps = [ 307 ":absl_check", 308 ":check_test_impl", 309 "@com_google_googletest//:gtest", 310 "@com_google_googletest//:gtest_main", 311 ], 312) 313 314cc_test( 315 name = "absl_log_basic_test", 316 size = "small", 317 srcs = ["absl_log_basic_test.cc"], 318 copts = ABSL_TEST_COPTS, 319 linkopts = ABSL_DEFAULT_LINKOPTS, 320 deps = [ 321 ":absl_log", 322 ":log_basic_test_impl", 323 "@com_google_googletest//:gtest", 324 "@com_google_googletest//:gtest_main", 325 ], 326) 327 328cc_test( 329 name = "check_test", 330 size = "small", 331 srcs = ["check_test.cc"], 332 copts = ABSL_TEST_COPTS, 333 linkopts = ABSL_DEFAULT_LINKOPTS, 334 tags = [ 335 "no_test:os:ios", 336 "no_test_ios", 337 "no_test_wasm", 338 ], 339 deps = [ 340 ":check", 341 ":check_test_impl", 342 "@com_google_googletest//:gtest", 343 "@com_google_googletest//:gtest_main", 344 ], 345) 346 347cc_library( 348 name = "check_test_impl", 349 testonly = True, 350 copts = ABSL_TEST_COPTS, 351 linkopts = ABSL_DEFAULT_LINKOPTS, 352 tags = [ 353 "no_test:os:ios", 354 "no_test_ios", 355 "no_test_wasm", 356 ], 357 textual_hdrs = ["check_test_impl.inc"], 358 visibility = ["//visibility:private"], 359 deps = [ 360 "//absl/base:config", 361 "//absl/base:core_headers", 362 "//absl/log/internal:test_helpers", 363 "//absl/status", 364 "@com_google_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 "@com_google_googletest//:gtest", 379 "@com_google_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 "@com_google_googletest//:gtest", 403 "@com_google_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 "@com_google_googletest//:gtest", 422 "@com_google_googletest//:gtest_main", 423 ], 424) 425 426cc_test( 427 name = "log_basic_test", 428 size = "small", 429 srcs = ["log_basic_test.cc"], 430 copts = ABSL_TEST_COPTS, 431 linkopts = ABSL_DEFAULT_LINKOPTS, 432 deps = [ 433 ":log", 434 ":log_basic_test_impl", 435 "@com_google_googletest//:gtest", 436 "@com_google_googletest//:gtest_main", 437 ], 438) 439 440cc_library( 441 name = "log_basic_test_impl", 442 testonly = True, 443 copts = ABSL_TEST_COPTS, 444 linkopts = ABSL_DEFAULT_LINKOPTS, 445 textual_hdrs = ["log_basic_test_impl.inc"], 446 visibility = ["//visibility:private"], 447 deps = [ 448 "//absl/base", 449 "//absl/base:log_severity", 450 "//absl/log:globals", 451 "//absl/log:log_entry", 452 "//absl/log:scoped_mock_log", 453 "//absl/log/internal:test_actions", 454 "//absl/log/internal:test_helpers", 455 "//absl/log/internal:test_matchers", 456 "@com_google_googletest//:gtest", 457 ], 458) 459 460cc_test( 461 name = "log_entry_test", 462 size = "small", 463 srcs = ["log_entry_test.cc"], 464 copts = ABSL_TEST_COPTS, 465 linkopts = ABSL_DEFAULT_LINKOPTS, 466 deps = [ 467 ":log_entry", 468 "//absl/base:config", 469 "//absl/base:core_headers", 470 "//absl/base:log_severity", 471 "//absl/log/internal:append_truncated", 472 "//absl/log/internal:format", 473 "//absl/log/internal:test_helpers", 474 "//absl/strings", 475 "//absl/time", 476 "//absl/types:span", 477 "@com_google_googletest//:gtest", 478 "@com_google_googletest//:gtest_main", 479 ], 480) 481 482cc_test( 483 name = "log_format_test", 484 size = "small", 485 srcs = ["log_format_test.cc"], 486 copts = ABSL_TEST_COPTS, 487 linkopts = ABSL_DEFAULT_LINKOPTS, 488 deps = [ 489 ":check", 490 ":log", 491 ":scoped_mock_log", 492 "//absl/log/internal:test_matchers", 493 "//absl/strings", 494 "//absl/strings:str_format", 495 "//absl/types:optional", 496 "@com_google_googletest//:gtest", 497 "@com_google_googletest//:gtest_main", 498 ], 499) 500 501cc_test( 502 name = "log_macro_hygiene_test", 503 size = "small", 504 srcs = ["log_macro_hygiene_test.cc"], 505 copts = ABSL_TEST_COPTS, 506 linkopts = ABSL_DEFAULT_LINKOPTS, 507 deps = [ 508 ":log", 509 ":scoped_mock_log", 510 "//absl/base:core_headers", 511 "//absl/base:log_severity", 512 "@com_google_googletest//:gtest", 513 "@com_google_googletest//:gtest_main", 514 ], 515) 516 517cc_test( 518 name = "log_sink_test", 519 size = "medium", 520 srcs = ["log_sink_test.cc"], 521 copts = ABSL_TEST_COPTS, 522 linkopts = ABSL_DEFAULT_LINKOPTS, 523 tags = [ 524 "no_test:os:ios", 525 "no_test_ios", 526 "no_test_wasm", 527 ], 528 deps = [ 529 ":log", 530 ":log_sink", 531 ":log_sink_registry", 532 ":scoped_mock_log", 533 "//absl/base:core_headers", 534 "//absl/log/internal:test_actions", 535 "//absl/log/internal:test_helpers", 536 "//absl/log/internal:test_matchers", 537 "//absl/strings", 538 "@com_google_googletest//:gtest", 539 "@com_google_googletest//:gtest_main", 540 ], 541) 542 543cc_test( 544 name = "log_streamer_test", 545 size = "medium", 546 srcs = ["log_streamer_test.cc"], 547 copts = ABSL_TEST_COPTS, 548 linkopts = ABSL_DEFAULT_LINKOPTS, 549 deps = [ 550 ":log", 551 ":log_streamer", 552 ":scoped_mock_log", 553 "//absl/base", 554 "//absl/base:core_headers", 555 "//absl/base:log_severity", 556 "//absl/log/internal:test_actions", 557 "//absl/log/internal:test_helpers", 558 "//absl/log/internal:test_matchers", 559 "//absl/strings", 560 "@com_google_googletest//:gtest", 561 "@com_google_googletest//:gtest_main", 562 ], 563) 564 565cc_test( 566 name = "log_modifier_methods_test", 567 size = "small", 568 srcs = ["log_modifier_methods_test.cc"], 569 copts = ABSL_TEST_COPTS, 570 linkopts = ABSL_DEFAULT_LINKOPTS, 571 deps = [ 572 ":log", 573 ":log_sink", 574 ":scoped_mock_log", 575 "//absl/log/internal:test_actions", 576 "//absl/log/internal:test_helpers", 577 "//absl/log/internal:test_matchers", 578 "//absl/strings", 579 "//absl/time", 580 "@com_google_googletest//:gtest", 581 "@com_google_googletest//:gtest_main", 582 ], 583) 584 585cc_test( 586 name = "scoped_mock_log_test", 587 size = "small", 588 srcs = ["scoped_mock_log_test.cc"], 589 copts = ABSL_TEST_COPTS, 590 linkopts = ABSL_DEFAULT_LINKOPTS, 591 linkstatic = 1, 592 tags = [ 593 "no_test:os:ios", 594 "no_test_ios", 595 "no_test_wasm", 596 ], 597 deps = [ 598 ":globals", 599 ":log", 600 ":scoped_mock_log", 601 "//absl/base:core_headers", 602 "//absl/base:log_severity", 603 "//absl/log/internal:test_helpers", 604 "//absl/log/internal:test_matchers", 605 "//absl/memory", 606 "//absl/strings", 607 "//absl/synchronization", 608 "@com_google_googletest//:gtest", 609 "@com_google_googletest//:gtest_main", 610 ], 611) 612 613cc_test( 614 name = "stripping_test", 615 size = "small", 616 srcs = ["stripping_test.cc"], 617 copts = ABSL_TEST_COPTS, 618 linkopts = ABSL_DEFAULT_LINKOPTS, 619 # This test requires all code live in the binary (instead of shared libraries) 620 # because we test for the existence of specific literals in the binary. 621 linkstatic = 1, 622 deps = [ 623 ":check", 624 ":log", 625 "//absl/base:log_severity", 626 "//absl/base:strerror", 627 "//absl/flags:program_name", 628 "//absl/log/internal:test_helpers", 629 "//absl/status", 630 "//absl/strings", 631 "//absl/strings:str_format", 632 "@com_google_googletest//:gtest", 633 "@com_google_googletest//:gtest_main", 634 ], 635) 636 637cc_test( 638 name = "structured_test", 639 size = "small", 640 srcs = ["structured_test.cc"], 641 copts = ABSL_TEST_COPTS, 642 linkopts = ABSL_DEFAULT_LINKOPTS, 643 deps = [ 644 ":log", 645 ":scoped_mock_log", 646 ":structured", 647 "//absl/base:core_headers", 648 "//absl/log/internal:test_helpers", 649 "//absl/log/internal:test_matchers", 650 "@com_google_googletest//:gtest", 651 "@com_google_googletest//:gtest_main", 652 ], 653) 654 655cc_test( 656 name = "log_benchmark", 657 size = "small", 658 srcs = ["log_benchmark.cc"], 659 copts = ABSL_TEST_COPTS, 660 linkopts = ABSL_DEFAULT_LINKOPTS, 661 tags = ["benchmark"], 662 deps = [ 663 ":check", 664 ":flags", 665 ":globals", 666 ":log", 667 ":log_entry", 668 ":log_sink", 669 ":log_sink_registry", 670 "//absl/base:core_headers", 671 "//absl/base:log_severity", 672 "//absl/flags:flag", 673 "//absl/log/internal:flags", 674 "@com_github_google_benchmark//:benchmark_main", 675 ], 676) 677