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(default_visibility = ["//visibility:public"]) 25 26licenses(["notice"]) 27 28# Public targets 29cc_library( 30 name = "check", 31 hdrs = ["check.h"], 32 copts = ABSL_DEFAULT_COPTS, 33 linkopts = ABSL_DEFAULT_LINKOPTS, 34 deps = [ 35 "//absl/base:core_headers", 36 "//absl/log/internal:check_op", 37 "//absl/log/internal:conditions", 38 "//absl/log/internal:log_message", 39 "//absl/log/internal:strip", 40 ], 41) 42 43cc_library( 44 name = "die_if_null", 45 srcs = ["die_if_null.cc"], 46 hdrs = ["die_if_null.h"], 47 copts = ABSL_DEFAULT_COPTS, 48 linkopts = ABSL_DEFAULT_LINKOPTS, 49 deps = [ 50 ":log", 51 "//absl/base:config", 52 "//absl/base:core_headers", 53 "//absl/strings", 54 ], 55) 56 57cc_library( 58 name = "flags", 59 srcs = ["flags.cc"], 60 hdrs = ["flags.h"], 61 copts = ABSL_DEFAULT_COPTS, 62 linkopts = ABSL_DEFAULT_LINKOPTS, 63 visibility = ["//visibility:public"], 64 deps = [ 65 ":globals", 66 "//absl/base:config", 67 "//absl/base:core_headers", 68 "//absl/base:log_severity", 69 "//absl/flags:flag", 70 "//absl/flags:marshalling", 71 "//absl/log/internal:config", 72 "//absl/log/internal:flags", 73 "//absl/strings", 74 ], 75 # Binaries which do not access these flags from C++ still want this library linked in. 76 alwayslink = True, 77) 78 79cc_library( 80 name = "globals", 81 srcs = ["globals.cc"], 82 hdrs = ["globals.h"], 83 copts = ABSL_DEFAULT_COPTS, 84 linkopts = ABSL_DEFAULT_LINKOPTS, 85 visibility = ["//visibility:public"], 86 deps = [ 87 "//absl/base:atomic_hook", 88 "//absl/base:config", 89 "//absl/base:core_headers", 90 "//absl/base:log_severity", 91 "//absl/hash", 92 "//absl/strings", 93 ], 94) 95 96cc_library( 97 name = "initialize", 98 srcs = ["initialize.cc"], 99 hdrs = ["initialize.h"], 100 copts = ABSL_DEFAULT_COPTS, 101 linkopts = ABSL_DEFAULT_LINKOPTS, 102 visibility = ["//visibility:public"], 103 deps = [ 104 ":globals", 105 "//absl/base:config", 106 "//absl/log/internal:globals", 107 "//absl/time", 108 ], 109) 110 111cc_library( 112 name = "log", 113 hdrs = ["log.h"], 114 copts = ABSL_DEFAULT_COPTS, 115 linkopts = ABSL_DEFAULT_LINKOPTS, 116 deps = [ 117 "//absl/log/internal:conditions", 118 "//absl/log/internal:log_message", 119 "//absl/log/internal:strip", 120 ], 121) 122 123cc_library( 124 name = "log_entry", 125 srcs = ["log_entry.cc"], 126 hdrs = ["log_entry.h"], 127 copts = ABSL_DEFAULT_COPTS, 128 linkopts = ABSL_DEFAULT_LINKOPTS, 129 deps = [ 130 "//absl/base:config", 131 "//absl/base:core_headers", 132 "//absl/base:log_severity", 133 "//absl/log/internal:config", 134 "//absl/strings", 135 "//absl/time", 136 "//absl/types:span", 137 ], 138) 139 140cc_library( 141 name = "log_sink", 142 srcs = ["log_sink.cc"], 143 hdrs = ["log_sink.h"], 144 copts = ABSL_DEFAULT_COPTS, 145 linkopts = ABSL_DEFAULT_LINKOPTS, 146 deps = [ 147 ":log_entry", 148 "//absl/base:config", 149 ], 150) 151 152cc_library( 153 name = "log_sink_registry", 154 hdrs = ["log_sink_registry.h"], 155 copts = ABSL_DEFAULT_COPTS, 156 linkopts = ABSL_DEFAULT_LINKOPTS, 157 deps = [ 158 ":log_sink", 159 "//absl/base:config", 160 "//absl/log/internal:log_sink_set", 161 ], 162) 163 164cc_library( 165 name = "log_streamer", 166 hdrs = ["log_streamer.h"], 167 copts = ABSL_DEFAULT_COPTS, 168 linkopts = ABSL_DEFAULT_LINKOPTS, 169 deps = [ 170 ":log", 171 "//absl/base:config", 172 "//absl/base:log_severity", 173 "//absl/strings", 174 "//absl/strings:internal", 175 "//absl/types:optional", 176 "//absl/utility", 177 ], 178) 179 180cc_library( 181 name = "scoped_mock_log", 182 testonly = True, 183 srcs = ["scoped_mock_log.cc"], 184 hdrs = ["scoped_mock_log.h"], 185 copts = ABSL_DEFAULT_COPTS, 186 linkopts = ABSL_DEFAULT_LINKOPTS, 187 deps = [ 188 ":log_entry", 189 ":log_sink", 190 ":log_sink_registry", 191 "//absl/base:config", 192 "//absl/base:log_severity", 193 "//absl/base:raw_logging_internal", 194 "//absl/strings", 195 "@com_google_googletest//:gtest", 196 ], 197) 198 199# Test targets 200cc_test( 201 name = "basic_log_test", 202 size = "small", 203 srcs = ["basic_log_test.cc"], 204 copts = ABSL_TEST_COPTS, 205 linkopts = ABSL_DEFAULT_LINKOPTS, 206 deps = [ 207 ":globals", 208 ":log", 209 ":log_entry", 210 ":scoped_mock_log", 211 "//absl/base", 212 "//absl/base:log_severity", 213 "//absl/log/internal:test_actions", 214 "//absl/log/internal:test_helpers", 215 "//absl/log/internal:test_matchers", 216 "@com_google_googletest//:gtest_main", 217 ], 218) 219 220cc_test( 221 name = "check_test", 222 size = "small", 223 srcs = ["check_test.cc"], 224 copts = ABSL_TEST_COPTS, 225 linkopts = ABSL_DEFAULT_LINKOPTS, 226 tags = [ 227 "no_test:os:ios", 228 "no_test_ios", 229 "no_test_wasm", 230 ], 231 deps = [ 232 ":check", 233 "//absl/base:config", 234 "//absl/base:core_headers", 235 "//absl/log/internal:test_helpers", 236 "@com_google_googletest//:gtest_main", 237 ], 238) 239 240cc_test( 241 name = "die_if_null_test", 242 size = "small", 243 srcs = ["die_if_null_test.cc"], 244 copts = ABSL_TEST_COPTS, 245 linkopts = ABSL_DEFAULT_LINKOPTS, 246 deps = [ 247 ":die_if_null", 248 "//absl/base:core_headers", 249 "//absl/log/internal:test_helpers", 250 "@com_google_googletest//:gtest_main", 251 ], 252) 253 254cc_test( 255 name = "flags_test", 256 size = "small", 257 srcs = ["flags_test.cc"], 258 copts = ABSL_TEST_COPTS, 259 linkopts = ABSL_DEFAULT_LINKOPTS, 260 deps = [ 261 ":flags", 262 ":globals", 263 ":log", 264 ":scoped_mock_log", 265 "//absl/base:core_headers", 266 "//absl/base:log_severity", 267 "//absl/flags:flag", 268 "//absl/flags:reflection", 269 "//absl/log/internal:flags", 270 "//absl/log/internal:test_helpers", 271 "//absl/log/internal:test_matchers", 272 "//absl/strings", 273 "@com_google_googletest//:gtest_main", 274 ], 275) 276 277cc_test( 278 name = "globals_test", 279 size = "small", 280 srcs = ["globals_test.cc"], 281 copts = ABSL_TEST_COPTS, 282 linkopts = ABSL_DEFAULT_LINKOPTS, 283 deps = [ 284 ":globals", 285 ":log", 286 ":scoped_mock_log", 287 "//absl/base:core_headers", 288 "//absl/base:log_severity", 289 "//absl/log/internal:globals", 290 "//absl/log/internal:test_helpers", 291 "@com_google_googletest//:gtest_main", 292 ], 293) 294 295cc_test( 296 name = "log_entry_test", 297 size = "small", 298 srcs = ["log_entry_test.cc"], 299 copts = ABSL_TEST_COPTS, 300 linkopts = ABSL_DEFAULT_LINKOPTS, 301 deps = [ 302 ":log_entry", 303 "//absl/base:config", 304 "//absl/base:core_headers", 305 "//absl/base:log_severity", 306 "//absl/log/internal:format", 307 "//absl/log/internal:test_helpers", 308 "//absl/strings", 309 "//absl/time", 310 "//absl/types:span", 311 "@com_google_googletest//:gtest_main", 312 ], 313) 314 315cc_test( 316 name = "log_format_test", 317 size = "small", 318 srcs = ["log_format_test.cc"], 319 copts = ABSL_TEST_COPTS, 320 linkopts = ABSL_DEFAULT_LINKOPTS, 321 deps = [ 322 ":log", 323 ":scoped_mock_log", 324 "//absl/log/internal:config", 325 "//absl/log/internal:test_matchers", 326 "//absl/strings", 327 "@com_google_googletest//:gtest_main", 328 ], 329) 330 331cc_test( 332 name = "log_macro_hygiene_test", 333 size = "small", 334 srcs = ["log_macro_hygiene_test.cc"], 335 copts = ABSL_TEST_COPTS, 336 linkopts = ABSL_DEFAULT_LINKOPTS, 337 deps = [ 338 ":log", 339 ":scoped_mock_log", 340 "//absl/base:core_headers", 341 "//absl/base:log_severity", 342 "@com_google_googletest//:gtest_main", 343 ], 344) 345 346cc_test( 347 name = "log_sink_test", 348 size = "medium", 349 srcs = ["log_sink_test.cc"], 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 deps = [ 358 ":log", 359 ":log_sink", 360 ":log_sink_registry", 361 ":scoped_mock_log", 362 "//absl/base:core_headers", 363 "//absl/base:raw_logging_internal", 364 "//absl/log/internal:test_actions", 365 "//absl/log/internal:test_helpers", 366 "//absl/log/internal:test_matchers", 367 "//absl/strings", 368 "@com_google_googletest//:gtest_main", 369 ], 370) 371 372cc_test( 373 name = "log_streamer_test", 374 size = "medium", 375 srcs = ["log_streamer_test.cc"], 376 copts = ABSL_TEST_COPTS, 377 linkopts = ABSL_DEFAULT_LINKOPTS, 378 deps = [ 379 ":log", 380 ":log_streamer", 381 ":scoped_mock_log", 382 "//absl/base", 383 "//absl/base:core_headers", 384 "//absl/base:log_severity", 385 "//absl/log/internal:test_actions", 386 "//absl/log/internal:test_helpers", 387 "//absl/log/internal:test_matchers", 388 "//absl/strings", 389 "@com_google_googletest//:gtest_main", 390 ], 391) 392 393cc_test( 394 name = "log_modifier_methods_test", 395 size = "small", 396 srcs = ["log_modifier_methods_test.cc"], 397 copts = ABSL_TEST_COPTS, 398 linkopts = ABSL_DEFAULT_LINKOPTS, 399 deps = [ 400 ":log", 401 ":log_sink", 402 ":scoped_mock_log", 403 "//absl/log/internal:test_actions", 404 "//absl/log/internal:test_helpers", 405 "//absl/log/internal:test_matchers", 406 "//absl/strings", 407 "//absl/time", 408 "@com_google_googletest//:gtest_main", 409 ], 410) 411 412cc_test( 413 name = "scoped_mock_log_test", 414 size = "small", 415 srcs = ["scoped_mock_log_test.cc"], 416 copts = ABSL_TEST_COPTS, 417 linkopts = ABSL_DEFAULT_LINKOPTS, 418 linkstatic = 1, 419 tags = [ 420 "no_test:os:ios", 421 "no_test_ios", 422 "no_test_wasm", 423 ], 424 deps = [ 425 ":globals", 426 ":log", 427 ":scoped_mock_log", 428 "//absl/base:core_headers", 429 "//absl/base:log_severity", 430 "//absl/log/internal:test_helpers", 431 "//absl/log/internal:test_matchers", 432 "//absl/memory", 433 "//absl/strings", 434 "//absl/synchronization", 435 "@com_google_googletest//:gtest_main", 436 ], 437) 438 439cc_test( 440 name = "stripping_test", 441 size = "small", 442 srcs = ["stripping_test.cc"], 443 copts = ABSL_TEST_COPTS, 444 linkopts = ABSL_DEFAULT_LINKOPTS, 445 # This test requires all code live in the binary (instead of shared libraries) 446 # because we test for the existence of specific literals in the binary. 447 linkstatic = 1, 448 deps = [ 449 ":check", 450 ":log", 451 "//absl/base:strerror", 452 "//absl/flags:program_name", 453 "//absl/log/internal:test_helpers", 454 "//absl/strings", 455 "//absl/strings:str_format", 456 "@com_google_googletest//:gtest_main", 457 ], 458) 459 460cc_binary( 461 name = "log_benchmark", 462 testonly = 1, 463 srcs = ["log_benchmark.cc"], 464 copts = ABSL_TEST_COPTS, 465 linkopts = ABSL_DEFAULT_LINKOPTS, 466 tags = ["benchmark"], 467 deps = [ 468 ":check", 469 ":flags", 470 ":globals", 471 ":log", 472 ":log_entry", 473 ":log_sink", 474 ":log_sink_registry", 475 "//absl/base:core_headers", 476 "//absl/base:log_severity", 477 "//absl/flags:flag", 478 "//absl/log/internal:flags", 479 "@com_github_google_benchmark//:benchmark_main", 480 ], 481) 482