BUILD.bazel 16 KB

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