getrandom/
backends.rs
1cfg_if! {
10 if #[cfg(getrandom_backend = "custom")] {
11 mod custom;
12 pub use custom::*;
13 } else if #[cfg(getrandom_backend = "linux_getrandom")] {
14 mod getrandom;
15 pub use getrandom::*;
16 } else if #[cfg(getrandom_backend = "linux_raw")] {
17 mod linux_raw;
18 pub use linux_raw::*;
19 } else if #[cfg(getrandom_backend = "rdrand")] {
20 mod rdrand;
21 pub use rdrand::*;
22 } else if #[cfg(getrandom_backend = "rndr")] {
23 mod rndr;
24 pub use rndr::*;
25 } else if #[cfg(getrandom_backend = "efi_rng")] {
26 mod efi_rng;
27 pub use efi_rng::*;
28 } else if #[cfg(all(getrandom_backend = "wasm_js"))] {
29 cfg_if! {
30 if #[cfg(feature = "wasm_js")] {
31 mod wasm_js;
32 pub use wasm_js::*;
33 } else {
34 compile_error!(
35 "The \"wasm_js\" backend requires the `wasm_js` feature \
36 for `getrandom`. For more information see: \
37 https://docs.rs/getrandom/#webassembly-support"
38 );
39 }
40 }
41 } else if #[cfg(all(target_os = "linux", target_env = ""))] {
42 mod linux_raw;
43 pub use linux_raw::*;
44 } else if #[cfg(target_os = "espidf")] {
45 mod esp_idf;
46 pub use esp_idf::*;
47 } else if #[cfg(any(
48 target_os = "haiku",
49 target_os = "redox",
50 target_os = "nto",
51 target_os = "aix",
52 ))] {
53 mod use_file;
54 pub use use_file::*;
55 } else if #[cfg(any(
56 target_os = "macos",
57 target_os = "openbsd",
58 target_os = "vita",
59 target_os = "emscripten",
60 ))] {
61 mod getentropy;
62 pub use getentropy::*;
63 } else if #[cfg(any(
64 all(
72 target_os = "android",
73 any(
74 target_arch = "aarch64",
75 target_arch = "arm",
76 target_arch = "x86",
77 target_arch = "x86_64",
78 ),
79 ),
80 all(
84 target_os = "linux",
85 any(
86 target_arch = "aarch64",
87 target_arch = "arm",
88 target_arch = "powerpc",
89 target_arch = "powerpc64",
90 target_arch = "s390x",
91 target_arch = "x86",
92 target_arch = "x86_64",
93 target_env = "musl",
97 ),
98 )
99 ))] {
100 mod use_file;
101 mod linux_android_with_fallback;
102 pub use linux_android_with_fallback::*;
103 } else if #[cfg(any(
104 target_os = "android",
105 target_os = "linux",
106 target_os = "dragonfly",
107 target_os = "freebsd",
108 target_os = "hurd",
109 target_os = "illumos",
110 target_os = "cygwin",
111 all(target_os = "horizon", target_arch = "arm"),
114 ))] {
115 mod getrandom;
116 pub use getrandom::*;
117 } else if #[cfg(target_os = "solaris")] {
118 mod solaris;
119 pub use solaris::*;
120 } else if #[cfg(target_os = "netbsd")] {
121 mod netbsd;
122 pub use netbsd::*;
123 } else if #[cfg(target_os = "fuchsia")] {
124 mod fuchsia;
125 pub use fuchsia::*;
126 } else if #[cfg(any(
127 target_os = "ios",
128 target_os = "visionos",
129 target_os = "watchos",
130 target_os = "tvos",
131 ))] {
132 mod apple_other;
133 pub use apple_other::*;
134 } else if #[cfg(all(target_arch = "wasm32", target_os = "wasi"))] {
135 cfg_if! {
136 if #[cfg(target_env = "p1")] {
137 mod wasi_p1;
138 pub use wasi_p1::*;
139 } else if #[cfg(target_env = "p2")] {
140 mod wasi_p2;
141 pub use wasi_p2::*;
142 } else {
143 compile_error!(
144 "Unknown version of WASI (only previews 1 and 2 are supported) \
145 or Rust version older than 1.80 was used"
146 );
147 }
148 }
149 } else if #[cfg(target_os = "hermit")] {
150 mod hermit;
151 pub use hermit::*;
152 } else if #[cfg(target_os = "vxworks")] {
153 mod vxworks;
154 pub use vxworks::*;
155 } else if #[cfg(target_os = "solid_asp3")] {
156 mod solid;
157 pub use solid::*;
158 } else if #[cfg(all(windows, any(target_vendor = "win7", getrandom_windows_legacy)))] {
159 mod windows7;
160 pub use windows7::*;
161 } else if #[cfg(windows)] {
162 mod windows;
163 pub use windows::*;
164 } else if #[cfg(all(target_arch = "x86_64", target_env = "sgx"))] {
165 mod rdrand;
166 pub use rdrand::*;
167 } else if #[cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))] {
168 compile_error!(
169 "The wasm32-unknown-unknown targets are not supported by default; \
170 you may need to enable the \"wasm_js\" configuration flag. Note \
171 that enabling the `wasm_js` feature flag alone is insufficient. \
172 For more information see: \
173 https://docs.rs/getrandom/#webassembly-support"
174 );
175 } else {
176 compile_error!("target is not supported. You may need to define \
177 a custom backend see: \
178 https://docs.rs/getrandom/#custom-backends");
179 }
180}