use cargo_dist_schema::TripleNameRef;
macro_rules! define_target_triples {
($($(#[$meta:meta])* const $name:ident = $triple:expr;)*) => {
$(
$(#[$meta])*
pub const $name: &TripleNameRef = TripleNameRef::from_str($triple);
)*
};
}
define_target_triples!(
const TARGET_X86_WINDOWS = "i686-pc-windows-msvc";
const TARGET_X64_WINDOWS = "x86_64-pc-windows-msvc";
const TARGET_ARM64_WINDOWS = "aarch64-pc-windows-msvc";
const TARGET_X86_MINGW = "i686-pc-windows-gnu";
const TARGET_X64_MINGW = "x86_64-pc-windows-gnu";
const TARGET_ARM64_MINGW = "aarch64-pc-windows-gnu";
);
pub const KNOWN_WINDOWS_TARGETS: &[&TripleNameRef] = &[
TARGET_X86_WINDOWS,
TARGET_X64_WINDOWS,
TARGET_ARM64_WINDOWS,
TARGET_X86_MINGW,
TARGET_X64_MINGW,
TARGET_ARM64_MINGW,
];
define_target_triples!(
const TARGET_X86_MAC = "i686-apple-darwin";
const TARGET_X64_MAC = "x86_64-apple-darwin";
const TARGET_ARM64_MAC = "aarch64-apple-darwin";
);
pub const KNOWN_MAC_TARGETS: &[&TripleNameRef] =
&[TARGET_X86_MAC, TARGET_X64_MAC, TARGET_ARM64_MAC];
define_target_triples!(
const TARGET_X86_LINUX_GNU = "i686-unknown-linux-gnu";
const TARGET_X64_LINUX_GNU = "x86_64-unknown-linux-gnu";
const TARGET_ARM64_LINUX_GNU = "aarch64-unknown-linux-gnu";
const TARGET_ARMV7_LINUX_GNU = "armv7-unknown-linux-gnueabihf";
const TARGET_ARMV6_LINUX_GNU = "arm-unknown-linux-gnueabi";
const TARGET_ARMV6_LINUX_GNU_HARDFLOAT = "arm-unknown-linux-gnueabihf";
const TARGET_PPC_LINUX_GNU = "powerpc-unknown-linux-gnu";
const TARGET_PPC64_LINUX_GNU = "powerpc64-unknown-linux-gnu";
const TARGET_PPC64LE_LINUX_GNU = "powerpc64le-unknown-linux-gnu";
const TARGET_S390X_LINUX_GNU = "s390x-unknown-linux-gnu";
const TARGET_RISCV_LINUX_GNU = "riscv64gc-unknown-linux-gnu";
const TARGET_LOONGARCH64_LINUX_GNU = "loongarch64-unknown-linux-gnu";
const TARGET_SPARC64_LINUX_GNU = "sparc64-unknown-linux-gnu";
);
pub const KNOWN_LINUX_GNU_TARGETS: &[&TripleNameRef] = &[
TARGET_X86_LINUX_GNU,
TARGET_X64_LINUX_GNU,
TARGET_ARM64_LINUX_GNU,
TARGET_ARMV7_LINUX_GNU,
TARGET_ARMV6_LINUX_GNU,
TARGET_ARMV6_LINUX_GNU_HARDFLOAT,
TARGET_PPC64_LINUX_GNU,
TARGET_PPC64LE_LINUX_GNU,
TARGET_S390X_LINUX_GNU,
TARGET_RISCV_LINUX_GNU,
TARGET_LOONGARCH64_LINUX_GNU,
TARGET_SPARC64_LINUX_GNU,
];
define_target_triples!(
const TARGET_X86_LINUX_MUSL = "i686-unknown-linux-musl";
const TARGET_X64_LINUX_MUSL = "x86_64-unknown-linux-musl";
const TARGET_ARM64_LINUX_MUSL = "aarch64-unknown-linux-musl";
const TARGET_ARMV7_LINUX_MUSL = "armv7-unknown-linux-musleabihf";
const TARGET_ARMV6_LINUX_MUSL = "arm-unknown-linux-musleabi";
const TARGET_ARMV6_LINUX_MUSL_HARDFLOAT = "arm-unknown-linux-musleabihf";
const TARGET_PPC_LINUX_MUSL = "powerpc-unknown-linux-musl";
const TARGET_PPC64_LINUX_MUSL = "powerpc64-unknown-linux-musl";
const TARGET_PPC64LE_LINUX_MUSL = "powerpc64le-unknown-linux-musl";
const TARGET_S390X_LINUX_MUSL = "s390x-unknown-linux-musl";
const TARGET_RISCV_LINUX_MUSL = "riscv64gc-unknown-linux-musl";
const TARGET_LOONGARCH64_LINUX_MUSL = "loongarch64-unknown-linux-musl";
const TARGET_SPARC64_LINUX_MUSL = "sparc64-unknown-linux-musl";
);
pub const KNOWN_LINUX_MUSL_TARGETS: &[&TripleNameRef] = &[
TARGET_X86_LINUX_MUSL,
TARGET_X64_LINUX_MUSL,
TARGET_ARM64_LINUX_MUSL,
TARGET_ARMV7_LINUX_MUSL,
TARGET_ARMV6_LINUX_MUSL,
TARGET_ARMV6_LINUX_MUSL_HARDFLOAT,
TARGET_PPC64_LINUX_MUSL,
TARGET_PPC64LE_LINUX_MUSL,
TARGET_S390X_LINUX_MUSL,
TARGET_RISCV_LINUX_MUSL,
TARGET_LOONGARCH64_LINUX_MUSL,
TARGET_SPARC64_LINUX_MUSL,
];
pub const KNOWN_LINUX_TARGETS: &[&[&TripleNameRef]] =
&[KNOWN_LINUX_GNU_TARGETS, KNOWN_LINUX_MUSL_TARGETS];
define_target_triples!(
const TARGET_X64_FREEBSD = "x86_64-unknown-freebsd";
const TARGET_X64_ILLUMOS = "x86_64-unknown-illumos";
const TARGET_X64_NETBSD = "x86_64-unknown-netbsd";
const TARGET_ARM64_IOS = "aarch64-apple-ios";
const TARGET_ARM64_IOS_SIM = "aarch64-apple-ios-sum";
const TARGET_X64_IOS = "x86_64-apple-ios";
const TARGET_ARM64_FUCHSIA = "aarch64-unknown-fuchsia";
const TARGET_ARM64_ANDROID = "aarch64-linux-android";
const TARGET_X64_ANDROID = "x86_64-linux-android";
const TARGET_ASMJS_EMSCRIPTEN = "asm.js via Emscripten";
const TARGET_WASM32_WASI = "wasm32-wasi";
const TARGET_WASM32 = "wasm32-unknown-unknown";
const TARGET_SPARC_SOLARIS = "sparcv9-sun-solaris";
const TARGET_X64_SOLARIS = "x86_64-pc-solaris";
);
pub const KNOWN_OTHER_TARGETS: &[&TripleNameRef] = &[
TARGET_X64_FREEBSD,
TARGET_X64_ILLUMOS,
TARGET_X64_NETBSD,
TARGET_ARM64_IOS,
TARGET_ARM64_IOS_SIM,
TARGET_X64_IOS,
TARGET_ARM64_FUCHSIA,
TARGET_ARM64_ANDROID,
TARGET_X64_ANDROID,
TARGET_ASMJS_EMSCRIPTEN,
TARGET_WASM32_WASI,
TARGET_WASM32,
TARGET_SPARC_SOLARIS,
TARGET_X64_SOLARIS,
];
pub const KNOWN_TARGET_TRIPLES: &[&[&TripleNameRef]] = &[
KNOWN_WINDOWS_TARGETS,
KNOWN_MAC_TARGETS,
KNOWN_LINUX_GNU_TARGETS,
KNOWN_LINUX_MUSL_TARGETS,
KNOWN_OTHER_TARGETS,
];