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