xref: /aosp_15_r20/external/angle/third_party/abseil-cpp/absl/random/internal/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Copyright 2018 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//third_party/abseil-cpp/absl.gni")
6
7absl_source_set("traits") {
8  public = [ "traits.h" ]
9  deps = [
10    "//third_party/abseil-cpp/absl/base:config",
11    "//third_party/abseil-cpp/absl/numeric:bits",
12    "//third_party/abseil-cpp/absl/numeric:int128",
13  ]
14  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
15}
16
17absl_source_set("distribution_caller") {
18  public = [ "distribution_caller.h" ]
19  deps = [
20    "//third_party/abseil-cpp/absl/base:config",
21    "//third_party/abseil-cpp/absl/base:fast_type_id",
22    "//third_party/abseil-cpp/absl/meta:type_traits",
23    "//third_party/abseil-cpp/absl/utility",
24  ]
25  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
26}
27
28absl_source_set("fast_uniform_bits") {
29  public = [ "fast_uniform_bits.h" ]
30  deps = [
31    ":traits",
32    "//third_party/abseil-cpp/absl/base:config",
33    "//third_party/abseil-cpp/absl/meta:type_traits",
34  ]
35  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
36}
37
38absl_source_set("seed_material") {
39  public = [ "seed_material.h" ]
40  sources = [ "seed_material.cc" ]
41  if (is_win) {
42    # TODO(mbonadei): In the bazel file this is -DEFAULTLIB:bcrypt.lib.
43    libs = [ "bcrypt.lib" ]
44  }
45  deps = [
46    ":fast_uniform_bits",
47    "//third_party/abseil-cpp/absl/base:core_headers",
48    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
49    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
50    "//third_party/abseil-cpp/absl/strings",
51    "//third_party/abseil-cpp/absl/strings:string_view",
52    "//third_party/abseil-cpp/absl/types:optional",
53    "//third_party/abseil-cpp/absl/types:span",
54  ]
55  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
56}
57
58absl_source_set("pool_urbg") {
59  public = [ "pool_urbg.h" ]
60  sources = [ "pool_urbg.cc" ]
61  deps = [
62    ":randen",
63    ":seed_material",
64    ":traits",
65    "//third_party/abseil-cpp/absl/base",
66    "//third_party/abseil-cpp/absl/base:config",
67    "//third_party/abseil-cpp/absl/base:core_headers",
68    "//third_party/abseil-cpp/absl/base:endian",
69    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
70    "//third_party/abseil-cpp/absl/random:seed_gen_exception",
71    "//third_party/abseil-cpp/absl/types:span",
72  ]
73  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
74}
75
76absl_source_set("explicit_seed_seq") {
77  testonly = true
78  public = [ "explicit_seed_seq.h" ]
79  deps = [
80    "//third_party/abseil-cpp/absl/base:config",
81    "//third_party/abseil-cpp/absl/base:endian",
82  ]
83  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
84}
85
86absl_source_set("sequence_urbg") {
87  testonly = true
88  public = [ "sequence_urbg.h" ]
89  deps = [ "//third_party/abseil-cpp/absl/base:config" ]
90  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
91}
92
93absl_source_set("salted_seed_seq") {
94  public = [ "salted_seed_seq.h" ]
95  deps = [
96    ":seed_material",
97    "//third_party/abseil-cpp/absl/container:inlined_vector",
98    "//third_party/abseil-cpp/absl/meta:type_traits",
99    "//third_party/abseil-cpp/absl/types:optional",
100    "//third_party/abseil-cpp/absl/types:span",
101  ]
102  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
103}
104
105absl_source_set("iostream_state_saver") {
106  public = [ "iostream_state_saver.h" ]
107  deps = [
108    "//third_party/abseil-cpp/absl/meta:type_traits",
109    "//third_party/abseil-cpp/absl/numeric:int128",
110  ]
111  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
112}
113
114absl_source_set("generate_real") {
115  public = [ "generate_real.h" ]
116  deps = [
117    ":fastmath",
118    ":traits",
119    "//third_party/abseil-cpp/absl/meta:type_traits",
120    "//third_party/abseil-cpp/absl/numeric:bits",
121  ]
122  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
123}
124
125absl_source_set("fastmath") {
126  public = [ "fastmath.h" ]
127  deps = [ "//third_party/abseil-cpp/absl/numeric:bits" ]
128  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
129}
130
131absl_source_set("wide_multiply") {
132  public = [ "wide_multiply.h" ]
133  deps = [
134    ":traits",
135    "//third_party/abseil-cpp/absl/base:config",
136    "//third_party/abseil-cpp/absl/numeric:bits",
137    "//third_party/abseil-cpp/absl/numeric:int128",
138  ]
139  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
140}
141
142absl_source_set("nonsecure_base") {
143  public = [ "nonsecure_base.h" ]
144  deps = [
145    ":pool_urbg",
146    ":salted_seed_seq",
147    ":seed_material",
148    "//third_party/abseil-cpp/absl/base:core_headers",
149    "//third_party/abseil-cpp/absl/container:inlined_vector",
150    "//third_party/abseil-cpp/absl/meta:type_traits",
151    "//third_party/abseil-cpp/absl/types:span",
152  ]
153  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
154}
155
156absl_source_set("pcg_engine") {
157  public = [ "pcg_engine.h" ]
158  deps = [
159    ":fastmath",
160    ":iostream_state_saver",
161    "//third_party/abseil-cpp/absl/base:config",
162    "//third_party/abseil-cpp/absl/meta:type_traits",
163    "//third_party/abseil-cpp/absl/numeric:bits",
164    "//third_party/abseil-cpp/absl/numeric:int128",
165  ]
166  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
167}
168
169absl_source_set("randen_engine") {
170  public = [ "randen_engine.h" ]
171  deps = [
172    ":iostream_state_saver",
173    ":randen",
174    "//third_party/abseil-cpp/absl/base:endian",
175    "//third_party/abseil-cpp/absl/meta:type_traits",
176  ]
177  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
178}
179
180absl_source_set("platform") {
181  public = [
182    "platform.h",
183    "randen_traits.h",
184  ]
185  sources = [ "randen_round_keys.cc" ]
186  deps = [
187    "//build:chromeos_buildflags",
188    "//third_party/abseil-cpp/absl/base:config",
189  ]
190  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
191}
192
193absl_source_set("randen") {
194  public = [ "randen.h" ]
195  sources = [ "randen.cc" ]
196  deps = [
197    ":platform",
198    ":randen_hwaes",
199    ":randen_slow",
200    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
201  ]
202  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
203}
204
205absl_source_set("randen_slow") {
206  public = [ "randen_slow.h" ]
207  sources = [ "randen_slow.cc" ]
208  deps = [
209    ":platform",
210    "//third_party/abseil-cpp/absl/base:config",
211    "//third_party/abseil-cpp/absl/base:core_headers",
212    "//third_party/abseil-cpp/absl/base:endian",
213    "//third_party/abseil-cpp/absl/numeric:int128",
214  ]
215  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
216}
217
218absl_source_set("randen_hwaes") {
219  public = [
220    "randen_detect.h",
221    "randen_hwaes.h",
222  ]
223  sources = [ "randen_detect.cc" ]
224  deps = [
225    ":platform",
226    ":randen_hwaes_impl",
227    "//third_party/abseil-cpp/absl/base:config",
228  ]
229  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
230}
231
232absl_source_set("randen_hwaes_impl") {
233  sources = [
234    "randen_hwaes.cc",
235    "randen_hwaes.h",
236  ]
237  deps = [
238    ":platform",
239    "//third_party/abseil-cpp/absl/base:config",
240    "//third_party/abseil-cpp/absl/base:core_headers",
241    "//third_party/abseil-cpp/absl/numeric:int128",
242  ]
243  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
244}
245
246executable("gaussian_distribution_gentables") {
247  sources = [ "gaussian_distribution_gentables.cc" ]
248  deps = [
249    "//third_party/abseil-cpp/absl/base:core_headers",
250    "//third_party/abseil-cpp/absl/random:distributions",
251  ]
252  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
253}
254
255absl_source_set("distribution_test_util") {
256  testonly = true
257  public = [
258    "chi_square.h",
259    "distribution_test_util.h",
260  ]
261  sources = [
262    "chi_square.cc",
263    "distribution_test_util.cc",
264  ]
265  deps = [
266    "//third_party/abseil-cpp/absl/base:config",
267    "//third_party/abseil-cpp/absl/base:core_headers",
268    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
269    "//third_party/abseil-cpp/absl/strings",
270    "//third_party/abseil-cpp/absl/strings:str_format",
271    "//third_party/abseil-cpp/absl/strings:string_view",
272    "//third_party/abseil-cpp/absl/types:span",
273  ]
274  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
275}
276
277absl_source_set("mock_helpers") {
278  public = [ "mock_helpers.h" ]
279  deps = [
280    "//third_party/abseil-cpp/absl/base:config",
281    "//third_party/abseil-cpp/absl/base:fast_type_id",
282    "//third_party/abseil-cpp/absl/types:optional",
283  ]
284}
285
286absl_source_set("mock_overload_set") {
287  testonly = true
288  public = [ "mock_overload_set.h" ]
289  deps = [
290    ":mock_helpers",
291    "//third_party/abseil-cpp/absl/base:config",
292    "//third_party/abseil-cpp/absl/random:mocking_bit_gen",
293    "//third_party/googletest:gtest",
294  ]
295}
296
297# TODO(danilchap): Enable when can be compiled on all chromium bots.
298# nanobenchmark uses platform specific functions to take accurate current time,
299# and fallbacks to clock_gettime. Several chromium configurations lack both
300# dedicated code and the clock_gettime system function.
301# absl_source_set("nanobenchmark") {
302#  sources = [ "nanobenchmark.cc" ]
303#  deps = [
304#    ":platform",
305#    ":randen_engine",
306#    "//third_party/abseil-cpp/absl/base:config",
307#    "//third_party/abseil-cpp/absl/base:core_headers",
308#    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
309#  ]
310# }
311
312absl_source_set("uniform_helper") {
313  public = [ "uniform_helper.h" ]
314  deps = [
315    ":traits",
316    "//third_party/abseil-cpp/absl/base:config",
317    "//third_party/abseil-cpp/absl/meta:type_traits",
318    "//third_party/abseil-cpp/absl/numeric:int128",
319  ]
320  visibility = [ "//third_party/abseil-cpp/absl/random/*" ]
321}
322
323absl_source_set("mock_validators") {
324  public = [ "mock_validators.h" ]
325  deps = [
326    ":iostream_state_saver",
327    ":uniform_helper",
328    "//third_party/abseil-cpp/absl/base:config",
329    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
330    "//third_party/abseil-cpp/absl/strings",
331    "//third_party/abseil-cpp/absl/strings:string_view",
332  ]
333}
334