BUILD.bazel 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. #
  2. # Copyright 2019 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. # Internal-only implementation classes for Abseil Random
  17. load(
  18. "//absl:copts/configure_copts.bzl",
  19. "ABSL_DEFAULT_COPTS",
  20. "ABSL_DEFAULT_LINKOPTS",
  21. "ABSL_RANDOM_RANDEN_COPTS",
  22. "ABSL_TEST_COPTS",
  23. "absl_random_randen_copts_init",
  24. )
  25. package(default_visibility = [
  26. "//absl/random:__pkg__",
  27. ])
  28. licenses(["notice"])
  29. cc_library(
  30. name = "traits",
  31. hdrs = ["traits.h"],
  32. copts = ABSL_DEFAULT_COPTS,
  33. linkopts = ABSL_DEFAULT_LINKOPTS,
  34. deps = ["//absl/base:config"],
  35. )
  36. cc_library(
  37. name = "distribution_caller",
  38. hdrs = ["distribution_caller.h"],
  39. copts = ABSL_DEFAULT_COPTS,
  40. linkopts = ABSL_DEFAULT_LINKOPTS,
  41. deps = [
  42. "//absl/base:config",
  43. "//absl/base:fast_type_id",
  44. "//absl/utility",
  45. ],
  46. )
  47. cc_library(
  48. name = "fast_uniform_bits",
  49. hdrs = [
  50. "fast_uniform_bits.h",
  51. ],
  52. copts = ABSL_DEFAULT_COPTS,
  53. linkopts = ABSL_DEFAULT_LINKOPTS,
  54. deps = [
  55. "//absl/base:config",
  56. "//absl/meta:type_traits",
  57. ],
  58. )
  59. cc_library(
  60. name = "seed_material",
  61. srcs = [
  62. "seed_material.cc",
  63. ],
  64. hdrs = [
  65. "seed_material.h",
  66. ],
  67. copts = ABSL_DEFAULT_COPTS,
  68. linkopts = ABSL_DEFAULT_LINKOPTS + select({
  69. "//absl:msvc_compiler": ["-DEFAULTLIB:bcrypt.lib"],
  70. "//absl:clang-cl_compiler": ["-DEFAULTLIB:bcrypt.lib"],
  71. "//conditions:default": [],
  72. }),
  73. deps = [
  74. ":fast_uniform_bits",
  75. "//absl/base:core_headers",
  76. "//absl/base:dynamic_annotations",
  77. "//absl/base:raw_logging_internal",
  78. "//absl/strings",
  79. "//absl/types:optional",
  80. "//absl/types:span",
  81. ],
  82. )
  83. cc_library(
  84. name = "pool_urbg",
  85. srcs = [
  86. "pool_urbg.cc",
  87. ],
  88. hdrs = [
  89. "pool_urbg.h",
  90. ],
  91. copts = ABSL_DEFAULT_COPTS,
  92. linkopts = select({
  93. "//absl:msvc_compiler": [],
  94. "//absl:clang-cl_compiler": [],
  95. "//absl:wasm": [],
  96. "//conditions:default": ["-pthread"],
  97. }) + ABSL_DEFAULT_LINKOPTS,
  98. deps = [
  99. ":randen",
  100. ":seed_material",
  101. ":traits",
  102. "//absl/base",
  103. "//absl/base:config",
  104. "//absl/base:core_headers",
  105. "//absl/base:endian",
  106. "//absl/base:raw_logging_internal",
  107. "//absl/random:seed_gen_exception",
  108. "//absl/types:span",
  109. ],
  110. )
  111. cc_library(
  112. name = "explicit_seed_seq",
  113. testonly = 1,
  114. hdrs = [
  115. "explicit_seed_seq.h",
  116. ],
  117. copts = ABSL_DEFAULT_COPTS,
  118. linkopts = ABSL_DEFAULT_LINKOPTS,
  119. deps = [
  120. "//absl/base:config",
  121. "//absl/base:endian",
  122. ],
  123. )
  124. cc_library(
  125. name = "sequence_urbg",
  126. testonly = 1,
  127. hdrs = [
  128. "sequence_urbg.h",
  129. ],
  130. copts = ABSL_DEFAULT_COPTS,
  131. linkopts = ABSL_DEFAULT_LINKOPTS,
  132. deps = ["//absl/base:config"],
  133. )
  134. cc_library(
  135. name = "salted_seed_seq",
  136. hdrs = [
  137. "salted_seed_seq.h",
  138. ],
  139. copts = ABSL_DEFAULT_COPTS,
  140. linkopts = ABSL_DEFAULT_LINKOPTS,
  141. deps = [
  142. ":seed_material",
  143. "//absl/container:inlined_vector",
  144. "//absl/meta:type_traits",
  145. "//absl/types:optional",
  146. "//absl/types:span",
  147. ],
  148. )
  149. cc_library(
  150. name = "iostream_state_saver",
  151. hdrs = ["iostream_state_saver.h"],
  152. copts = ABSL_DEFAULT_COPTS,
  153. linkopts = ABSL_DEFAULT_LINKOPTS,
  154. deps = [
  155. "//absl/meta:type_traits",
  156. "//absl/numeric:int128",
  157. ],
  158. )
  159. cc_library(
  160. name = "generate_real",
  161. hdrs = [
  162. "generate_real.h",
  163. ],
  164. copts = ABSL_DEFAULT_COPTS,
  165. linkopts = ABSL_DEFAULT_LINKOPTS,
  166. deps = [
  167. ":fastmath",
  168. ":traits",
  169. "//absl/meta:type_traits",
  170. "//absl/numeric:bits",
  171. ],
  172. )
  173. cc_library(
  174. name = "fastmath",
  175. hdrs = [
  176. "fastmath.h",
  177. ],
  178. copts = ABSL_DEFAULT_COPTS,
  179. linkopts = ABSL_DEFAULT_LINKOPTS,
  180. deps = ["//absl/numeric:bits"],
  181. )
  182. cc_library(
  183. name = "wide_multiply",
  184. hdrs = ["wide_multiply.h"],
  185. copts = ABSL_DEFAULT_COPTS,
  186. linkopts = ABSL_DEFAULT_LINKOPTS,
  187. deps = [
  188. ":traits",
  189. "//absl/base:config",
  190. "//absl/numeric:bits",
  191. "//absl/numeric:int128",
  192. ],
  193. )
  194. cc_library(
  195. name = "nonsecure_base",
  196. hdrs = ["nonsecure_base.h"],
  197. copts = ABSL_DEFAULT_COPTS,
  198. linkopts = ABSL_DEFAULT_LINKOPTS,
  199. deps = [
  200. ":pool_urbg",
  201. ":salted_seed_seq",
  202. ":seed_material",
  203. "//absl/base:core_headers",
  204. "//absl/meta:type_traits",
  205. "//absl/types:optional",
  206. "//absl/types:span",
  207. ],
  208. )
  209. cc_library(
  210. name = "pcg_engine",
  211. hdrs = ["pcg_engine.h"],
  212. copts = ABSL_DEFAULT_COPTS,
  213. linkopts = ABSL_DEFAULT_LINKOPTS,
  214. deps = [
  215. ":fastmath",
  216. ":iostream_state_saver",
  217. "//absl/base:config",
  218. "//absl/meta:type_traits",
  219. "//absl/numeric:bits",
  220. "//absl/numeric:int128",
  221. ],
  222. )
  223. cc_library(
  224. name = "randen_engine",
  225. hdrs = ["randen_engine.h"],
  226. copts = ABSL_DEFAULT_COPTS,
  227. linkopts = ABSL_DEFAULT_LINKOPTS,
  228. deps = [
  229. ":iostream_state_saver",
  230. ":randen",
  231. "//absl/base:endian",
  232. "//absl/meta:type_traits",
  233. ],
  234. )
  235. cc_library(
  236. name = "platform",
  237. srcs = [
  238. "randen_round_keys.cc",
  239. ],
  240. hdrs = [
  241. "randen_traits.h",
  242. ],
  243. copts = ABSL_DEFAULT_COPTS,
  244. linkopts = ABSL_DEFAULT_LINKOPTS,
  245. textual_hdrs = [
  246. "platform.h",
  247. ],
  248. deps = ["//absl/base:config"],
  249. )
  250. cc_library(
  251. name = "randen",
  252. srcs = [
  253. "randen.cc",
  254. ],
  255. hdrs = [
  256. "randen.h",
  257. ],
  258. copts = ABSL_DEFAULT_COPTS,
  259. linkopts = ABSL_DEFAULT_LINKOPTS,
  260. deps = [
  261. ":platform",
  262. ":randen_hwaes",
  263. ":randen_slow",
  264. "//absl/base:raw_logging_internal",
  265. ],
  266. )
  267. cc_library(
  268. name = "randen_slow",
  269. srcs = ["randen_slow.cc"],
  270. hdrs = ["randen_slow.h"],
  271. copts = ABSL_DEFAULT_COPTS,
  272. linkopts = ABSL_DEFAULT_LINKOPTS,
  273. deps = [
  274. ":platform",
  275. "//absl/base:config",
  276. "//absl/base:core_headers",
  277. "//absl/base:endian",
  278. "//absl/numeric:int128",
  279. ],
  280. )
  281. absl_random_randen_copts_init()
  282. cc_library(
  283. name = "randen_hwaes",
  284. srcs = [
  285. "randen_detect.cc",
  286. ],
  287. hdrs = [
  288. "randen_detect.h",
  289. "randen_hwaes.h",
  290. ],
  291. copts = ABSL_DEFAULT_COPTS,
  292. linkopts = ABSL_DEFAULT_LINKOPTS,
  293. deps = [
  294. ":platform",
  295. ":randen_hwaes_impl",
  296. "//absl/base:config",
  297. ],
  298. )
  299. # build with --save_temps to see assembly language output.
  300. cc_library(
  301. name = "randen_hwaes_impl",
  302. srcs = [
  303. "randen_hwaes.cc",
  304. "randen_hwaes.h",
  305. ],
  306. copts = ABSL_DEFAULT_COPTS + ABSL_RANDOM_RANDEN_COPTS + select({
  307. "//absl:msvc_compiler": [],
  308. "//absl:clang-cl_compiler": [],
  309. "//conditions:default": ["-Wno-pass-failed"],
  310. }),
  311. linkopts = ABSL_DEFAULT_LINKOPTS,
  312. deps = [
  313. ":platform",
  314. "//absl/base:config",
  315. "//absl/base:core_headers",
  316. "//absl/numeric:int128",
  317. ],
  318. )
  319. cc_binary(
  320. name = "gaussian_distribution_gentables",
  321. srcs = [
  322. "gaussian_distribution_gentables.cc",
  323. ],
  324. linkopts = ABSL_DEFAULT_LINKOPTS,
  325. deps = [
  326. "//absl/base:core_headers",
  327. "//absl/random:distributions",
  328. ],
  329. )
  330. cc_library(
  331. name = "distribution_test_util",
  332. testonly = 1,
  333. srcs = [
  334. "chi_square.cc",
  335. "distribution_test_util.cc",
  336. ],
  337. hdrs = [
  338. "chi_square.h",
  339. "distribution_test_util.h",
  340. ],
  341. copts = ABSL_DEFAULT_COPTS,
  342. linkopts = ABSL_DEFAULT_LINKOPTS,
  343. deps = [
  344. "//absl/base:config",
  345. "//absl/base:core_headers",
  346. "//absl/base:raw_logging_internal",
  347. "//absl/strings",
  348. "//absl/strings:str_format",
  349. "//absl/types:span",
  350. ],
  351. )
  352. # Common tags for tests, etc.
  353. ABSL_RANDOM_NONPORTABLE_TAGS = [
  354. "no_test_android_arm",
  355. "no_test_android_arm64",
  356. "no_test_android_x86",
  357. "no_test_darwin_x86_64",
  358. "no_test_ios_x86_64",
  359. "no_test_loonix",
  360. "no_test_msvc_x64",
  361. "no_test_wasm",
  362. ]
  363. cc_test(
  364. name = "traits_test",
  365. size = "small",
  366. srcs = ["traits_test.cc"],
  367. copts = ABSL_TEST_COPTS,
  368. linkopts = ABSL_DEFAULT_LINKOPTS,
  369. deps = [
  370. ":traits",
  371. "@com_google_googletest//:gtest_main",
  372. ],
  373. )
  374. cc_test(
  375. name = "generate_real_test",
  376. size = "small",
  377. srcs = [
  378. "generate_real_test.cc",
  379. ],
  380. copts = ABSL_TEST_COPTS,
  381. linkopts = ABSL_DEFAULT_LINKOPTS,
  382. deps = [
  383. ":generate_real",
  384. "//absl/flags:flag",
  385. "//absl/numeric:bits",
  386. "@com_google_googletest//:gtest_main",
  387. ],
  388. )
  389. cc_test(
  390. name = "distribution_test_util_test",
  391. size = "small",
  392. srcs = ["distribution_test_util_test.cc"],
  393. copts = ABSL_TEST_COPTS,
  394. linkopts = ABSL_DEFAULT_LINKOPTS,
  395. deps = [
  396. ":distribution_test_util",
  397. "@com_google_googletest//:gtest_main",
  398. ],
  399. )
  400. cc_test(
  401. name = "fastmath_test",
  402. size = "small",
  403. srcs = ["fastmath_test.cc"],
  404. copts = ABSL_TEST_COPTS,
  405. linkopts = ABSL_DEFAULT_LINKOPTS,
  406. deps = [
  407. ":fastmath",
  408. "@com_google_googletest//:gtest_main",
  409. ],
  410. )
  411. cc_test(
  412. name = "explicit_seed_seq_test",
  413. size = "small",
  414. srcs = ["explicit_seed_seq_test.cc"],
  415. copts = ABSL_TEST_COPTS,
  416. linkopts = ABSL_DEFAULT_LINKOPTS,
  417. deps = [
  418. ":explicit_seed_seq",
  419. "//absl/random:seed_sequences",
  420. "@com_google_googletest//:gtest_main",
  421. ],
  422. )
  423. cc_test(
  424. name = "salted_seed_seq_test",
  425. size = "small",
  426. srcs = ["salted_seed_seq_test.cc"],
  427. copts = ABSL_TEST_COPTS,
  428. linkopts = ABSL_DEFAULT_LINKOPTS,
  429. deps = [
  430. ":salted_seed_seq",
  431. "@com_google_googletest//:gtest_main",
  432. ],
  433. )
  434. cc_test(
  435. name = "chi_square_test",
  436. size = "small",
  437. srcs = [
  438. "chi_square_test.cc",
  439. ],
  440. copts = ABSL_TEST_COPTS,
  441. linkopts = ABSL_DEFAULT_LINKOPTS,
  442. deps = [
  443. ":distribution_test_util",
  444. "//absl/base:core_headers",
  445. "@com_google_googletest//:gtest_main",
  446. ],
  447. )
  448. cc_test(
  449. name = "fast_uniform_bits_test",
  450. size = "small",
  451. srcs = [
  452. "fast_uniform_bits_test.cc",
  453. ],
  454. copts = ABSL_TEST_COPTS,
  455. linkopts = ABSL_DEFAULT_LINKOPTS,
  456. deps = [
  457. ":fast_uniform_bits",
  458. "@com_google_googletest//:gtest_main",
  459. ],
  460. )
  461. cc_library(
  462. name = "mock_helpers",
  463. hdrs = ["mock_helpers.h"],
  464. deps = [
  465. "//absl/base:fast_type_id",
  466. "//absl/types:optional",
  467. ],
  468. )
  469. cc_library(
  470. name = "mock_overload_set",
  471. testonly = 1,
  472. hdrs = ["mock_overload_set.h"],
  473. deps = [
  474. ":mock_helpers",
  475. "//absl/random:mocking_bit_gen",
  476. "@com_google_googletest//:gtest",
  477. ],
  478. )
  479. cc_test(
  480. name = "nonsecure_base_test",
  481. size = "small",
  482. srcs = [
  483. "nonsecure_base_test.cc",
  484. ],
  485. copts = ABSL_TEST_COPTS,
  486. linkopts = ABSL_DEFAULT_LINKOPTS,
  487. deps = [
  488. ":nonsecure_base",
  489. "//absl/random",
  490. "//absl/random:distributions",
  491. "//absl/random:seed_sequences",
  492. "//absl/strings",
  493. "@com_google_googletest//:gtest_main",
  494. ],
  495. )
  496. cc_test(
  497. name = "seed_material_test",
  498. size = "small",
  499. srcs = ["seed_material_test.cc"],
  500. copts = ABSL_TEST_COPTS,
  501. linkopts = ABSL_DEFAULT_LINKOPTS,
  502. deps = [
  503. ":seed_material",
  504. "@com_google_googletest//:gtest_main",
  505. ],
  506. )
  507. cc_test(
  508. name = "pool_urbg_test",
  509. size = "small",
  510. srcs = [
  511. "pool_urbg_test.cc",
  512. ],
  513. copts = ABSL_TEST_COPTS,
  514. linkopts = ABSL_DEFAULT_LINKOPTS,
  515. deps = [
  516. ":pool_urbg",
  517. "//absl/meta:type_traits",
  518. "//absl/types:span",
  519. "@com_google_googletest//:gtest_main",
  520. ],
  521. )
  522. cc_test(
  523. name = "pcg_engine_test",
  524. size = "medium", # Trying to measure accuracy.
  525. srcs = ["pcg_engine_test.cc"],
  526. copts = ABSL_TEST_COPTS,
  527. flaky = 1,
  528. linkopts = ABSL_DEFAULT_LINKOPTS,
  529. deps = [
  530. ":explicit_seed_seq",
  531. ":pcg_engine",
  532. "//absl/time",
  533. "@com_google_googletest//:gtest_main",
  534. ],
  535. )
  536. cc_test(
  537. name = "randen_engine_test",
  538. size = "medium",
  539. srcs = [
  540. "randen_engine_test.cc",
  541. ],
  542. copts = ABSL_TEST_COPTS,
  543. linkopts = ABSL_DEFAULT_LINKOPTS,
  544. deps = [
  545. ":explicit_seed_seq",
  546. ":randen_engine",
  547. "//absl/base:raw_logging_internal",
  548. "//absl/strings",
  549. "//absl/time",
  550. "@com_google_googletest//:gtest_main",
  551. ],
  552. )
  553. cc_test(
  554. name = "randen_test",
  555. size = "small",
  556. srcs = ["randen_test.cc"],
  557. copts = ABSL_TEST_COPTS,
  558. linkopts = ABSL_DEFAULT_LINKOPTS,
  559. deps = [
  560. ":randen",
  561. "//absl/meta:type_traits",
  562. "@com_google_googletest//:gtest_main",
  563. ],
  564. )
  565. cc_test(
  566. name = "randen_slow_test",
  567. size = "small",
  568. srcs = ["randen_slow_test.cc"],
  569. copts = ABSL_TEST_COPTS,
  570. linkopts = ABSL_DEFAULT_LINKOPTS,
  571. deps = [
  572. ":platform",
  573. ":randen_slow",
  574. "//absl/base:endian",
  575. "@com_google_googletest//:gtest_main",
  576. ],
  577. )
  578. cc_test(
  579. name = "randen_hwaes_test",
  580. size = "small",
  581. srcs = ["randen_hwaes_test.cc"],
  582. copts = ABSL_TEST_COPTS + ABSL_RANDOM_RANDEN_COPTS,
  583. linkopts = ABSL_DEFAULT_LINKOPTS,
  584. tags = ABSL_RANDOM_NONPORTABLE_TAGS,
  585. deps = [
  586. ":platform",
  587. ":randen_hwaes",
  588. ":randen_hwaes_impl", # build_cleaner: keep
  589. "//absl/base:raw_logging_internal",
  590. "//absl/strings:str_format",
  591. "@com_google_googletest//:gtest",
  592. ],
  593. )
  594. cc_test(
  595. name = "wide_multiply_test",
  596. size = "small",
  597. srcs = ["wide_multiply_test.cc"],
  598. copts = ABSL_TEST_COPTS,
  599. linkopts = ABSL_DEFAULT_LINKOPTS,
  600. deps = [
  601. ":wide_multiply",
  602. "//absl/numeric:bits",
  603. "//absl/numeric:int128",
  604. "@com_google_googletest//:gtest_main",
  605. ],
  606. )
  607. cc_library(
  608. name = "nanobenchmark",
  609. srcs = ["nanobenchmark.cc"],
  610. linkopts = ABSL_DEFAULT_LINKOPTS,
  611. textual_hdrs = ["nanobenchmark.h"],
  612. deps = [
  613. ":platform",
  614. ":randen_engine",
  615. "//absl/base:config",
  616. "//absl/base:core_headers",
  617. "//absl/base:raw_logging_internal",
  618. ],
  619. )
  620. cc_library(
  621. name = "uniform_helper",
  622. hdrs = ["uniform_helper.h"],
  623. copts = ABSL_DEFAULT_COPTS,
  624. linkopts = ABSL_DEFAULT_LINKOPTS,
  625. deps = [
  626. ":traits",
  627. "//absl/base:config",
  628. "//absl/meta:type_traits",
  629. ],
  630. )
  631. cc_test(
  632. name = "nanobenchmark_test",
  633. size = "small",
  634. srcs = ["nanobenchmark_test.cc"],
  635. flaky = 1,
  636. linkopts = ABSL_DEFAULT_LINKOPTS,
  637. tags = [
  638. "benchmark",
  639. "no_test_ios_x86_64",
  640. "no_test_loonix", # Crashing.
  641. ],
  642. deps = [
  643. ":nanobenchmark",
  644. "//absl/base:raw_logging_internal",
  645. "//absl/strings",
  646. ],
  647. )
  648. cc_test(
  649. name = "randen_benchmarks",
  650. size = "medium",
  651. timeout = "long",
  652. srcs = ["randen_benchmarks.cc"],
  653. copts = ABSL_TEST_COPTS + ABSL_RANDOM_RANDEN_COPTS,
  654. flaky = 1,
  655. linkopts = ABSL_DEFAULT_LINKOPTS,
  656. tags = ABSL_RANDOM_NONPORTABLE_TAGS + ["benchmark"],
  657. deps = [
  658. ":nanobenchmark",
  659. ":platform",
  660. ":randen",
  661. ":randen_engine",
  662. ":randen_hwaes",
  663. ":randen_hwaes_impl",
  664. ":randen_slow",
  665. "//absl/base:raw_logging_internal",
  666. "//absl/strings",
  667. ],
  668. )
  669. cc_test(
  670. name = "iostream_state_saver_test",
  671. srcs = ["iostream_state_saver_test.cc"],
  672. linkopts = ABSL_DEFAULT_LINKOPTS,
  673. deps = [
  674. ":iostream_state_saver",
  675. "@com_google_googletest//:gtest_main",
  676. ],
  677. )
  678. cc_test(
  679. name = "uniform_helper_test",
  680. size = "small",
  681. srcs = ["uniform_helper_test.cc"],
  682. copts = ABSL_TEST_COPTS,
  683. linkopts = ABSL_DEFAULT_LINKOPTS,
  684. deps = [
  685. ":uniform_helper",
  686. "@com_google_googletest//:gtest_main",
  687. ],
  688. )