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