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