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