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/strings", 102 ], 103 # Binaries which do not access these flags from C++ still want this library linked in. 104 alwayslink = True, 105) 106 107cc_library( 108 name = "globals", 109 srcs = ["globals.cc"], 110 hdrs = ["globals.h"], 111 copts = ABSL_DEFAULT_COPTS, 112 linkopts = ABSL_DEFAULT_LINKOPTS, 113 visibility = ["//visibility:public"], 114 deps = [ 115 "//absl/base:atomic_hook", 116 "//absl/base:config", 117 "//absl/base:core_headers", 118 "//absl/base:log_severity", 119 "//absl/base:raw_logging_internal", 120 "//absl/hash", 121 "//absl/strings", 122 ], 123) 124 125cc_library( 126 name = "initialize", 127 srcs = ["initialize.cc"], 128 hdrs = ["initialize.h"], 129 copts = ABSL_DEFAULT_COPTS, 130 linkopts = ABSL_DEFAULT_LINKOPTS, 131 visibility = ["//visibility:public"], 132 deps = [ 133 ":globals", 134 "//absl/base:config", 135 "//absl/log/internal:globals", 136 "//absl/time", 137 ], 138) 139 140cc_library( 141 name = "log", 142 hdrs = ["log.h"], 143 copts = ABSL_DEFAULT_COPTS, 144 linkopts = ABSL_DEFAULT_LINKOPTS, 145 deps = [ 146 "//absl/log/internal:log_impl", 147 ], 148) 149 150cc_library( 151 name = "log_entry", 152 srcs = ["log_entry.cc"], 153 hdrs = ["log_entry.h"], 154 copts = ABSL_DEFAULT_COPTS, 155 linkopts = ABSL_DEFAULT_LINKOPTS, 156 deps = [ 157 "//absl/base:config", 158 "//absl/base:core_headers", 159 "//absl/base:log_severity", 160 "//absl/log/internal:config", 161 "//absl/strings", 162 "//absl/time", 163 "//absl/types:span", 164 ], 165) 166 167cc_library( 168 name = "log_sink", 169 srcs = ["log_sink.cc"], 170 hdrs = ["log_sink.h"], 171 copts = ABSL_DEFAULT_COPTS, 172 linkopts = ABSL_DEFAULT_LINKOPTS, 173 deps = [ 174 ":log_entry", 175 "//absl/base:config", 176 ], 177) 178 179cc_library( 180 name = "log_sink_registry", 181 hdrs = ["log_sink_registry.h"], 182 copts = ABSL_DEFAULT_COPTS, 183 linkopts = ABSL_DEFAULT_LINKOPTS, 184 deps = [ 185 ":log_sink", 186 "//absl/base:config", 187 "//absl/log/internal:log_sink_set", 188 ], 189) 190 191cc_library( 192 name = "log_streamer", 193 hdrs = ["log_streamer.h"], 194 copts = ABSL_DEFAULT_COPTS, 195 linkopts = ABSL_DEFAULT_LINKOPTS, 196 deps = [ 197 ":absl_log", 198 "//absl/base:config", 199 "//absl/base:log_severity", 200 "//absl/strings", 201 "//absl/strings:internal", 202 "//absl/types:optional", 203 "//absl/utility", 204 ], 205) 206 207cc_library( 208 name = "scoped_mock_log", 209 testonly = True, 210 srcs = ["scoped_mock_log.cc"], 211 hdrs = ["scoped_mock_log.h"], 212 copts = ABSL_DEFAULT_COPTS, 213 linkopts = ABSL_DEFAULT_LINKOPTS, 214 deps = [ 215 ":log_entry", 216 ":log_sink", 217 ":log_sink_registry", 218 "//absl/base:config", 219 "//absl/base:log_severity", 220 "//absl/base:raw_logging_internal", 221 "//absl/strings", 222 "@com_google_googletest//:gtest", 223 ], 224) 225 226cc_library( 227 name = "structured", 228 hdrs = ["structured.h"], 229 copts = ABSL_DEFAULT_COPTS, 230 linkopts = ABSL_DEFAULT_LINKOPTS, 231 deps = [ 232 "//absl/base:config", 233 "//absl/log/internal:structured", 234 "//absl/strings", 235 ], 236) 237 238# Test targets 239 240cc_test( 241 name = "absl_check_test", 242 size = "small", 243 srcs = ["absl_check_test.cc"], 244 copts = ABSL_TEST_COPTS, 245 linkopts = ABSL_DEFAULT_LINKOPTS, 246 tags = [ 247 "no_test:os:ios", 248 "no_test_ios", 249 "no_test_wasm", 250 ], 251 deps = [ 252 ":absl_check", 253 ":check_test_impl", 254 "@com_google_googletest//:gtest", 255 "@com_google_googletest//:gtest_main", 256 ], 257) 258 259cc_test( 260 name = "absl_log_basic_test", 261 size = "small", 262 srcs = ["absl_log_basic_test.cc"], 263 copts = ABSL_TEST_COPTS, 264 linkopts = ABSL_DEFAULT_LINKOPTS, 265 deps = [ 266 ":absl_log", 267 ":log_basic_test_impl", 268 "@com_google_googletest//:gtest", 269 "@com_google_googletest//:gtest_main", 270 ], 271) 272 273cc_test( 274 name = "check_test", 275 size = "small", 276 srcs = ["check_test.cc"], 277 copts = ABSL_TEST_COPTS, 278 linkopts = ABSL_DEFAULT_LINKOPTS, 279 tags = [ 280 "no_test:os:ios", 281 "no_test_ios", 282 "no_test_wasm", 283 ], 284 deps = [ 285 ":check", 286 ":check_test_impl", 287 "@com_google_googletest//:gtest", 288 "@com_google_googletest//:gtest_main", 289 ], 290) 291 292cc_library( 293 name = "check_test_impl", 294 testonly = True, 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 textual_hdrs = ["check_test_impl.inc"], 303 visibility = ["//visibility:private"], 304 deps = [ 305 "//absl/base:config", 306 "//absl/base:core_headers", 307 "//absl/log/internal:test_helpers", 308 "//absl/status", 309 "@com_google_googletest//:gtest", 310 ], 311) 312 313cc_test( 314 name = "die_if_null_test", 315 size = "small", 316 srcs = ["die_if_null_test.cc"], 317 copts = ABSL_TEST_COPTS, 318 linkopts = ABSL_DEFAULT_LINKOPTS, 319 deps = [ 320 ":die_if_null", 321 "//absl/base:core_headers", 322 "//absl/log/internal:test_helpers", 323 "@com_google_googletest//:gtest", 324 "@com_google_googletest//:gtest_main", 325 ], 326) 327 328cc_test( 329 name = "flags_test", 330 size = "small", 331 srcs = ["flags_test.cc"], 332 copts = ABSL_TEST_COPTS, 333 linkopts = ABSL_DEFAULT_LINKOPTS, 334 deps = [ 335 ":flags", 336 ":globals", 337 ":log", 338 ":scoped_mock_log", 339 "//absl/base:core_headers", 340 "//absl/base:log_severity", 341 "//absl/flags:flag", 342 "//absl/flags:reflection", 343 "//absl/log/internal:flags", 344 "//absl/log/internal:test_helpers", 345 "//absl/log/internal:test_matchers", 346 "//absl/strings", 347 "@com_google_googletest//:gtest", 348 "@com_google_googletest//:gtest_main", 349 ], 350) 351 352cc_test( 353 name = "globals_test", 354 size = "small", 355 srcs = ["globals_test.cc"], 356 copts = ABSL_TEST_COPTS, 357 linkopts = ABSL_DEFAULT_LINKOPTS, 358 deps = [ 359 ":globals", 360 ":log", 361 ":scoped_mock_log", 362 "//absl/base:core_headers", 363 "//absl/base:log_severity", 364 "//absl/log/internal:globals", 365 "//absl/log/internal:test_helpers", 366 "@com_google_googletest//:gtest", 367 "@com_google_googletest//:gtest_main", 368 ], 369) 370 371cc_test( 372 name = "log_basic_test", 373 size = "small", 374 srcs = ["log_basic_test.cc"], 375 copts = ABSL_TEST_COPTS, 376 linkopts = ABSL_DEFAULT_LINKOPTS, 377 deps = [ 378 ":log", 379 ":log_basic_test_impl", 380 "@com_google_googletest//:gtest", 381 "@com_google_googletest//:gtest_main", 382 ], 383) 384 385cc_library( 386 name = "log_basic_test_impl", 387 testonly = True, 388 copts = ABSL_TEST_COPTS, 389 linkopts = ABSL_DEFAULT_LINKOPTS, 390 textual_hdrs = ["log_basic_test_impl.inc"], 391 visibility = ["//visibility:private"], 392 deps = [ 393 "//absl/base", 394 "//absl/base:log_severity", 395 "//absl/log:globals", 396 "//absl/log:log_entry", 397 "//absl/log:scoped_mock_log", 398 "//absl/log/internal:test_actions", 399 "//absl/log/internal:test_helpers", 400 "//absl/log/internal:test_matchers", 401 "@com_google_googletest//:gtest", 402 ], 403) 404 405cc_test( 406 name = "log_entry_test", 407 size = "small", 408 srcs = ["log_entry_test.cc"], 409 copts = ABSL_TEST_COPTS, 410 linkopts = ABSL_DEFAULT_LINKOPTS, 411 deps = [ 412 ":log_entry", 413 "//absl/base:config", 414 "//absl/base:core_headers", 415 "//absl/base:log_severity", 416 "//absl/log/internal:append_truncated", 417 "//absl/log/internal:format", 418 "//absl/log/internal:test_helpers", 419 "//absl/strings", 420 "//absl/time", 421 "//absl/types:span", 422 "@com_google_googletest//:gtest", 423 "@com_google_googletest//:gtest_main", 424 ], 425) 426 427cc_test( 428 name = "log_format_test", 429 size = "small", 430 srcs = ["log_format_test.cc"], 431 copts = ABSL_TEST_COPTS, 432 linkopts = ABSL_DEFAULT_LINKOPTS, 433 deps = [ 434 ":check", 435 ":log", 436 ":scoped_mock_log", 437 "//absl/log/internal:test_matchers", 438 "//absl/strings", 439 "//absl/strings:str_format", 440 "//absl/types:optional", 441 "@com_google_googletest//:gtest", 442 "@com_google_googletest//:gtest_main", 443 ], 444) 445 446cc_test( 447 name = "log_macro_hygiene_test", 448 size = "small", 449 srcs = ["log_macro_hygiene_test.cc"], 450 copts = ABSL_TEST_COPTS, 451 linkopts = ABSL_DEFAULT_LINKOPTS, 452 deps = [ 453 ":log", 454 ":scoped_mock_log", 455 "//absl/base:core_headers", 456 "//absl/base:log_severity", 457 "@com_google_googletest//:gtest", 458 "@com_google_googletest//:gtest_main", 459 ], 460) 461 462cc_test( 463 name = "log_sink_test", 464 size = "medium", 465 srcs = ["log_sink_test.cc"], 466 copts = ABSL_TEST_COPTS, 467 linkopts = ABSL_DEFAULT_LINKOPTS, 468 tags = [ 469 "no_test:os:ios", 470 "no_test_ios", 471 "no_test_wasm", 472 ], 473 deps = [ 474 ":log", 475 ":log_sink", 476 ":log_sink_registry", 477 ":scoped_mock_log", 478 "//absl/base:core_headers", 479 "//absl/log/internal:test_actions", 480 "//absl/log/internal:test_helpers", 481 "//absl/log/internal:test_matchers", 482 "//absl/strings", 483 "@com_google_googletest//:gtest", 484 "@com_google_googletest//:gtest_main", 485 ], 486) 487 488cc_test( 489 name = "log_streamer_test", 490 size = "medium", 491 srcs = ["log_streamer_test.cc"], 492 copts = ABSL_TEST_COPTS, 493 linkopts = ABSL_DEFAULT_LINKOPTS, 494 deps = [ 495 ":log", 496 ":log_streamer", 497 ":scoped_mock_log", 498 "//absl/base", 499 "//absl/base:core_headers", 500 "//absl/base:log_severity", 501 "//absl/log/internal:test_actions", 502 "//absl/log/internal:test_helpers", 503 "//absl/log/internal:test_matchers", 504 "//absl/strings", 505 "@com_google_googletest//:gtest", 506 "@com_google_googletest//:gtest_main", 507 ], 508) 509 510cc_test( 511 name = "log_modifier_methods_test", 512 size = "small", 513 srcs = ["log_modifier_methods_test.cc"], 514 copts = ABSL_TEST_COPTS, 515 linkopts = ABSL_DEFAULT_LINKOPTS, 516 deps = [ 517 ":log", 518 ":log_sink", 519 ":scoped_mock_log", 520 "//absl/log/internal:test_actions", 521 "//absl/log/internal:test_helpers", 522 "//absl/log/internal:test_matchers", 523 "//absl/strings", 524 "//absl/time", 525 "@com_google_googletest//:gtest", 526 "@com_google_googletest//:gtest_main", 527 ], 528) 529 530cc_test( 531 name = "scoped_mock_log_test", 532 size = "small", 533 srcs = ["scoped_mock_log_test.cc"], 534 copts = ABSL_TEST_COPTS, 535 linkopts = ABSL_DEFAULT_LINKOPTS, 536 linkstatic = 1, 537 tags = [ 538 "no_test:os:ios", 539 "no_test_ios", 540 "no_test_wasm", 541 ], 542 deps = [ 543 ":globals", 544 ":log", 545 ":scoped_mock_log", 546 "//absl/base:core_headers", 547 "//absl/base:log_severity", 548 "//absl/log/internal:test_helpers", 549 "//absl/log/internal:test_matchers", 550 "//absl/memory", 551 "//absl/strings", 552 "//absl/synchronization", 553 "@com_google_googletest//:gtest", 554 "@com_google_googletest//:gtest_main", 555 ], 556) 557 558cc_test( 559 name = "stripping_test", 560 size = "small", 561 srcs = ["stripping_test.cc"], 562 copts = ABSL_TEST_COPTS, 563 linkopts = ABSL_DEFAULT_LINKOPTS, 564 # This test requires all code live in the binary (instead of shared libraries) 565 # because we test for the existence of specific literals in the binary. 566 linkstatic = 1, 567 deps = [ 568 ":check", 569 ":log", 570 "//absl/base:log_severity", 571 "//absl/base:strerror", 572 "//absl/flags:program_name", 573 "//absl/log/internal:test_helpers", 574 "//absl/strings", 575 "//absl/strings:str_format", 576 "@com_google_googletest//:gtest", 577 "@com_google_googletest//:gtest_main", 578 ], 579) 580 581cc_test( 582 name = "structured_test", 583 size = "small", 584 srcs = ["structured_test.cc"], 585 copts = ABSL_TEST_COPTS, 586 linkopts = ABSL_DEFAULT_LINKOPTS, 587 deps = [ 588 ":log", 589 ":scoped_mock_log", 590 ":structured", 591 "//absl/base:core_headers", 592 "//absl/log/internal:test_helpers", 593 "//absl/log/internal:test_matchers", 594 "@com_google_googletest//:gtest", 595 "@com_google_googletest//:gtest_main", 596 ], 597) 598 599cc_test( 600 name = "log_benchmark", 601 size = "small", 602 srcs = ["log_benchmark.cc"], 603 copts = ABSL_TEST_COPTS, 604 linkopts = ABSL_DEFAULT_LINKOPTS, 605 tags = ["benchmark"], 606 deps = [ 607 ":check", 608 ":flags", 609 ":globals", 610 ":log", 611 ":log_entry", 612 ":log_sink", 613 ":log_sink_registry", 614 "//absl/base:core_headers", 615 "//absl/base:log_severity", 616 "//absl/flags:flag", 617 "//absl/log/internal:flags", 618 "@com_github_google_benchmark//:benchmark_main", 619 ], 620) 621