BUILD.bazel (19440B)
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 17 load("@bazel_skylib//lib:selects.bzl", "selects") 18 19 # Internal-only implementation classes for Abseil Random 20 load( 21 "//absl:copts/configure_copts.bzl", 22 "ABSL_DEFAULT_COPTS", 23 "ABSL_DEFAULT_LINKOPTS", 24 "ABSL_TEST_COPTS", 25 ) 26 27 default_package_visibility = [ 28 "//absl/random:__pkg__", 29 ] 30 31 package( 32 default_visibility = default_package_visibility, 33 features = [ 34 "header_modules", 35 "layering_check", 36 "parse_headers", 37 ], 38 ) 39 40 licenses(["notice"]) 41 42 # Used to select on compilers that support GCC-compatible options 43 # (e.g. "-maes"). 44 selects.config_setting_group( 45 name = "gcc_compatible", 46 match_any = [ 47 "@rules_cc//cc/compiler:clang", 48 "@rules_cc//cc/compiler:gcc", 49 ], 50 ) 51 52 selects.config_setting_group( 53 name = "gcc_compatible-aarch32", 54 match_all = [ 55 ":gcc_compatible", 56 "@platforms//cpu:aarch32", 57 ], 58 ) 59 60 selects.config_setting_group( 61 name = "gcc_compatible-aarch64", 62 match_all = [ 63 ":gcc_compatible", 64 "@platforms//cpu:aarch64", 65 ], 66 ) 67 68 selects.config_setting_group( 69 name = "ppc_crypto", 70 match_any = [ 71 "@platforms//cpu:ppc", 72 "@platforms//cpu:ppc32", 73 "@platforms//cpu:ppc64le", 74 ], 75 ) 76 77 selects.config_setting_group( 78 name = "gcc_compatible-ppc_crypto", 79 match_all = [ 80 ":gcc_compatible", 81 ":ppc_crypto", 82 ], 83 ) 84 85 selects.config_setting_group( 86 name = "gcc_compatible-x86_64", 87 match_all = [ 88 ":gcc_compatible", 89 "@platforms//cpu:x86_64", 90 ], 91 ) 92 93 # Some libraries are compiled with options to generate AES-NI 94 # instructions, and runtime dispatch is used to determine if the host 95 # microarchitecture supports AES-NI or if a portable fallback library 96 # should be called. 97 ABSL_RANDOM_RANDEN_COPTS = select({ 98 ":gcc_compatible-aarch32": ["-mfpu=neon"], 99 ":gcc_compatible-aarch64": ["-march=armv8-a+crypto"], 100 ":gcc_compatible-ppc_crypto": ["-mcrypto"], 101 ":gcc_compatible-x86_64": [ 102 "-maes", 103 "-msse4.1", 104 ], 105 "//conditions:default": [], 106 }) 107 108 cc_library( 109 name = "traits", 110 hdrs = ["traits.h"], 111 copts = ABSL_DEFAULT_COPTS, 112 linkopts = ABSL_DEFAULT_LINKOPTS, 113 deps = [ 114 "//absl/base:config", 115 "//absl/numeric:bits", 116 "//absl/numeric:int128", 117 ], 118 ) 119 120 cc_library( 121 name = "distribution_caller", 122 hdrs = ["distribution_caller.h"], 123 copts = ABSL_DEFAULT_COPTS, 124 linkopts = ABSL_DEFAULT_LINKOPTS, 125 deps = [ 126 "//absl/base:config", 127 "//absl/base:fast_type_id", 128 "//absl/meta:type_traits", 129 "//absl/utility", 130 ], 131 ) 132 133 cc_library( 134 name = "fast_uniform_bits", 135 hdrs = [ 136 "fast_uniform_bits.h", 137 ], 138 copts = ABSL_DEFAULT_COPTS, 139 linkopts = ABSL_DEFAULT_LINKOPTS, 140 deps = [ 141 ":traits", 142 "//absl/base:config", 143 "//absl/meta:type_traits", 144 ], 145 ) 146 147 cc_library( 148 name = "seed_material", 149 srcs = [ 150 "seed_material.cc", 151 ], 152 hdrs = [ 153 "seed_material.h", 154 ], 155 copts = ABSL_DEFAULT_COPTS, 156 linkopts = ABSL_DEFAULT_LINKOPTS + select({ 157 "@rules_cc//cc/compiler:msvc-cl": ["-DEFAULTLIB:bcrypt.lib"], 158 "@rules_cc//cc/compiler:clang-cl": ["-DEFAULTLIB:bcrypt.lib"], 159 "//absl:mingw_compiler": [ 160 "-DEFAULTLIB:bcrypt.lib", 161 "-lbcrypt", 162 ], 163 "//conditions:default": [], 164 }), 165 deps = [ 166 ":fast_uniform_bits", 167 "//absl/base:config", 168 "//absl/base:dynamic_annotations", 169 "//absl/base:raw_logging_internal", 170 "//absl/strings", 171 "//absl/types:optional", 172 "//absl/types:span", 173 ], 174 ) 175 176 cc_library( 177 name = "entropy_pool", 178 srcs = ["entropy_pool.cc"], 179 hdrs = ["entropy_pool.h"], 180 copts = ABSL_DEFAULT_COPTS, 181 linkopts = select({ 182 "@rules_cc//cc/compiler:msvc-cl": [], 183 "@rules_cc//cc/compiler:clang-cl": [], 184 "@rules_cc//cc/compiler:emscripten": [], 185 "//conditions:default": ["-pthread"], 186 }) + ABSL_DEFAULT_LINKOPTS, 187 deps = [ 188 ":platform", 189 ":randen", 190 ":seed_material", 191 "//absl/base", 192 "//absl/base:config", 193 "//absl/base:core_headers", 194 "//absl/random:seed_gen_exception", 195 "//absl/types:span", 196 ], 197 ) 198 199 cc_library( 200 name = "explicit_seed_seq", 201 testonly = True, 202 hdrs = [ 203 "explicit_seed_seq.h", 204 ], 205 copts = ABSL_DEFAULT_COPTS, 206 linkopts = ABSL_DEFAULT_LINKOPTS, 207 deps = [ 208 "//absl/base:config", 209 "//absl/base:endian", 210 ], 211 ) 212 213 cc_library( 214 name = "sequence_urbg", 215 testonly = True, 216 hdrs = [ 217 "sequence_urbg.h", 218 ], 219 copts = ABSL_DEFAULT_COPTS, 220 linkopts = ABSL_DEFAULT_LINKOPTS, 221 deps = ["//absl/base:config"], 222 ) 223 224 cc_library( 225 name = "salted_seed_seq", 226 hdrs = [ 227 "salted_seed_seq.h", 228 ], 229 copts = ABSL_DEFAULT_COPTS, 230 linkopts = ABSL_DEFAULT_LINKOPTS, 231 deps = [ 232 ":seed_material", 233 "//absl/container:inlined_vector", 234 "//absl/meta:type_traits", 235 "//absl/types:optional", 236 "//absl/types:span", 237 ], 238 ) 239 240 cc_library( 241 name = "iostream_state_saver", 242 hdrs = ["iostream_state_saver.h"], 243 copts = ABSL_DEFAULT_COPTS, 244 linkopts = ABSL_DEFAULT_LINKOPTS, 245 deps = [ 246 "//absl/base:config", 247 "//absl/meta:type_traits", 248 "//absl/numeric:int128", 249 ], 250 ) 251 252 cc_library( 253 name = "generate_real", 254 hdrs = [ 255 "generate_real.h", 256 ], 257 copts = ABSL_DEFAULT_COPTS, 258 linkopts = ABSL_DEFAULT_LINKOPTS, 259 deps = [ 260 ":fastmath", 261 ":traits", 262 "//absl/meta:type_traits", 263 "//absl/numeric:bits", 264 ], 265 ) 266 267 cc_library( 268 name = "fastmath", 269 hdrs = [ 270 "fastmath.h", 271 ], 272 copts = ABSL_DEFAULT_COPTS, 273 linkopts = ABSL_DEFAULT_LINKOPTS, 274 deps = ["//absl/numeric:bits"], 275 ) 276 277 cc_library( 278 name = "wide_multiply", 279 hdrs = ["wide_multiply.h"], 280 copts = ABSL_DEFAULT_COPTS, 281 linkopts = ABSL_DEFAULT_LINKOPTS, 282 deps = [ 283 ":traits", 284 "//absl/base:config", 285 "//absl/numeric:bits", 286 "//absl/numeric:int128", 287 ], 288 ) 289 290 cc_library( 291 name = "nonsecure_base", 292 hdrs = ["nonsecure_base.h"], 293 copts = ABSL_DEFAULT_COPTS, 294 linkopts = ABSL_DEFAULT_LINKOPTS, 295 deps = [ 296 ":entropy_pool", 297 ":salted_seed_seq", 298 ":seed_material", 299 "//absl/base:config", 300 "//absl/container:inlined_vector", 301 "//absl/meta:type_traits", 302 ], 303 ) 304 305 cc_library( 306 name = "pcg_engine", 307 hdrs = ["pcg_engine.h"], 308 copts = ABSL_DEFAULT_COPTS, 309 linkopts = ABSL_DEFAULT_LINKOPTS, 310 deps = [ 311 ":fastmath", 312 ":iostream_state_saver", 313 "//absl/base:config", 314 "//absl/meta:type_traits", 315 "//absl/numeric:bits", 316 "//absl/numeric:int128", 317 ], 318 ) 319 320 cc_library( 321 name = "randen_engine", 322 hdrs = ["randen_engine.h"], 323 copts = ABSL_DEFAULT_COPTS, 324 linkopts = ABSL_DEFAULT_LINKOPTS, 325 visibility = default_package_visibility + [ 326 ], 327 deps = [ 328 ":iostream_state_saver", 329 ":randen", 330 "//absl/base:endian", 331 "//absl/meta:type_traits", 332 ], 333 ) 334 335 cc_library( 336 name = "platform", 337 srcs = [ 338 "randen_round_keys.cc", 339 ], 340 hdrs = [ 341 "randen_traits.h", 342 ], 343 copts = ABSL_DEFAULT_COPTS, 344 linkopts = ABSL_DEFAULT_LINKOPTS, 345 textual_hdrs = [ 346 "platform.h", 347 ], 348 deps = ["//absl/base:config"], 349 ) 350 351 cc_library( 352 name = "randen", 353 srcs = [ 354 "randen.cc", 355 ], 356 hdrs = [ 357 "randen.h", 358 ], 359 copts = ABSL_DEFAULT_COPTS, 360 linkopts = ABSL_DEFAULT_LINKOPTS, 361 deps = [ 362 ":platform", 363 ":randen_hwaes", 364 ":randen_slow", 365 "//absl/base:raw_logging_internal", 366 ], 367 ) 368 369 cc_library( 370 name = "randen_slow", 371 srcs = ["randen_slow.cc"], 372 hdrs = ["randen_slow.h"], 373 copts = ABSL_DEFAULT_COPTS, 374 linkopts = ABSL_DEFAULT_LINKOPTS, 375 deps = [ 376 ":platform", 377 "//absl/base:config", 378 "//absl/base:core_headers", 379 "//absl/base:endian", 380 "//absl/numeric:int128", 381 ], 382 ) 383 384 cc_library( 385 name = "randen_hwaes", 386 srcs = [ 387 "randen_detect.cc", 388 ], 389 hdrs = [ 390 "randen_detect.h", 391 "randen_hwaes.h", 392 ], 393 copts = ABSL_DEFAULT_COPTS, 394 linkopts = ABSL_DEFAULT_LINKOPTS, 395 deps = [ 396 ":platform", 397 ":randen_hwaes_impl", 398 "//absl/base:config", 399 "//absl/types:optional", 400 ], 401 ) 402 403 # build with --save_temps to see assembly language output. 404 cc_library( 405 name = "randen_hwaes_impl", 406 srcs = [ 407 "randen_hwaes.cc", 408 "randen_hwaes.h", 409 ], 410 copts = ABSL_DEFAULT_COPTS + ABSL_RANDOM_RANDEN_COPTS + select({ 411 "@rules_cc//cc/compiler:msvc-cl": [], 412 "@rules_cc//cc/compiler:clang-cl": [], 413 "//conditions:default": ["-Wno-pass-failed"], 414 }), 415 linkopts = ABSL_DEFAULT_LINKOPTS, 416 deps = [ 417 ":platform", 418 "//absl/base:config", 419 "//absl/base:core_headers", 420 "//absl/numeric:int128", 421 ], 422 ) 423 424 cc_binary( 425 name = "gaussian_distribution_gentables", 426 srcs = [ 427 "gaussian_distribution_gentables.cc", 428 ], 429 linkopts = ABSL_DEFAULT_LINKOPTS, 430 deps = [ 431 "//absl/base:core_headers", 432 "//absl/random:distributions", 433 ], 434 ) 435 436 cc_library( 437 name = "distribution_test_util", 438 testonly = True, 439 srcs = [ 440 "chi_square.cc", 441 "distribution_test_util.cc", 442 ], 443 hdrs = [ 444 "chi_square.h", 445 "distribution_test_util.h", 446 ], 447 copts = ABSL_DEFAULT_COPTS, 448 linkopts = ABSL_DEFAULT_LINKOPTS, 449 deps = [ 450 "//absl/base:config", 451 "//absl/base:core_headers", 452 "//absl/base:raw_logging_internal", 453 "//absl/strings", 454 "//absl/strings:str_format", 455 "//absl/types:span", 456 ], 457 ) 458 459 # Common tags for tests, etc. 460 ABSL_RANDOM_NONPORTABLE_TAGS = [ 461 "no_test_android_arm", 462 "no_test_android_arm64", 463 "no_test_android_x86", 464 "no_test_darwin_x86_64", 465 "no_test_ios_x86_64", 466 "no_test_loonix", 467 "no_test_lexan", 468 "no_test_wasm", 469 ] 470 471 cc_test( 472 name = "traits_test", 473 size = "small", 474 srcs = ["traits_test.cc"], 475 copts = ABSL_TEST_COPTS, 476 linkopts = ABSL_DEFAULT_LINKOPTS, 477 deps = [ 478 ":traits", 479 "@googletest//:gtest", 480 "@googletest//:gtest_main", 481 ], 482 ) 483 484 cc_test( 485 name = "generate_real_test", 486 size = "small", 487 srcs = [ 488 "generate_real_test.cc", 489 ], 490 copts = ABSL_TEST_COPTS, 491 linkopts = ABSL_DEFAULT_LINKOPTS, 492 deps = [ 493 ":generate_real", 494 "//absl/flags:flag", 495 "//absl/numeric:bits", 496 "@googletest//:gtest", 497 "@googletest//:gtest_main", 498 ], 499 ) 500 501 cc_test( 502 name = "distribution_test_util_test", 503 size = "small", 504 srcs = ["distribution_test_util_test.cc"], 505 copts = ABSL_TEST_COPTS, 506 linkopts = ABSL_DEFAULT_LINKOPTS, 507 deps = [ 508 ":distribution_test_util", 509 "@googletest//:gtest", 510 "@googletest//:gtest_main", 511 ], 512 ) 513 514 cc_test( 515 name = "fastmath_test", 516 size = "small", 517 srcs = ["fastmath_test.cc"], 518 copts = ABSL_TEST_COPTS, 519 linkopts = ABSL_DEFAULT_LINKOPTS, 520 deps = [ 521 ":fastmath", 522 "@googletest//:gtest", 523 "@googletest//:gtest_main", 524 ], 525 ) 526 527 cc_test( 528 name = "explicit_seed_seq_test", 529 size = "small", 530 srcs = ["explicit_seed_seq_test.cc"], 531 copts = ABSL_TEST_COPTS, 532 linkopts = ABSL_DEFAULT_LINKOPTS, 533 deps = [ 534 ":explicit_seed_seq", 535 "//absl/random:seed_sequences", 536 "@googletest//:gtest", 537 "@googletest//:gtest_main", 538 ], 539 ) 540 541 cc_test( 542 name = "salted_seed_seq_test", 543 size = "small", 544 srcs = ["salted_seed_seq_test.cc"], 545 copts = ABSL_TEST_COPTS, 546 linkopts = ABSL_DEFAULT_LINKOPTS, 547 deps = [ 548 ":salted_seed_seq", 549 "@googletest//:gtest", 550 "@googletest//:gtest_main", 551 ], 552 ) 553 554 cc_test( 555 name = "chi_square_test", 556 size = "small", 557 srcs = [ 558 "chi_square_test.cc", 559 ], 560 copts = ABSL_TEST_COPTS, 561 linkopts = ABSL_DEFAULT_LINKOPTS, 562 deps = [ 563 ":distribution_test_util", 564 "//absl/base:core_headers", 565 "@googletest//:gtest", 566 "@googletest//:gtest_main", 567 ], 568 ) 569 570 cc_test( 571 name = "fast_uniform_bits_test", 572 size = "small", 573 srcs = [ 574 "fast_uniform_bits_test.cc", 575 ], 576 copts = ABSL_TEST_COPTS, 577 linkopts = ABSL_DEFAULT_LINKOPTS, 578 deps = [ 579 ":fast_uniform_bits", 580 "@googletest//:gtest", 581 "@googletest//:gtest_main", 582 ], 583 ) 584 585 cc_library( 586 name = "mock_helpers", 587 hdrs = ["mock_helpers.h"], 588 linkopts = ABSL_DEFAULT_LINKOPTS, 589 deps = [ 590 "//absl/base:config", 591 "//absl/base:fast_type_id", 592 "//absl/types:optional", 593 ], 594 ) 595 596 cc_library( 597 name = "mock_overload_set", 598 testonly = True, 599 hdrs = ["mock_overload_set.h"], 600 linkopts = ABSL_DEFAULT_LINKOPTS, 601 deps = [ 602 ":mock_helpers", 603 "//absl/base:config", 604 "//absl/random:mocking_bit_gen", 605 "@googletest//:gtest", 606 ], 607 ) 608 609 cc_test( 610 name = "nonsecure_base_test", 611 size = "small", 612 srcs = [ 613 "nonsecure_base_test.cc", 614 ], 615 copts = ABSL_TEST_COPTS, 616 linkopts = ABSL_DEFAULT_LINKOPTS, 617 deps = [ 618 ":nonsecure_base", 619 "//absl/container:flat_hash_set", 620 "//absl/meta:type_traits", 621 "//absl/random", 622 "//absl/random:distributions", 623 "//absl/synchronization", 624 "@googletest//:gtest", 625 "@googletest//:gtest_main", 626 ], 627 ) 628 629 cc_test( 630 name = "seed_material_test", 631 size = "small", 632 srcs = ["seed_material_test.cc"], 633 copts = ABSL_TEST_COPTS, 634 linkopts = ABSL_DEFAULT_LINKOPTS, 635 deps = [ 636 ":seed_material", 637 "//absl/types:span", 638 "@googletest//:gtest", 639 "@googletest//:gtest_main", 640 ], 641 ) 642 643 cc_test( 644 name = "entropy_pool_test", 645 size = "small", 646 srcs = [ 647 "entropy_pool_test.cc", 648 ], 649 copts = ABSL_TEST_COPTS, 650 linkopts = ABSL_DEFAULT_LINKOPTS, 651 deps = [ 652 ":entropy_pool", 653 "//absl/container:flat_hash_set", 654 "//absl/synchronization", 655 "@googletest//:gtest", 656 "@googletest//:gtest_main", 657 ], 658 ) 659 660 cc_test( 661 name = "pcg_engine_test", 662 size = "medium", # Trying to measure accuracy. 663 srcs = ["pcg_engine_test.cc"], 664 copts = ABSL_TEST_COPTS, 665 flaky = 1, 666 linkopts = ABSL_DEFAULT_LINKOPTS, 667 deps = [ 668 ":explicit_seed_seq", 669 ":pcg_engine", 670 "//absl/time", 671 "@googletest//:gtest", 672 "@googletest//:gtest_main", 673 ], 674 ) 675 676 cc_test( 677 name = "randen_engine_test", 678 size = "medium", 679 srcs = [ 680 "randen_engine_test.cc", 681 ], 682 copts = ABSL_TEST_COPTS, 683 linkopts = ABSL_DEFAULT_LINKOPTS, 684 deps = [ 685 ":explicit_seed_seq", 686 ":randen_engine", 687 "//absl/log", 688 "//absl/strings", 689 "//absl/time", 690 "@googletest//:gtest", 691 "@googletest//:gtest_main", 692 ], 693 ) 694 695 cc_test( 696 name = "randen_test", 697 size = "small", 698 srcs = ["randen_test.cc"], 699 copts = ABSL_TEST_COPTS, 700 linkopts = ABSL_DEFAULT_LINKOPTS, 701 deps = [ 702 ":randen", 703 "//absl/meta:type_traits", 704 "@googletest//:gtest", 705 "@googletest//:gtest_main", 706 ], 707 ) 708 709 cc_test( 710 name = "randen_slow_test", 711 size = "small", 712 srcs = ["randen_slow_test.cc"], 713 copts = ABSL_TEST_COPTS, 714 linkopts = ABSL_DEFAULT_LINKOPTS, 715 deps = [ 716 ":platform", 717 ":randen_slow", 718 "//absl/base:endian", 719 "@googletest//:gtest", 720 "@googletest//:gtest_main", 721 ], 722 ) 723 724 cc_test( 725 name = "randen_hwaes_test", 726 size = "small", 727 srcs = ["randen_hwaes_test.cc"], 728 copts = ABSL_TEST_COPTS + ABSL_RANDOM_RANDEN_COPTS, 729 linkopts = ABSL_DEFAULT_LINKOPTS, 730 tags = ABSL_RANDOM_NONPORTABLE_TAGS, 731 deps = [ 732 ":platform", 733 ":randen_hwaes", 734 ":randen_hwaes_impl", # build_cleaner: keep 735 "//absl/log", 736 "//absl/strings:str_format", 737 "@googletest//:gtest", 738 ], 739 ) 740 741 cc_test( 742 name = "wide_multiply_test", 743 size = "small", 744 srcs = ["wide_multiply_test.cc"], 745 copts = ABSL_TEST_COPTS, 746 linkopts = ABSL_DEFAULT_LINKOPTS, 747 deps = [ 748 ":wide_multiply", 749 "//absl/numeric:int128", 750 "@googletest//:gtest", 751 "@googletest//:gtest_main", 752 ], 753 ) 754 755 cc_library( 756 name = "nanobenchmark", 757 srcs = ["nanobenchmark.cc"], 758 linkopts = ABSL_DEFAULT_LINKOPTS, 759 textual_hdrs = ["nanobenchmark.h"], 760 deps = [ 761 ":platform", 762 ":randen_engine", 763 "//absl/base:config", 764 "//absl/base:core_headers", 765 "//absl/base:raw_logging_internal", 766 ], 767 ) 768 769 cc_library( 770 name = "uniform_helper", 771 hdrs = ["uniform_helper.h"], 772 copts = ABSL_DEFAULT_COPTS, 773 linkopts = ABSL_DEFAULT_LINKOPTS, 774 deps = [ 775 ":traits", 776 "//absl/base:config", 777 "//absl/meta:type_traits", 778 ], 779 ) 780 781 cc_library( 782 name = "mock_validators", 783 hdrs = ["mock_validators.h"], 784 deps = [ 785 ":iostream_state_saver", 786 ":uniform_helper", 787 "//absl/base:config", 788 "//absl/base:raw_logging_internal", 789 "//absl/strings", 790 "//absl/strings:string_view", 791 ], 792 ) 793 794 cc_test( 795 name = "nanobenchmark_test", 796 size = "small", 797 srcs = ["nanobenchmark_test.cc"], 798 flaky = 1, 799 linkopts = ABSL_DEFAULT_LINKOPTS, 800 tags = [ 801 "benchmark", 802 "no_test_ios_x86_64", 803 "no_test_loonix", # Crashing. 804 "no_test_wasm", 805 ], 806 deps = [ 807 ":nanobenchmark", 808 "//absl/log", 809 "//absl/log:check", 810 "//absl/strings", 811 "//absl/strings:str_format", 812 ], 813 ) 814 815 cc_test( 816 name = "randen_benchmarks", 817 size = "medium", 818 timeout = "long", 819 srcs = ["randen_benchmarks.cc"], 820 copts = ABSL_TEST_COPTS + ABSL_RANDOM_RANDEN_COPTS, 821 flaky = 1, 822 linkopts = ABSL_DEFAULT_LINKOPTS, 823 tags = ABSL_RANDOM_NONPORTABLE_TAGS + ["benchmark"], 824 deps = [ 825 ":nanobenchmark", 826 ":platform", 827 ":randen", 828 ":randen_engine", 829 ":randen_hwaes", 830 ":randen_hwaes_impl", 831 ":randen_slow", 832 "//absl/base:raw_logging_internal", 833 "//absl/strings", 834 ], 835 ) 836 837 cc_test( 838 name = "iostream_state_saver_test", 839 srcs = ["iostream_state_saver_test.cc"], 840 linkopts = ABSL_DEFAULT_LINKOPTS, 841 deps = [ 842 ":iostream_state_saver", 843 "@googletest//:gtest", 844 "@googletest//:gtest_main", 845 ], 846 ) 847 848 cc_test( 849 name = "uniform_helper_test", 850 size = "small", 851 srcs = ["uniform_helper_test.cc"], 852 copts = ABSL_TEST_COPTS, 853 linkopts = ABSL_DEFAULT_LINKOPTS, 854 deps = [ 855 ":uniform_helper", 856 "@googletest//:gtest", 857 "@googletest//:gtest_main", 858 ], 859 )