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