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