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