| cfg_select! { |
| any( |
| target_os = "linux", |
| target_os = "android", |
| all(target_os = "emscripten", target_feature = "atomics"), |
| target_os = "freebsd", |
| target_os = "openbsd", |
| target_os = "dragonfly", |
| target_os = "fuchsia", |
| ) => { |
| mod unix; |
| pub use unix::*; |
| } |
| all(target_os = "windows", not(target_vendor = "win7")) => { |
| mod windows; |
| pub use windows::*; |
| } |
| target_os = "hermit" => { |
| mod hermit; |
| pub use hermit::*; |
| } |
| // The wasi-libc based futex is new enough that it's not present in older |
| // wasi-libc builds. For now that means it's only required on wasip3 (which |
| // requires a newer wasi-libc anyway). In the future this'll probably switch to |
| // unconditionally using `wasilibc` as the implementation for all WASI |
| // targets (and switching all synchronization primitives to the futex version). |
| all(target_os = "wasi", target_env = "p3") => { |
| mod wasilibc; |
| pub use wasilibc::*; |
| } |
| all(target_family = "wasm", target_feature = "atomics") => { |
| mod wasm; |
| pub use wasm::*; |
| } |
| target_os = "motor" => { |
| pub use moto_rt::futex::*; |
| } |
| _ => {} |
| } |