| //! Constants associated with each target. | |
| // Replaces the #[else] gate with #[cfg(not(any(…)))] of all the other gates. | |
| // This ensures that they must be mutually exclusive and do not have precedence | |
| // like cfg_select!. | |
| macro cfg_unordered( | |
| $(#[cfg($cfg:meta)] $os:item)* | |
| #[else] $fallback:item | |
| ) { | |
| $(#[cfg($cfg)] $os)* | |
| #[cfg(not(any($($cfg),*)))] $fallback | |
| } | |
| // Keep entries sorted alphabetically and mutually exclusive. | |
| cfg_unordered! { | |
| #[cfg(target_os = "aix")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "aix"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".a"; | |
| pub const DLL_EXTENSION: &str = "a"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "android")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "android"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "cygwin")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "cygwin"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".dll"; | |
| pub const DLL_EXTENSION: &str = "dll"; | |
| pub const EXE_SUFFIX: &str = ".exe"; | |
| pub const EXE_EXTENSION: &str = "exe"; | |
| } | |
| #[cfg(target_os = "dragonfly")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "dragonfly"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "emscripten")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "emscripten"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ".js"; | |
| pub const EXE_EXTENSION: &str = "js"; | |
| } | |
| #[cfg(target_os = "espidf")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "espidf"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "freebsd")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "freebsd"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "fuchsia")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "fuchsia"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "haiku")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "haiku"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "hermit")] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = "hermit"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ""; | |
| pub const DLL_EXTENSION: &str = ""; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "horizon")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "horizon"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ".elf"; | |
| pub const EXE_EXTENSION: &str = "elf"; | |
| } | |
| #[cfg(target_os = "hurd")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "hurd"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "illumos")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "illumos"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "ios")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "ios"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".dylib"; | |
| pub const DLL_EXTENSION: &str = "dylib"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "l4re")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "l4re"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "linux")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "linux"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "macos")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "macos"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".dylib"; | |
| pub const DLL_EXTENSION: &str = "dylib"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "netbsd")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "netbsd"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "nto")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "nto"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "nuttx")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "nuttx"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "openbsd")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "openbsd"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "redox")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "redox"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "rtems")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "rtems"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = ""; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".sgxs"; | |
| pub const DLL_EXTENSION: &str = "sgxs"; | |
| pub const EXE_SUFFIX: &str = ".sgxs"; | |
| pub const EXE_EXTENSION: &str = "sgxs"; | |
| } | |
| #[cfg(target_os = "solaris")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "solaris"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "solid_asp3")] | |
| pub mod os { | |
| pub const FAMILY: &str = "itron"; | |
| pub const OS: &str = "solid"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "tvos")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "tvos"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".dylib"; | |
| pub const DLL_EXTENSION: &str = "dylib"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "uefi")] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = "uefi"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ""; | |
| pub const DLL_EXTENSION: &str = ""; | |
| pub const EXE_SUFFIX: &str = ".efi"; | |
| pub const EXE_EXTENSION: &str = "efi"; | |
| } | |
| #[cfg(target_os = "vexos")] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = "vexos"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ""; | |
| pub const DLL_EXTENSION: &str = ""; | |
| pub const EXE_SUFFIX: &str = ".bin"; | |
| pub const EXE_EXTENSION: &str = "bin"; | |
| } | |
| #[cfg(target_os = "visionos")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "visionos"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".dylib"; | |
| pub const DLL_EXTENSION: &str = "dylib"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "vita")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "vita"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ".elf"; | |
| pub const EXE_EXTENSION: &str = "elf"; | |
| } | |
| #[cfg(target_os = "vxworks")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "vxworks"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".so"; | |
| pub const DLL_EXTENSION: &str = "so"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "linux"))))] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = ""; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".wasm"; | |
| pub const DLL_EXTENSION: &str = "wasm"; | |
| pub const EXE_SUFFIX: &str = ".wasm"; | |
| pub const EXE_EXTENSION: &str = "wasm"; | |
| } | |
| #[cfg(target_os = "watchos")] | |
| pub mod os { | |
| pub const FAMILY: &str = "unix"; | |
| pub const OS: &str = "watchos"; | |
| pub const DLL_PREFIX: &str = "lib"; | |
| pub const DLL_SUFFIX: &str = ".dylib"; | |
| pub const DLL_EXTENSION: &str = "dylib"; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| #[cfg(target_os = "windows")] | |
| pub mod os { | |
| pub const FAMILY: &str = "windows"; | |
| pub const OS: &str = "windows"; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".dll"; | |
| pub const DLL_EXTENSION: &str = "dll"; | |
| pub const EXE_SUFFIX: &str = ".exe"; | |
| pub const EXE_EXTENSION: &str = "exe"; | |
| } | |
| #[cfg(target_os = "zkvm")] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = ""; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ".elf"; | |
| pub const DLL_EXTENSION: &str = "elf"; | |
| pub const EXE_SUFFIX: &str = ".elf"; | |
| pub const EXE_EXTENSION: &str = "elf"; | |
| } | |
| // The fallback when none of the other gates match. | |
| #[else] | |
| pub mod os { | |
| pub const FAMILY: &str = ""; | |
| pub const OS: &str = ""; | |
| pub const DLL_PREFIX: &str = ""; | |
| pub const DLL_SUFFIX: &str = ""; | |
| pub const DLL_EXTENSION: &str = ""; | |
| pub const EXE_SUFFIX: &str = ""; | |
| pub const EXE_EXTENSION: &str = ""; | |
| } | |
| } |