use target::*;
#[cfg(feature = "std")]
mod req;
mod tier;
pub mod tier1;
pub mod tier2;
pub mod tier3;
#[cfg(feature = "std")]
pub use self::req::PlatformReq;
pub use self::tier::Tier;
#[derive(Clone, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
pub struct Platform {
pub target_triple: &'static str,
pub target_arch: Arch,
pub target_os: OS,
pub target_env: Option<Env>,
pub tier: Tier,
}
pub const ALL_PLATFORMS: &[Platform] = &[
tier1::I686_APPLE_DARWIN,
tier1::I686_PC_WINDOWS_GNU,
tier1::I686_PC_WINDOWS_MSVC,
tier1::I686_UNKNOWN_LINUX_GNU,
tier1::X86_64_APPLE_DARWIN,
tier1::X86_64_PC_WINDOWS_GNU,
tier1::X86_64_PC_WINDOWS_MSVC,
tier1::X86_64_UNKNOWN_LINUX_GNU,
tier2::AARCH64_APPLE_IOS,
tier2::AARCH64_UNKNOWN_CLOUDABI,
tier2::AARCH64_LINUX_ANDROID,
tier2::AARCH64_UNKNOWN_FUCHSIA,
tier2::AARCH64_UNKNOWN_LINUX_GNU,
tier2::AARCH64_UNKNOWN_LINUX_MUSL,
tier2::ARM_LINUX_ANDROIDEABI,
tier2::ARM_UNKNOWN_LINUX_GNUEABI,
tier2::ARM_UNKNOWN_LINUX_GNUEABIHF,
tier2::ARM_UNKNOWN_LINUX_MUSLEABI,
tier2::ARM_UNKNOWN_LINUX_MUSLEABIHF,
tier2::ARMV5TE_UNKNOWN_LINUX_GNUEABI,
tier2::ARMV7_APPLE_IOS,
tier2::ARMV7_LINUX_ANDROIDEABI,
tier2::ARMV7_UNKNOWN_CLOUDABI_EABIHF,
tier2::ARMV7_UNKNOWN_LINUX_GNUEABIHF,
tier2::ARMV7_UNKNOWN_LINUX_MUSLEABIHF,
tier2::ARMV7S_APPLE_IOS,
tier2::ASMJS_UNKNOWN_EMSCRIPTEN,
tier2::I386_APPLE_IOS,
tier2::I586_PC_WINDOWS_MSVC,
tier2::I586_UNKNOWN_LINUX_GNU,
tier2::I586_UNKNOWN_LINUX_MUSL,
tier2::I686_LINUX_ANDROID,
tier2::I686_UNKNOWN_CLOUDABI,
tier2::I686_UNKNOWN_FREEBSD,
tier2::I686_UNKNOWN_LINUX_MUSL,
tier2::MIPS_UNKNOWN_LINUX_GNU,
tier2::MIPS_UNKNOWN_LINUX_MUSL,
tier2::MIPS64_UNKNOWN_LINUX_GNUABI64,
tier2::MIPS64EL_UNKNOWN_LINUX_GNUABI64,
tier2::MIPSEL_UNKNOWN_LINUX_GNU,
tier2::MIPSEL_UNKNOWN_LINUX_MUSL,
tier2::POWERPC_UNKNOWN_LINUX_GNU,
tier2::POWERPC64_UNKNOWN_LINUX_GNU,
tier2::POWERPC64LE_UNKNOWN_LINUX_GNU,
tier2::S390X_UNKNOWN_LINUX_GNU,
tier2::SPARC64_UNKNOWN_LINUX_GNU,
tier2::SPARC64_SUN_SOLARIS,
tier2::WASM_UNKNOWN_UNKNOWN,
tier2::WASM_UNKNOWN_EMSCRIPTEN,
tier2::X86_64_APPLE_IOS,
tier2::X86_64_LINUX_ANDROID,
tier2::X86_64_RUMPRUN_NETBSD,
tier2::X86_64_SUN_SOLARIS,
tier2::X86_64_UNKNOWN_CLOUDABI,
tier2::X86_64_UNKNOWN_FREEBSD,
tier2::X86_64_UNKNOWN_FUCHSIA,
tier2::X86_64_UNKNOWN_LINUX_GNUX32,
tier2::X86_64_UNKNOWN_LINUX_MUSL,
tier2::X86_64_UNKNOWN_NETBSD,
tier2::X86_64_UNKNOWN_REDOX,
tier3::I686_UNKNOWN_HAIKU,
tier3::I686_UNKNOWN_NETBSD,
tier3::LE32_UNKNOWN_NACL,
tier3::MIPS_UNKNOWN_LINUX_UCLIBC,
tier3::MIPSEL_UNKNOWN_LINUX_UCLIBC,
tier3::MSP430_NONE_ELF,
tier3::SPARC64_UNKNOWN_NETBSD,
tier3::THUMBV6M_NONE_EABI,
tier3::THUMBV7EM_NONE_EABI,
tier3::THUMBV7EM_NONE_EABIHF,
tier3::THUMBV7M_NONE_EABI,
tier3::X86_64_UNKNOWN_BITRIG,
tier3::X86_64_UNKNOWN_DRAGONFLY,
tier3::X86_64_UNKNOWN_HAIKU,
tier3::X86_64_UNKNOWN_OPENBSD,
];
#[cfg(test)]
mod tests {
use super::ALL_PLATFORMS;
use std::collections::HashSet;
#[test]
fn no_dupes_test() {
let mut target_triples = HashSet::new();
for platform in ALL_PLATFORMS {
assert!(
target_triples.insert(platform.target_triple),
"duplicate target triple: {}",
platform.target_triple
);
}
}
}