platforms/platform/
platforms.rs

1//! The list of targets.
2
3// Note: this file is auto-generated. Do not edit it manually!
4// If you need to referesh it, re-run the generator included in the source tree.
5
6// Comments on targets are sourced from
7// https://doc.rust-lang.org/nightly/rustc/platform-support.html
8// and some of the more obscure targets do not have a comment on them
9#![allow(missing_docs)]
10
11use crate::{
12    platform::{Platform, Tier},
13    target::{Arch, Endian, Env, PointerWidth, OS},
14};
15
16/// The list of all targets recognized by the Rust compiler
17pub(crate) const ALL: &[Platform] = &[
18    AARCH64_APPLE_DARWIN,
19    AARCH64_APPLE_IOS,
20    AARCH64_APPLE_IOS_MACABI,
21    AARCH64_APPLE_IOS_SIM,
22    AARCH64_APPLE_TVOS,
23    AARCH64_APPLE_TVOS_SIM,
24    AARCH64_APPLE_VISIONOS,
25    AARCH64_APPLE_VISIONOS_SIM,
26    AARCH64_APPLE_WATCHOS,
27    AARCH64_APPLE_WATCHOS_SIM,
28    AARCH64_KMC_SOLID_ASP3,
29    AARCH64_LINUX_ANDROID,
30    AARCH64_NINTENDO_SWITCH_FREESTANDING,
31    AARCH64_PC_WINDOWS_GNULLVM,
32    AARCH64_PC_WINDOWS_MSVC,
33    AARCH64_UNKNOWN_FREEBSD,
34    AARCH64_UNKNOWN_FUCHSIA,
35    AARCH64_UNKNOWN_HERMIT,
36    AARCH64_UNKNOWN_ILLUMOS,
37    AARCH64_UNKNOWN_LINUX_GNU,
38    AARCH64_UNKNOWN_LINUX_GNU_ILP32,
39    AARCH64_UNKNOWN_LINUX_MUSL,
40    AARCH64_UNKNOWN_LINUX_OHOS,
41    AARCH64_UNKNOWN_MANAGARM_MLIBC,
42    AARCH64_UNKNOWN_NETBSD,
43    AARCH64_UNKNOWN_NONE,
44    AARCH64_UNKNOWN_NONE_SOFTFLOAT,
45    AARCH64_UNKNOWN_NTO_QNX700,
46    AARCH64_UNKNOWN_NTO_QNX710,
47    AARCH64_UNKNOWN_NTO_QNX710_IOSOCK,
48    AARCH64_UNKNOWN_NTO_QNX800,
49    AARCH64_UNKNOWN_NUTTX,
50    AARCH64_UNKNOWN_OPENBSD,
51    AARCH64_UNKNOWN_REDOX,
52    AARCH64_UNKNOWN_TEEOS,
53    AARCH64_UNKNOWN_TRUSTY,
54    AARCH64_UNKNOWN_UEFI,
55    AARCH64_UWP_WINDOWS_MSVC,
56    AARCH64_WRS_VXWORKS,
57    AARCH64_BE_UNKNOWN_HERMIT,
58    AARCH64_BE_UNKNOWN_LINUX_GNU,
59    AARCH64_BE_UNKNOWN_LINUX_GNU_ILP32,
60    AARCH64_BE_UNKNOWN_LINUX_MUSL,
61    AARCH64_BE_UNKNOWN_NETBSD,
62    AARCH64_BE_UNKNOWN_NONE_SOFTFLOAT,
63    AMDGCN_AMD_AMDHSA,
64    ARM_LINUX_ANDROIDEABI,
65    ARM_UNKNOWN_LINUX_GNUEABI,
66    ARM_UNKNOWN_LINUX_GNUEABIHF,
67    ARM_UNKNOWN_LINUX_MUSLEABI,
68    ARM_UNKNOWN_LINUX_MUSLEABIHF,
69    ARM64_32_APPLE_WATCHOS,
70    ARM64E_APPLE_DARWIN,
71    ARM64E_APPLE_IOS,
72    ARM64E_APPLE_TVOS,
73    ARM64EC_PC_WINDOWS_MSVC,
74    ARMEB_UNKNOWN_LINUX_GNUEABI,
75    ARMEBV7R_NONE_EABI,
76    ARMEBV7R_NONE_EABIHF,
77    ARMV4T_NONE_EABI,
78    ARMV4T_UNKNOWN_LINUX_GNUEABI,
79    ARMV5TE_NONE_EABI,
80    ARMV5TE_UNKNOWN_LINUX_GNUEABI,
81    ARMV5TE_UNKNOWN_LINUX_MUSLEABI,
82    ARMV5TE_UNKNOWN_LINUX_UCLIBCEABI,
83    ARMV6_UNKNOWN_FREEBSD,
84    ARMV6_UNKNOWN_NETBSD_EABIHF,
85    ARMV6K_NINTENDO_3DS,
86    ARMV7_LINUX_ANDROIDEABI,
87    ARMV7_RTEMS_EABIHF,
88    ARMV7_SONY_VITA_NEWLIBEABIHF,
89    ARMV7_UNKNOWN_FREEBSD,
90    ARMV7_UNKNOWN_LINUX_GNUEABI,
91    ARMV7_UNKNOWN_LINUX_GNUEABIHF,
92    ARMV7_UNKNOWN_LINUX_MUSLEABI,
93    ARMV7_UNKNOWN_LINUX_MUSLEABIHF,
94    ARMV7_UNKNOWN_LINUX_OHOS,
95    ARMV7_UNKNOWN_LINUX_UCLIBCEABI,
96    ARMV7_UNKNOWN_LINUX_UCLIBCEABIHF,
97    ARMV7_UNKNOWN_NETBSD_EABIHF,
98    ARMV7_UNKNOWN_TRUSTY,
99    ARMV7_WRS_VXWORKS_EABIHF,
100    ARMV7A_KMC_SOLID_ASP3_EABI,
101    ARMV7A_KMC_SOLID_ASP3_EABIHF,
102    ARMV7A_NONE_EABI,
103    ARMV7A_NONE_EABIHF,
104    ARMV7A_NUTTX_EABI,
105    ARMV7A_NUTTX_EABIHF,
106    ARMV7A_VEX_V5,
107    ARMV7K_APPLE_WATCHOS,
108    ARMV7R_NONE_EABI,
109    ARMV7R_NONE_EABIHF,
110    ARMV7S_APPLE_IOS,
111    ARMV8R_NONE_EABIHF,
112    AVR_NONE,
113    BPFEB_UNKNOWN_NONE,
114    BPFEL_UNKNOWN_NONE,
115    CSKY_UNKNOWN_LINUX_GNUABIV2,
116    CSKY_UNKNOWN_LINUX_GNUABIV2HF,
117    HEXAGON_UNKNOWN_LINUX_MUSL,
118    HEXAGON_UNKNOWN_NONE_ELF,
119    I386_APPLE_IOS,
120    I586_UNKNOWN_LINUX_GNU,
121    I586_UNKNOWN_LINUX_MUSL,
122    I586_UNKNOWN_NETBSD,
123    I586_UNKNOWN_REDOX,
124    I686_APPLE_DARWIN,
125    I686_LINUX_ANDROID,
126    I686_PC_NTO_QNX700,
127    I686_PC_WINDOWS_GNU,
128    I686_PC_WINDOWS_GNULLVM,
129    I686_PC_WINDOWS_MSVC,
130    I686_UNKNOWN_FREEBSD,
131    I686_UNKNOWN_HAIKU,
132    I686_UNKNOWN_HURD_GNU,
133    I686_UNKNOWN_LINUX_GNU,
134    I686_UNKNOWN_LINUX_MUSL,
135    I686_UNKNOWN_NETBSD,
136    I686_UNKNOWN_OPENBSD,
137    I686_UNKNOWN_UEFI,
138    I686_UWP_WINDOWS_GNU,
139    I686_UWP_WINDOWS_MSVC,
140    I686_WIN7_WINDOWS_GNU,
141    I686_WIN7_WINDOWS_MSVC,
142    I686_WRS_VXWORKS,
143    LOONGARCH32_UNKNOWN_NONE,
144    LOONGARCH32_UNKNOWN_NONE_SOFTFLOAT,
145    LOONGARCH64_UNKNOWN_LINUX_GNU,
146    LOONGARCH64_UNKNOWN_LINUX_MUSL,
147    LOONGARCH64_UNKNOWN_LINUX_OHOS,
148    LOONGARCH64_UNKNOWN_NONE,
149    LOONGARCH64_UNKNOWN_NONE_SOFTFLOAT,
150    M68K_UNKNOWN_LINUX_GNU,
151    M68K_UNKNOWN_NONE_ELF,
152    MIPS_MTI_NONE_ELF,
153    MIPS_UNKNOWN_LINUX_GNU,
154    MIPS_UNKNOWN_LINUX_MUSL,
155    MIPS_UNKNOWN_LINUX_UCLIBC,
156    MIPS64_OPENWRT_LINUX_MUSL,
157    MIPS64_UNKNOWN_LINUX_GNUABI64,
158    MIPS64_UNKNOWN_LINUX_MUSLABI64,
159    MIPS64EL_UNKNOWN_LINUX_GNUABI64,
160    MIPS64EL_UNKNOWN_LINUX_MUSLABI64,
161    MIPSEL_MTI_NONE_ELF,
162    MIPSEL_SONY_PSP,
163    MIPSEL_SONY_PSX,
164    MIPSEL_UNKNOWN_LINUX_GNU,
165    MIPSEL_UNKNOWN_LINUX_MUSL,
166    MIPSEL_UNKNOWN_LINUX_UCLIBC,
167    MIPSEL_UNKNOWN_NETBSD,
168    MIPSEL_UNKNOWN_NONE,
169    MIPSISA32R6_UNKNOWN_LINUX_GNU,
170    MIPSISA32R6EL_UNKNOWN_LINUX_GNU,
171    MIPSISA64R6_UNKNOWN_LINUX_GNUABI64,
172    MIPSISA64R6EL_UNKNOWN_LINUX_GNUABI64,
173    MSP430_NONE_ELF,
174    NVPTX64_NVIDIA_CUDA,
175    POWERPC_UNKNOWN_FREEBSD,
176    POWERPC_UNKNOWN_LINUX_GNU,
177    POWERPC_UNKNOWN_LINUX_GNUSPE,
178    POWERPC_UNKNOWN_LINUX_MUSL,
179    POWERPC_UNKNOWN_LINUX_MUSLSPE,
180    POWERPC_UNKNOWN_NETBSD,
181    POWERPC_UNKNOWN_OPENBSD,
182    POWERPC_WRS_VXWORKS,
183    POWERPC_WRS_VXWORKS_SPE,
184    POWERPC64_IBM_AIX,
185    POWERPC64_UNKNOWN_FREEBSD,
186    POWERPC64_UNKNOWN_LINUX_GNU,
187    POWERPC64_UNKNOWN_LINUX_MUSL,
188    POWERPC64_UNKNOWN_OPENBSD,
189    POWERPC64_WRS_VXWORKS,
190    POWERPC64LE_UNKNOWN_FREEBSD,
191    POWERPC64LE_UNKNOWN_LINUX_GNU,
192    POWERPC64LE_UNKNOWN_LINUX_MUSL,
193    RISCV32_WRS_VXWORKS,
194    RISCV32E_UNKNOWN_NONE_ELF,
195    RISCV32EM_UNKNOWN_NONE_ELF,
196    RISCV32EMC_UNKNOWN_NONE_ELF,
197    RISCV32GC_UNKNOWN_LINUX_GNU,
198    RISCV32GC_UNKNOWN_LINUX_MUSL,
199    RISCV32I_UNKNOWN_NONE_ELF,
200    RISCV32IM_RISC0_ZKVM_ELF,
201    RISCV32IM_UNKNOWN_NONE_ELF,
202    RISCV32IMA_UNKNOWN_NONE_ELF,
203    RISCV32IMAC_ESP_ESPIDF,
204    RISCV32IMAC_UNKNOWN_NONE_ELF,
205    RISCV32IMAC_UNKNOWN_NUTTX_ELF,
206    RISCV32IMAC_UNKNOWN_XOUS_ELF,
207    RISCV32IMAFC_ESP_ESPIDF,
208    RISCV32IMAFC_UNKNOWN_NONE_ELF,
209    RISCV32IMAFC_UNKNOWN_NUTTX_ELF,
210    RISCV32IMC_ESP_ESPIDF,
211    RISCV32IMC_UNKNOWN_NONE_ELF,
212    RISCV32IMC_UNKNOWN_NUTTX_ELF,
213    RISCV64_LINUX_ANDROID,
214    RISCV64_WRS_VXWORKS,
215    RISCV64A23_UNKNOWN_LINUX_GNU,
216    RISCV64GC_UNKNOWN_FREEBSD,
217    RISCV64GC_UNKNOWN_FUCHSIA,
218    RISCV64GC_UNKNOWN_HERMIT,
219    RISCV64GC_UNKNOWN_LINUX_GNU,
220    RISCV64GC_UNKNOWN_LINUX_MUSL,
221    RISCV64GC_UNKNOWN_MANAGARM_MLIBC,
222    RISCV64GC_UNKNOWN_NETBSD,
223    RISCV64GC_UNKNOWN_NONE_ELF,
224    RISCV64GC_UNKNOWN_NUTTX_ELF,
225    RISCV64GC_UNKNOWN_OPENBSD,
226    RISCV64IMAC_UNKNOWN_NONE_ELF,
227    RISCV64IMAC_UNKNOWN_NUTTX_ELF,
228    S390X_UNKNOWN_LINUX_GNU,
229    S390X_UNKNOWN_LINUX_MUSL,
230    SPARC_UNKNOWN_LINUX_GNU,
231    SPARC_UNKNOWN_NONE_ELF,
232    SPARC64_UNKNOWN_LINUX_GNU,
233    SPARC64_UNKNOWN_NETBSD,
234    SPARC64_UNKNOWN_OPENBSD,
235    SPARCV9_SUN_SOLARIS,
236    THUMBV4T_NONE_EABI,
237    THUMBV5TE_NONE_EABI,
238    THUMBV6M_NONE_EABI,
239    THUMBV6M_NUTTX_EABI,
240    THUMBV7A_NUTTX_EABI,
241    THUMBV7A_NUTTX_EABIHF,
242    THUMBV7A_PC_WINDOWS_MSVC,
243    THUMBV7A_UWP_WINDOWS_MSVC,
244    THUMBV7EM_NONE_EABI,
245    THUMBV7EM_NONE_EABIHF,
246    THUMBV7EM_NUTTX_EABI,
247    THUMBV7EM_NUTTX_EABIHF,
248    THUMBV7M_NONE_EABI,
249    THUMBV7M_NUTTX_EABI,
250    THUMBV7NEON_LINUX_ANDROIDEABI,
251    THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF,
252    THUMBV7NEON_UNKNOWN_LINUX_MUSLEABIHF,
253    THUMBV8M_BASE_NONE_EABI,
254    THUMBV8M_BASE_NUTTX_EABI,
255    THUMBV8M_MAIN_NONE_EABI,
256    THUMBV8M_MAIN_NONE_EABIHF,
257    THUMBV8M_MAIN_NUTTX_EABI,
258    THUMBV8M_MAIN_NUTTX_EABIHF,
259    WASM32_UNKNOWN_EMSCRIPTEN,
260    WASM32_UNKNOWN_UNKNOWN,
261    WASM32_WALI_LINUX_MUSL,
262    WASM32_WASIP1,
263    WASM32_WASIP1_THREADS,
264    WASM32_WASIP2,
265    WASM32_WASIP3,
266    WASM32V1_NONE,
267    WASM64_UNKNOWN_UNKNOWN,
268    X86_64_APPLE_DARWIN,
269    X86_64_APPLE_IOS,
270    X86_64_APPLE_IOS_MACABI,
271    X86_64_APPLE_TVOS,
272    X86_64_APPLE_WATCHOS_SIM,
273    X86_64_FORTANIX_UNKNOWN_SGX,
274    X86_64_LINUX_ANDROID,
275    X86_64_LYNX_LYNXOS178,
276    X86_64_PC_CYGWIN,
277    X86_64_PC_NTO_QNX710,
278    X86_64_PC_NTO_QNX710_IOSOCK,
279    X86_64_PC_NTO_QNX800,
280    X86_64_PC_SOLARIS,
281    X86_64_PC_WINDOWS_GNU,
282    X86_64_PC_WINDOWS_GNULLVM,
283    X86_64_PC_WINDOWS_MSVC,
284    X86_64_UNIKRAFT_LINUX_MUSL,
285    X86_64_UNKNOWN_DRAGONFLY,
286    X86_64_UNKNOWN_FREEBSD,
287    X86_64_UNKNOWN_FUCHSIA,
288    X86_64_UNKNOWN_HAIKU,
289    X86_64_UNKNOWN_HERMIT,
290    X86_64_UNKNOWN_HURD_GNU,
291    X86_64_UNKNOWN_ILLUMOS,
292    X86_64_UNKNOWN_L4RE_UCLIBC,
293    X86_64_UNKNOWN_LINUX_GNU,
294    X86_64_UNKNOWN_LINUX_GNUX32,
295    X86_64_UNKNOWN_LINUX_MUSL,
296    X86_64_UNKNOWN_LINUX_NONE,
297    X86_64_UNKNOWN_LINUX_OHOS,
298    X86_64_UNKNOWN_MANAGARM_MLIBC,
299    X86_64_UNKNOWN_MOTOR,
300    X86_64_UNKNOWN_NETBSD,
301    X86_64_UNKNOWN_NONE,
302    X86_64_UNKNOWN_OPENBSD,
303    X86_64_UNKNOWN_REDOX,
304    X86_64_UNKNOWN_TRUSTY,
305    X86_64_UNKNOWN_UEFI,
306    X86_64_UWP_WINDOWS_GNU,
307    X86_64_UWP_WINDOWS_MSVC,
308    X86_64_WIN7_WINDOWS_GNU,
309    X86_64_WIN7_WINDOWS_MSVC,
310    X86_64_WRS_VXWORKS,
311    X86_64H_APPLE_DARWIN,
312    XTENSA_ESP32_ESPIDF,
313    XTENSA_ESP32_NONE_ELF,
314    XTENSA_ESP32S2_ESPIDF,
315    XTENSA_ESP32S2_NONE_ELF,
316    XTENSA_ESP32S3_ESPIDF,
317    XTENSA_ESP32S3_NONE_ELF,
318];
319
320/// ARM64 macOS (11.0+, Big Sur+)
321pub(crate) const AARCH64_APPLE_DARWIN: Platform = Platform {
322    target_triple: "aarch64-apple-darwin",
323    target_arch: Arch::AArch64,
324    target_os: OS::MacOS,
325    target_env: Env::None,
326    target_endian: Endian::Little,
327    target_pointer_width: PointerWidth::U64,
328    tier: Tier::One,
329};
330
331/// ARM64 iOS
332pub(crate) const AARCH64_APPLE_IOS: Platform = Platform {
333    target_triple: "aarch64-apple-ios",
334    target_arch: Arch::AArch64,
335    target_os: OS::iOS,
336    target_env: Env::None,
337    target_endian: Endian::Little,
338    target_pointer_width: PointerWidth::U64,
339    tier: Tier::Two,
340};
341
342/// Mac Catalyst on ARM64
343pub(crate) const AARCH64_APPLE_IOS_MACABI: Platform = Platform {
344    target_triple: "aarch64-apple-ios-macabi",
345    target_arch: Arch::AArch64,
346    target_os: OS::iOS,
347    target_env: Env::Macabi,
348    target_endian: Endian::Little,
349    target_pointer_width: PointerWidth::U64,
350    tier: Tier::Two,
351};
352
353/// Apple iOS Simulator on ARM64
354pub(crate) const AARCH64_APPLE_IOS_SIM: Platform = Platform {
355    target_triple: "aarch64-apple-ios-sim",
356    target_arch: Arch::AArch64,
357    target_os: OS::iOS,
358    target_env: Env::Sim,
359    target_endian: Endian::Little,
360    target_pointer_width: PointerWidth::U64,
361    tier: Tier::Two,
362};
363
364/// ARM64 tvOS
365pub(crate) const AARCH64_APPLE_TVOS: Platform = Platform {
366    target_triple: "aarch64-apple-tvos",
367    target_arch: Arch::AArch64,
368    target_os: OS::TvOS,
369    target_env: Env::None,
370    target_endian: Endian::Little,
371    target_pointer_width: PointerWidth::U64,
372    tier: Tier::Three,
373};
374
375/// ARM64 tvOS Simulator
376pub(crate) const AARCH64_APPLE_TVOS_SIM: Platform = Platform {
377    target_triple: "aarch64-apple-tvos-sim",
378    target_arch: Arch::AArch64,
379    target_os: OS::TvOS,
380    target_env: Env::Sim,
381    target_endian: Endian::Little,
382    target_pointer_width: PointerWidth::U64,
383    tier: Tier::Three,
384};
385
386/// ARM64 Apple visionOS
387pub(crate) const AARCH64_APPLE_VISIONOS: Platform = Platform {
388    target_triple: "aarch64-apple-visionos",
389    target_arch: Arch::AArch64,
390    target_os: OS::VisionOS,
391    target_env: Env::None,
392    target_endian: Endian::Little,
393    target_pointer_width: PointerWidth::U64,
394    tier: Tier::Three,
395};
396
397/// ARM64 Apple visionOS Simulator
398pub(crate) const AARCH64_APPLE_VISIONOS_SIM: Platform = Platform {
399    target_triple: "aarch64-apple-visionos-sim",
400    target_arch: Arch::AArch64,
401    target_os: OS::VisionOS,
402    target_env: Env::Sim,
403    target_endian: Endian::Little,
404    target_pointer_width: PointerWidth::U64,
405    tier: Tier::Three,
406};
407
408/// ARM64 Apple WatchOS
409pub(crate) const AARCH64_APPLE_WATCHOS: Platform = Platform {
410    target_triple: "aarch64-apple-watchos",
411    target_arch: Arch::AArch64,
412    target_os: OS::WatchOS,
413    target_env: Env::None,
414    target_endian: Endian::Little,
415    target_pointer_width: PointerWidth::U64,
416    tier: Tier::Three,
417};
418
419/// ARM64 Apple WatchOS Simulator
420pub(crate) const AARCH64_APPLE_WATCHOS_SIM: Platform = Platform {
421    target_triple: "aarch64-apple-watchos-sim",
422    target_arch: Arch::AArch64,
423    target_os: OS::WatchOS,
424    target_env: Env::Sim,
425    target_endian: Endian::Little,
426    target_pointer_width: PointerWidth::U64,
427    tier: Tier::Three,
428};
429
430/// ARM64 SOLID with TOPPERS/ASP3
431pub(crate) const AARCH64_KMC_SOLID_ASP3: Platform = Platform {
432    target_triple: "aarch64-kmc-solid_asp3",
433    target_arch: Arch::AArch64,
434    target_os: OS::SolidAsp3,
435    target_env: Env::None,
436    target_endian: Endian::Little,
437    target_pointer_width: PointerWidth::U64,
438    tier: Tier::Three,
439};
440
441/// ARM64 Android
442pub(crate) const AARCH64_LINUX_ANDROID: Platform = Platform {
443    target_triple: "aarch64-linux-android",
444    target_arch: Arch::AArch64,
445    target_os: OS::Android,
446    target_env: Env::None,
447    target_endian: Endian::Little,
448    target_pointer_width: PointerWidth::U64,
449    tier: Tier::Two,
450};
451
452/// ARM64 Nintendo Switch, Horizon
453pub(crate) const AARCH64_NINTENDO_SWITCH_FREESTANDING: Platform = Platform {
454    target_triple: "aarch64-nintendo-switch-freestanding",
455    target_arch: Arch::AArch64,
456    target_os: OS::Horizon,
457    target_env: Env::None,
458    target_endian: Endian::Little,
459    target_pointer_width: PointerWidth::U64,
460    tier: Tier::Three,
461};
462
463/// ARM64 MinGW (Windows 10+), LLVM ABI
464pub(crate) const AARCH64_PC_WINDOWS_GNULLVM: Platform = Platform {
465    target_triple: "aarch64-pc-windows-gnullvm",
466    target_arch: Arch::AArch64,
467    target_os: OS::Windows,
468    target_env: Env::Gnu,
469    target_endian: Endian::Little,
470    target_pointer_width: PointerWidth::U64,
471    tier: Tier::Two,
472};
473
474/// ARM64 Windows MSVC
475pub(crate) const AARCH64_PC_WINDOWS_MSVC: Platform = Platform {
476    target_triple: "aarch64-pc-windows-msvc",
477    target_arch: Arch::AArch64,
478    target_os: OS::Windows,
479    target_env: Env::Msvc,
480    target_endian: Endian::Little,
481    target_pointer_width: PointerWidth::U64,
482    tier: Tier::One,
483};
484
485/// ARM64 FreeBSD
486pub(crate) const AARCH64_UNKNOWN_FREEBSD: Platform = Platform {
487    target_triple: "aarch64-unknown-freebsd",
488    target_arch: Arch::AArch64,
489    target_os: OS::FreeBSD,
490    target_env: Env::None,
491    target_endian: Endian::Little,
492    target_pointer_width: PointerWidth::U64,
493    tier: Tier::Three,
494};
495
496/// ARM64 Fuchsia
497pub(crate) const AARCH64_UNKNOWN_FUCHSIA: Platform = Platform {
498    target_triple: "aarch64-unknown-fuchsia",
499    target_arch: Arch::AArch64,
500    target_os: OS::Fuchsia,
501    target_env: Env::None,
502    target_endian: Endian::Little,
503    target_pointer_width: PointerWidth::U64,
504    tier: Tier::Two,
505};
506
507/// ARM64 Hermit
508pub(crate) const AARCH64_UNKNOWN_HERMIT: Platform = Platform {
509    target_triple: "aarch64-unknown-hermit",
510    target_arch: Arch::AArch64,
511    target_os: OS::Hermit,
512    target_env: Env::None,
513    target_endian: Endian::Little,
514    target_pointer_width: PointerWidth::U64,
515    tier: Tier::Three,
516};
517
518/// ARM64 illumos
519pub(crate) const AARCH64_UNKNOWN_ILLUMOS: Platform = Platform {
520    target_triple: "aarch64-unknown-illumos",
521    target_arch: Arch::AArch64,
522    target_os: OS::IllumOS,
523    target_env: Env::None,
524    target_endian: Endian::Little,
525    target_pointer_width: PointerWidth::U64,
526    tier: Tier::Three,
527};
528
529/// ARM64 Linux (kernel 4.1+, glibc 2.17+)
530pub(crate) const AARCH64_UNKNOWN_LINUX_GNU: Platform = Platform {
531    target_triple: "aarch64-unknown-linux-gnu",
532    target_arch: Arch::AArch64,
533    target_os: OS::Linux,
534    target_env: Env::Gnu,
535    target_endian: Endian::Little,
536    target_pointer_width: PointerWidth::U64,
537    tier: Tier::One,
538};
539
540/// ARM64 Linux (ILP32 ABI)
541pub(crate) const AARCH64_UNKNOWN_LINUX_GNU_ILP32: Platform = Platform {
542    target_triple: "aarch64-unknown-linux-gnu_ilp32",
543    target_arch: Arch::AArch64,
544    target_os: OS::Linux,
545    target_env: Env::Gnu,
546    target_endian: Endian::Little,
547    target_pointer_width: PointerWidth::U32,
548    tier: Tier::Three,
549};
550
551/// ARM64 Linux with musl 1.2.3
552pub(crate) const AARCH64_UNKNOWN_LINUX_MUSL: Platform = Platform {
553    target_triple: "aarch64-unknown-linux-musl",
554    target_arch: Arch::AArch64,
555    target_os: OS::Linux,
556    target_env: Env::Musl,
557    target_endian: Endian::Little,
558    target_pointer_width: PointerWidth::U64,
559    tier: Tier::Two,
560};
561
562/// ARM64 OpenHarmony
563pub(crate) const AARCH64_UNKNOWN_LINUX_OHOS: Platform = Platform {
564    target_triple: "aarch64-unknown-linux-ohos",
565    target_arch: Arch::AArch64,
566    target_os: OS::Linux,
567    target_env: Env::OhOS,
568    target_endian: Endian::Little,
569    target_pointer_width: PointerWidth::U64,
570    tier: Tier::Two,
571};
572
573/// ARM64 Managarm
574pub(crate) const AARCH64_UNKNOWN_MANAGARM_MLIBC: Platform = Platform {
575    target_triple: "aarch64-unknown-managarm-mlibc",
576    target_arch: Arch::AArch64,
577    target_os: OS::Managarm,
578    target_env: Env::Mlibc,
579    target_endian: Endian::Little,
580    target_pointer_width: PointerWidth::U64,
581    tier: Tier::Three,
582};
583
584/// ARM64 NetBSD
585pub(crate) const AARCH64_UNKNOWN_NETBSD: Platform = Platform {
586    target_triple: "aarch64-unknown-netbsd",
587    target_arch: Arch::AArch64,
588    target_os: OS::NetBSD,
589    target_env: Env::None,
590    target_endian: Endian::Little,
591    target_pointer_width: PointerWidth::U64,
592    tier: Tier::Three,
593};
594
595/// Bare ARM64, hardfloat
596pub(crate) const AARCH64_UNKNOWN_NONE: Platform = Platform {
597    target_triple: "aarch64-unknown-none",
598    target_arch: Arch::AArch64,
599    target_os: OS::None,
600    target_env: Env::None,
601    target_endian: Endian::Little,
602    target_pointer_width: PointerWidth::U64,
603    tier: Tier::Two,
604};
605
606/// Bare ARM64, softfloat
607pub(crate) const AARCH64_UNKNOWN_NONE_SOFTFLOAT: Platform = Platform {
608    target_triple: "aarch64-unknown-none-softfloat",
609    target_arch: Arch::AArch64,
610    target_os: OS::None,
611    target_env: Env::None,
612    target_endian: Endian::Little,
613    target_pointer_width: PointerWidth::U64,
614    tier: Tier::Two,
615};
616
617pub(crate) const AARCH64_UNKNOWN_NTO_QNX700: Platform = Platform {
618    target_triple: "aarch64-unknown-nto-qnx700",
619    target_arch: Arch::AArch64,
620    target_os: OS::Nto,
621    target_env: Env::Nto70,
622    target_endian: Endian::Little,
623    target_pointer_width: PointerWidth::U64,
624    tier: Tier::Three,
625};
626
627pub(crate) const AARCH64_UNKNOWN_NTO_QNX710: Platform = Platform {
628    target_triple: "aarch64-unknown-nto-qnx710",
629    target_arch: Arch::AArch64,
630    target_os: OS::Nto,
631    target_env: Env::Nto71,
632    target_endian: Endian::Little,
633    target_pointer_width: PointerWidth::U64,
634    tier: Tier::Three,
635};
636
637pub(crate) const AARCH64_UNKNOWN_NTO_QNX710_IOSOCK: Platform = Platform {
638    target_triple: "aarch64-unknown-nto-qnx710_iosock",
639    target_arch: Arch::AArch64,
640    target_os: OS::Nto,
641    target_env: Env::Nto71Iosock,
642    target_endian: Endian::Little,
643    target_pointer_width: PointerWidth::U64,
644    tier: Tier::Three,
645};
646
647pub(crate) const AARCH64_UNKNOWN_NTO_QNX800: Platform = Platform {
648    target_triple: "aarch64-unknown-nto-qnx800",
649    target_arch: Arch::AArch64,
650    target_os: OS::Nto,
651    target_env: Env::Nto80,
652    target_endian: Endian::Little,
653    target_pointer_width: PointerWidth::U64,
654    tier: Tier::Three,
655};
656
657/// ARM64 with NuttX
658pub(crate) const AARCH64_UNKNOWN_NUTTX: Platform = Platform {
659    target_triple: "aarch64-unknown-nuttx",
660    target_arch: Arch::AArch64,
661    target_os: OS::Nuttx,
662    target_env: Env::None,
663    target_endian: Endian::Little,
664    target_pointer_width: PointerWidth::U64,
665    tier: Tier::Three,
666};
667
668/// ARM64 OpenBSD
669pub(crate) const AARCH64_UNKNOWN_OPENBSD: Platform = Platform {
670    target_triple: "aarch64-unknown-openbsd",
671    target_arch: Arch::AArch64,
672    target_os: OS::OpenBSD,
673    target_env: Env::None,
674    target_endian: Endian::Little,
675    target_pointer_width: PointerWidth::U64,
676    tier: Tier::Three,
677};
678
679/// ARM64 Redox OS
680pub(crate) const AARCH64_UNKNOWN_REDOX: Platform = Platform {
681    target_triple: "aarch64-unknown-redox",
682    target_arch: Arch::AArch64,
683    target_os: OS::Redox,
684    target_env: Env::Relibc,
685    target_endian: Endian::Little,
686    target_pointer_width: PointerWidth::U64,
687    tier: Tier::Three,
688};
689
690pub(crate) const AARCH64_UNKNOWN_TEEOS: Platform = Platform {
691    target_triple: "aarch64-unknown-teeos",
692    target_arch: Arch::AArch64,
693    target_os: OS::TeeOS,
694    target_env: Env::None,
695    target_endian: Endian::Little,
696    target_pointer_width: PointerWidth::U64,
697    tier: Tier::Three,
698};
699
700pub(crate) const AARCH64_UNKNOWN_TRUSTY: Platform = Platform {
701    target_triple: "aarch64-unknown-trusty",
702    target_arch: Arch::AArch64,
703    target_os: OS::Trusty,
704    target_env: Env::None,
705    target_endian: Endian::Little,
706    target_pointer_width: PointerWidth::U64,
707    tier: Tier::Three,
708};
709
710/// ARM64 UEFI
711pub(crate) const AARCH64_UNKNOWN_UEFI: Platform = Platform {
712    target_triple: "aarch64-unknown-uefi",
713    target_arch: Arch::AArch64,
714    target_os: OS::Uefi,
715    target_env: Env::None,
716    target_endian: Endian::Little,
717    target_pointer_width: PointerWidth::U64,
718    tier: Tier::Two,
719};
720
721pub(crate) const AARCH64_UWP_WINDOWS_MSVC: Platform = Platform {
722    target_triple: "aarch64-uwp-windows-msvc",
723    target_arch: Arch::AArch64,
724    target_os: OS::Windows,
725    target_env: Env::Msvc,
726    target_endian: Endian::Little,
727    target_pointer_width: PointerWidth::U64,
728    tier: Tier::Three,
729};
730
731/// ARM64 VxWorks OS
732pub(crate) const AARCH64_WRS_VXWORKS: Platform = Platform {
733    target_triple: "aarch64-wrs-vxworks",
734    target_arch: Arch::AArch64,
735    target_os: OS::VxWorks,
736    target_env: Env::Gnu,
737    target_endian: Endian::Little,
738    target_pointer_width: PointerWidth::U64,
739    tier: Tier::Three,
740};
741
742/// ARM64 Hermit (big-endian)
743pub(crate) const AARCH64_BE_UNKNOWN_HERMIT: Platform = Platform {
744    target_triple: "aarch64_be-unknown-hermit",
745    target_arch: Arch::AArch64,
746    target_os: OS::Hermit,
747    target_env: Env::None,
748    target_endian: Endian::Big,
749    target_pointer_width: PointerWidth::U64,
750    tier: Tier::Three,
751};
752
753/// ARM64 Linux (big-endian)
754pub(crate) const AARCH64_BE_UNKNOWN_LINUX_GNU: Platform = Platform {
755    target_triple: "aarch64_be-unknown-linux-gnu",
756    target_arch: Arch::AArch64,
757    target_os: OS::Linux,
758    target_env: Env::Gnu,
759    target_endian: Endian::Big,
760    target_pointer_width: PointerWidth::U64,
761    tier: Tier::Three,
762};
763
764/// ARM64 Linux (big-endian, ILP32 ABI)
765pub(crate) const AARCH64_BE_UNKNOWN_LINUX_GNU_ILP32: Platform = Platform {
766    target_triple: "aarch64_be-unknown-linux-gnu_ilp32",
767    target_arch: Arch::AArch64,
768    target_os: OS::Linux,
769    target_env: Env::Gnu,
770    target_endian: Endian::Big,
771    target_pointer_width: PointerWidth::U32,
772    tier: Tier::Three,
773};
774
775/// ARM64 Linux (big-endian) with musl-libc 1.2.5
776pub(crate) const AARCH64_BE_UNKNOWN_LINUX_MUSL: Platform = Platform {
777    target_triple: "aarch64_be-unknown-linux-musl",
778    target_arch: Arch::AArch64,
779    target_os: OS::Linux,
780    target_env: Env::Musl,
781    target_endian: Endian::Big,
782    target_pointer_width: PointerWidth::U64,
783    tier: Tier::Three,
784};
785
786/// ARM64 NetBSD (big-endian)
787pub(crate) const AARCH64_BE_UNKNOWN_NETBSD: Platform = Platform {
788    target_triple: "aarch64_be-unknown-netbsd",
789    target_arch: Arch::AArch64,
790    target_os: OS::NetBSD,
791    target_env: Env::None,
792    target_endian: Endian::Big,
793    target_pointer_width: PointerWidth::U64,
794    tier: Tier::Three,
795};
796
797/// Bare big-endian ARM64, softfloat
798pub(crate) const AARCH64_BE_UNKNOWN_NONE_SOFTFLOAT: Platform = Platform {
799    target_triple: "aarch64_be-unknown-none-softfloat",
800    target_arch: Arch::AArch64,
801    target_os: OS::None,
802    target_env: Env::None,
803    target_endian: Endian::Big,
804    target_pointer_width: PointerWidth::U64,
805    tier: Tier::Three,
806};
807
808/// `-Ctarget-cpu=gfx...` to specify [the AMD GPU] to compile for
809pub(crate) const AMDGCN_AMD_AMDHSA: Platform = Platform {
810    target_triple: "amdgcn-amd-amdhsa",
811    target_arch: Arch::Amdgpu,
812    target_os: OS::Amdhsa,
813    target_env: Env::None,
814    target_endian: Endian::Little,
815    target_pointer_width: PointerWidth::U64,
816    tier: Tier::Three,
817};
818
819/// Armv6 Android
820pub(crate) const ARM_LINUX_ANDROIDEABI: Platform = Platform {
821    target_triple: "arm-linux-androideabi",
822    target_arch: Arch::Arm,
823    target_os: OS::Android,
824    target_env: Env::None,
825    target_endian: Endian::Little,
826    target_pointer_width: PointerWidth::U32,
827    tier: Tier::Two,
828};
829
830/// Armv6 Linux (kernel 3.2+, glibc 2.17)
831pub(crate) const ARM_UNKNOWN_LINUX_GNUEABI: Platform = Platform {
832    target_triple: "arm-unknown-linux-gnueabi",
833    target_arch: Arch::Arm,
834    target_os: OS::Linux,
835    target_env: Env::Gnu,
836    target_endian: Endian::Little,
837    target_pointer_width: PointerWidth::U32,
838    tier: Tier::Two,
839};
840
841/// Armv6 Linux, hardfloat (kernel 3.2+, glibc 2.17)
842pub(crate) const ARM_UNKNOWN_LINUX_GNUEABIHF: Platform = Platform {
843    target_triple: "arm-unknown-linux-gnueabihf",
844    target_arch: Arch::Arm,
845    target_os: OS::Linux,
846    target_env: Env::Gnu,
847    target_endian: Endian::Little,
848    target_pointer_width: PointerWidth::U32,
849    tier: Tier::Two,
850};
851
852/// Armv6 Linux with musl 1.2.3
853pub(crate) const ARM_UNKNOWN_LINUX_MUSLEABI: Platform = Platform {
854    target_triple: "arm-unknown-linux-musleabi",
855    target_arch: Arch::Arm,
856    target_os: OS::Linux,
857    target_env: Env::Musl,
858    target_endian: Endian::Little,
859    target_pointer_width: PointerWidth::U32,
860    tier: Tier::Two,
861};
862
863/// Armv6 Linux with musl 1.2.3, hardfloat
864pub(crate) const ARM_UNKNOWN_LINUX_MUSLEABIHF: Platform = Platform {
865    target_triple: "arm-unknown-linux-musleabihf",
866    target_arch: Arch::Arm,
867    target_os: OS::Linux,
868    target_env: Env::Musl,
869    target_endian: Endian::Little,
870    target_pointer_width: PointerWidth::U32,
871    tier: Tier::Two,
872};
873
874/// Arm Apple WatchOS 64-bit with 32-bit pointers
875pub(crate) const ARM64_32_APPLE_WATCHOS: Platform = Platform {
876    target_triple: "arm64_32-apple-watchos",
877    target_arch: Arch::AArch64,
878    target_os: OS::WatchOS,
879    target_env: Env::None,
880    target_endian: Endian::Little,
881    target_pointer_width: PointerWidth::U32,
882    tier: Tier::Three,
883};
884
885/// ARM64e Apple Darwin
886pub(crate) const ARM64E_APPLE_DARWIN: Platform = Platform {
887    target_triple: "arm64e-apple-darwin",
888    target_arch: Arch::AArch64,
889    target_os: OS::MacOS,
890    target_env: Env::None,
891    target_endian: Endian::Little,
892    target_pointer_width: PointerWidth::U64,
893    tier: Tier::Three,
894};
895
896/// ARM64e Apple iOS
897pub(crate) const ARM64E_APPLE_IOS: Platform = Platform {
898    target_triple: "arm64e-apple-ios",
899    target_arch: Arch::AArch64,
900    target_os: OS::iOS,
901    target_env: Env::None,
902    target_endian: Endian::Little,
903    target_pointer_width: PointerWidth::U64,
904    tier: Tier::Three,
905};
906
907/// ARM64e Apple tvOS
908pub(crate) const ARM64E_APPLE_TVOS: Platform = Platform {
909    target_triple: "arm64e-apple-tvos",
910    target_arch: Arch::AArch64,
911    target_os: OS::TvOS,
912    target_env: Env::None,
913    target_endian: Endian::Little,
914    target_pointer_width: PointerWidth::U64,
915    tier: Tier::Three,
916};
917
918/// Arm64EC Windows MSVC
919pub(crate) const ARM64EC_PC_WINDOWS_MSVC: Platform = Platform {
920    target_triple: "arm64ec-pc-windows-msvc",
921    target_arch: Arch::Arm64ec,
922    target_os: OS::Windows,
923    target_env: Env::Msvc,
924    target_endian: Endian::Little,
925    target_pointer_width: PointerWidth::U64,
926    tier: Tier::Two,
927};
928
929/// Arm BE8 the default Arm big-endian architecture since [Armv6](https://developer.arm.com/documentation/101754/0616/armlink-Reference/armlink-Command-line-Options/--be8?lang=en).
930pub(crate) const ARMEB_UNKNOWN_LINUX_GNUEABI: Platform = Platform {
931    target_triple: "armeb-unknown-linux-gnueabi",
932    target_arch: Arch::Arm,
933    target_os: OS::Linux,
934    target_env: Env::Gnu,
935    target_endian: Endian::Big,
936    target_pointer_width: PointerWidth::U32,
937    tier: Tier::Three,
938};
939
940/// Bare Armv7-R, Big Endian
941pub(crate) const ARMEBV7R_NONE_EABI: Platform = Platform {
942    target_triple: "armebv7r-none-eabi",
943    target_arch: Arch::Arm,
944    target_os: OS::None,
945    target_env: Env::None,
946    target_endian: Endian::Big,
947    target_pointer_width: PointerWidth::U32,
948    tier: Tier::Three,
949};
950
951/// Bare Armv7-R, Big Endian, hardfloat
952pub(crate) const ARMEBV7R_NONE_EABIHF: Platform = Platform {
953    target_triple: "armebv7r-none-eabihf",
954    target_arch: Arch::Arm,
955    target_os: OS::None,
956    target_env: Env::None,
957    target_endian: Endian::Big,
958    target_pointer_width: PointerWidth::U32,
959    tier: Tier::Three,
960};
961
962/// Bare Armv4T
963pub(crate) const ARMV4T_NONE_EABI: Platform = Platform {
964    target_triple: "armv4t-none-eabi",
965    target_arch: Arch::Arm,
966    target_os: OS::None,
967    target_env: Env::None,
968    target_endian: Endian::Little,
969    target_pointer_width: PointerWidth::U32,
970    tier: Tier::Three,
971};
972
973/// Armv4T Linux
974pub(crate) const ARMV4T_UNKNOWN_LINUX_GNUEABI: Platform = Platform {
975    target_triple: "armv4t-unknown-linux-gnueabi",
976    target_arch: Arch::Arm,
977    target_os: OS::Linux,
978    target_env: Env::Gnu,
979    target_endian: Endian::Little,
980    target_pointer_width: PointerWidth::U32,
981    tier: Tier::Three,
982};
983
984/// Bare Armv5TE
985pub(crate) const ARMV5TE_NONE_EABI: Platform = Platform {
986    target_triple: "armv5te-none-eabi",
987    target_arch: Arch::Arm,
988    target_os: OS::None,
989    target_env: Env::None,
990    target_endian: Endian::Little,
991    target_pointer_width: PointerWidth::U32,
992    tier: Tier::Three,
993};
994
995/// Armv5TE Linux (kernel 4.4+, glibc 2.23)
996pub(crate) const ARMV5TE_UNKNOWN_LINUX_GNUEABI: Platform = Platform {
997    target_triple: "armv5te-unknown-linux-gnueabi",
998    target_arch: Arch::Arm,
999    target_os: OS::Linux,
1000    target_env: Env::Gnu,
1001    target_endian: Endian::Little,
1002    target_pointer_width: PointerWidth::U32,
1003    tier: Tier::Two,
1004};
1005
1006/// Armv5TE Linux with musl 1.2.3
1007pub(crate) const ARMV5TE_UNKNOWN_LINUX_MUSLEABI: Platform = Platform {
1008    target_triple: "armv5te-unknown-linux-musleabi",
1009    target_arch: Arch::Arm,
1010    target_os: OS::Linux,
1011    target_env: Env::Musl,
1012    target_endian: Endian::Little,
1013    target_pointer_width: PointerWidth::U32,
1014    tier: Tier::Two,
1015};
1016
1017/// Armv5TE Linux with uClibc
1018pub(crate) const ARMV5TE_UNKNOWN_LINUX_UCLIBCEABI: Platform = Platform {
1019    target_triple: "armv5te-unknown-linux-uclibceabi",
1020    target_arch: Arch::Arm,
1021    target_os: OS::Linux,
1022    target_env: Env::UClibc,
1023    target_endian: Endian::Little,
1024    target_pointer_width: PointerWidth::U32,
1025    tier: Tier::Three,
1026};
1027
1028/// Armv6 FreeBSD
1029pub(crate) const ARMV6_UNKNOWN_FREEBSD: Platform = Platform {
1030    target_triple: "armv6-unknown-freebsd",
1031    target_arch: Arch::Arm,
1032    target_os: OS::FreeBSD,
1033    target_env: Env::None,
1034    target_endian: Endian::Little,
1035    target_pointer_width: PointerWidth::U32,
1036    tier: Tier::Three,
1037};
1038
1039/// Armv6 NetBSD w/hard-float
1040pub(crate) const ARMV6_UNKNOWN_NETBSD_EABIHF: Platform = Platform {
1041    target_triple: "armv6-unknown-netbsd-eabihf",
1042    target_arch: Arch::Arm,
1043    target_os: OS::NetBSD,
1044    target_env: Env::None,
1045    target_endian: Endian::Little,
1046    target_pointer_width: PointerWidth::U32,
1047    tier: Tier::Three,
1048};
1049
1050/// Armv6k Nintendo 3DS, Horizon (Requires devkitARM toolchain)
1051pub(crate) const ARMV6K_NINTENDO_3DS: Platform = Platform {
1052    target_triple: "armv6k-nintendo-3ds",
1053    target_arch: Arch::Arm,
1054    target_os: OS::Horizon,
1055    target_env: Env::Newlib,
1056    target_endian: Endian::Little,
1057    target_pointer_width: PointerWidth::U32,
1058    tier: Tier::Three,
1059};
1060
1061/// Armv7-A Android
1062pub(crate) const ARMV7_LINUX_ANDROIDEABI: Platform = Platform {
1063    target_triple: "armv7-linux-androideabi",
1064    target_arch: Arch::Arm,
1065    target_os: OS::Android,
1066    target_env: Env::None,
1067    target_endian: Endian::Little,
1068    target_pointer_width: PointerWidth::U32,
1069    tier: Tier::Two,
1070};
1071
1072/// RTEMS OS for ARM BSPs
1073pub(crate) const ARMV7_RTEMS_EABIHF: Platform = Platform {
1074    target_triple: "armv7-rtems-eabihf",
1075    target_arch: Arch::Arm,
1076    target_os: OS::Rtems,
1077    target_env: Env::Newlib,
1078    target_endian: Endian::Little,
1079    target_pointer_width: PointerWidth::U32,
1080    tier: Tier::Three,
1081};
1082
1083/// Armv7-A Cortex-A9 Sony PlayStation Vita (requires VITASDK toolchain)
1084pub(crate) const ARMV7_SONY_VITA_NEWLIBEABIHF: Platform = Platform {
1085    target_triple: "armv7-sony-vita-newlibeabihf",
1086    target_arch: Arch::Arm,
1087    target_os: OS::Vita,
1088    target_env: Env::Newlib,
1089    target_endian: Endian::Little,
1090    target_pointer_width: PointerWidth::U32,
1091    tier: Tier::Three,
1092};
1093
1094/// Armv7-A FreeBSD
1095pub(crate) const ARMV7_UNKNOWN_FREEBSD: Platform = Platform {
1096    target_triple: "armv7-unknown-freebsd",
1097    target_arch: Arch::Arm,
1098    target_os: OS::FreeBSD,
1099    target_env: Env::None,
1100    target_endian: Endian::Little,
1101    target_pointer_width: PointerWidth::U32,
1102    tier: Tier::Three,
1103};
1104
1105/// Armv7-A Linux (kernel 4.15+, glibc 2.27)
1106pub(crate) const ARMV7_UNKNOWN_LINUX_GNUEABI: Platform = Platform {
1107    target_triple: "armv7-unknown-linux-gnueabi",
1108    target_arch: Arch::Arm,
1109    target_os: OS::Linux,
1110    target_env: Env::Gnu,
1111    target_endian: Endian::Little,
1112    target_pointer_width: PointerWidth::U32,
1113    tier: Tier::Two,
1114};
1115
1116/// Armv7-A Linux, hardfloat (kernel 3.2+, glibc 2.17)
1117pub(crate) const ARMV7_UNKNOWN_LINUX_GNUEABIHF: Platform = Platform {
1118    target_triple: "armv7-unknown-linux-gnueabihf",
1119    target_arch: Arch::Arm,
1120    target_os: OS::Linux,
1121    target_env: Env::Gnu,
1122    target_endian: Endian::Little,
1123    target_pointer_width: PointerWidth::U32,
1124    tier: Tier::Two,
1125};
1126
1127/// Armv7-A Linux with musl 1.2.3
1128pub(crate) const ARMV7_UNKNOWN_LINUX_MUSLEABI: Platform = Platform {
1129    target_triple: "armv7-unknown-linux-musleabi",
1130    target_arch: Arch::Arm,
1131    target_os: OS::Linux,
1132    target_env: Env::Musl,
1133    target_endian: Endian::Little,
1134    target_pointer_width: PointerWidth::U32,
1135    tier: Tier::Two,
1136};
1137
1138/// Armv7-A Linux with musl 1.2.3, hardfloat
1139pub(crate) const ARMV7_UNKNOWN_LINUX_MUSLEABIHF: Platform = Platform {
1140    target_triple: "armv7-unknown-linux-musleabihf",
1141    target_arch: Arch::Arm,
1142    target_os: OS::Linux,
1143    target_env: Env::Musl,
1144    target_endian: Endian::Little,
1145    target_pointer_width: PointerWidth::U32,
1146    tier: Tier::Two,
1147};
1148
1149/// Armv7-A OpenHarmony
1150pub(crate) const ARMV7_UNKNOWN_LINUX_OHOS: Platform = Platform {
1151    target_triple: "armv7-unknown-linux-ohos",
1152    target_arch: Arch::Arm,
1153    target_os: OS::Linux,
1154    target_env: Env::OhOS,
1155    target_endian: Endian::Little,
1156    target_pointer_width: PointerWidth::U32,
1157    tier: Tier::Two,
1158};
1159
1160/// Armv7-A Linux with uClibc, softfloat
1161pub(crate) const ARMV7_UNKNOWN_LINUX_UCLIBCEABI: Platform = Platform {
1162    target_triple: "armv7-unknown-linux-uclibceabi",
1163    target_arch: Arch::Arm,
1164    target_os: OS::Linux,
1165    target_env: Env::UClibc,
1166    target_endian: Endian::Little,
1167    target_pointer_width: PointerWidth::U32,
1168    tier: Tier::Three,
1169};
1170
1171/// Armv7-A Linux with uClibc, hardfloat
1172pub(crate) const ARMV7_UNKNOWN_LINUX_UCLIBCEABIHF: Platform = Platform {
1173    target_triple: "armv7-unknown-linux-uclibceabihf",
1174    target_arch: Arch::Arm,
1175    target_os: OS::Linux,
1176    target_env: Env::UClibc,
1177    target_endian: Endian::Little,
1178    target_pointer_width: PointerWidth::U32,
1179    tier: Tier::Three,
1180};
1181
1182/// Armv7-A NetBSD w/hard-float
1183pub(crate) const ARMV7_UNKNOWN_NETBSD_EABIHF: Platform = Platform {
1184    target_triple: "armv7-unknown-netbsd-eabihf",
1185    target_arch: Arch::Arm,
1186    target_os: OS::NetBSD,
1187    target_env: Env::None,
1188    target_endian: Endian::Little,
1189    target_pointer_width: PointerWidth::U32,
1190    tier: Tier::Three,
1191};
1192
1193pub(crate) const ARMV7_UNKNOWN_TRUSTY: Platform = Platform {
1194    target_triple: "armv7-unknown-trusty",
1195    target_arch: Arch::Arm,
1196    target_os: OS::Trusty,
1197    target_env: Env::None,
1198    target_endian: Endian::Little,
1199    target_pointer_width: PointerWidth::U32,
1200    tier: Tier::Three,
1201};
1202
1203/// Armv7-A for VxWorks
1204pub(crate) const ARMV7_WRS_VXWORKS_EABIHF: Platform = Platform {
1205    target_triple: "armv7-wrs-vxworks-eabihf",
1206    target_arch: Arch::Arm,
1207    target_os: OS::VxWorks,
1208    target_env: Env::Gnu,
1209    target_endian: Endian::Little,
1210    target_pointer_width: PointerWidth::U32,
1211    tier: Tier::Three,
1212};
1213
1214/// ARM SOLID with TOPPERS/ASP3
1215pub(crate) const ARMV7A_KMC_SOLID_ASP3_EABI: Platform = Platform {
1216    target_triple: "armv7a-kmc-solid_asp3-eabi",
1217    target_arch: Arch::Arm,
1218    target_os: OS::SolidAsp3,
1219    target_env: Env::None,
1220    target_endian: Endian::Little,
1221    target_pointer_width: PointerWidth::U32,
1222    tier: Tier::Three,
1223};
1224
1225/// ARM SOLID with TOPPERS/ASP3, hardfloat
1226pub(crate) const ARMV7A_KMC_SOLID_ASP3_EABIHF: Platform = Platform {
1227    target_triple: "armv7a-kmc-solid_asp3-eabihf",
1228    target_arch: Arch::Arm,
1229    target_os: OS::SolidAsp3,
1230    target_env: Env::None,
1231    target_endian: Endian::Little,
1232    target_pointer_width: PointerWidth::U32,
1233    tier: Tier::Three,
1234};
1235
1236/// Bare Armv7-A
1237pub(crate) const ARMV7A_NONE_EABI: Platform = Platform {
1238    target_triple: "armv7a-none-eabi",
1239    target_arch: Arch::Arm,
1240    target_os: OS::None,
1241    target_env: Env::None,
1242    target_endian: Endian::Little,
1243    target_pointer_width: PointerWidth::U32,
1244    tier: Tier::Two,
1245};
1246
1247/// Bare Armv7-A, hardfloat
1248pub(crate) const ARMV7A_NONE_EABIHF: Platform = Platform {
1249    target_triple: "armv7a-none-eabihf",
1250    target_arch: Arch::Arm,
1251    target_os: OS::None,
1252    target_env: Env::None,
1253    target_endian: Endian::Little,
1254    target_pointer_width: PointerWidth::U32,
1255    tier: Tier::Three,
1256};
1257
1258/// ARMv7-A with NuttX
1259pub(crate) const ARMV7A_NUTTX_EABI: Platform = Platform {
1260    target_triple: "armv7a-nuttx-eabi",
1261    target_arch: Arch::Arm,
1262    target_os: OS::Nuttx,
1263    target_env: Env::None,
1264    target_endian: Endian::Little,
1265    target_pointer_width: PointerWidth::U32,
1266    tier: Tier::Three,
1267};
1268
1269/// ARMv7-A with NuttX, hardfloat
1270pub(crate) const ARMV7A_NUTTX_EABIHF: Platform = Platform {
1271    target_triple: "armv7a-nuttx-eabihf",
1272    target_arch: Arch::Arm,
1273    target_os: OS::Nuttx,
1274    target_env: Env::None,
1275    target_endian: Endian::Little,
1276    target_pointer_width: PointerWidth::U32,
1277    tier: Tier::Three,
1278};
1279
1280/// Armv7-A Cortex-A9 VEX V5 Brain, VEXos
1281pub(crate) const ARMV7A_VEX_V5: Platform = Platform {
1282    target_triple: "armv7a-vex-v5",
1283    target_arch: Arch::Arm,
1284    target_os: OS::VexOS,
1285    target_env: Env::V5,
1286    target_endian: Endian::Little,
1287    target_pointer_width: PointerWidth::U32,
1288    tier: Tier::Three,
1289};
1290
1291/// Armv7-A Apple WatchOS
1292pub(crate) const ARMV7K_APPLE_WATCHOS: Platform = Platform {
1293    target_triple: "armv7k-apple-watchos",
1294    target_arch: Arch::Arm,
1295    target_os: OS::WatchOS,
1296    target_env: Env::None,
1297    target_endian: Endian::Little,
1298    target_pointer_width: PointerWidth::U32,
1299    tier: Tier::Three,
1300};
1301
1302/// Bare Armv7-R
1303pub(crate) const ARMV7R_NONE_EABI: Platform = Platform {
1304    target_triple: "armv7r-none-eabi",
1305    target_arch: Arch::Arm,
1306    target_os: OS::None,
1307    target_env: Env::None,
1308    target_endian: Endian::Little,
1309    target_pointer_width: PointerWidth::U32,
1310    tier: Tier::Two,
1311};
1312
1313/// Bare Armv7-R, hardfloat
1314pub(crate) const ARMV7R_NONE_EABIHF: Platform = Platform {
1315    target_triple: "armv7r-none-eabihf",
1316    target_arch: Arch::Arm,
1317    target_os: OS::None,
1318    target_env: Env::None,
1319    target_endian: Endian::Little,
1320    target_pointer_width: PointerWidth::U32,
1321    tier: Tier::Two,
1322};
1323
1324/// Armv7-A Apple-A6 Apple iOS
1325pub(crate) const ARMV7S_APPLE_IOS: Platform = Platform {
1326    target_triple: "armv7s-apple-ios",
1327    target_arch: Arch::Arm,
1328    target_os: OS::iOS,
1329    target_env: Env::None,
1330    target_endian: Endian::Little,
1331    target_pointer_width: PointerWidth::U32,
1332    tier: Tier::Three,
1333};
1334
1335/// Bare Armv8-R, hardfloat
1336pub(crate) const ARMV8R_NONE_EABIHF: Platform = Platform {
1337    target_triple: "armv8r-none-eabihf",
1338    target_arch: Arch::Arm,
1339    target_os: OS::None,
1340    target_env: Env::None,
1341    target_endian: Endian::Little,
1342    target_pointer_width: PointerWidth::U32,
1343    tier: Tier::Three,
1344};
1345
1346/// AVR; requires `-Zbuild-std=core` and `-Ctarget-cpu=...`
1347pub(crate) const AVR_NONE: Platform = Platform {
1348    target_triple: "avr-none",
1349    target_arch: Arch::Avr,
1350    target_os: OS::None,
1351    target_env: Env::None,
1352    target_endian: Endian::Little,
1353    target_pointer_width: PointerWidth::U16,
1354    tier: Tier::Three,
1355};
1356
1357/// BPF (big endian)
1358pub(crate) const BPFEB_UNKNOWN_NONE: Platform = Platform {
1359    target_triple: "bpfeb-unknown-none",
1360    target_arch: Arch::Bpf,
1361    target_os: OS::None,
1362    target_env: Env::None,
1363    target_endian: Endian::Big,
1364    target_pointer_width: PointerWidth::U64,
1365    tier: Tier::Three,
1366};
1367
1368/// BPF (little endian)
1369pub(crate) const BPFEL_UNKNOWN_NONE: Platform = Platform {
1370    target_triple: "bpfel-unknown-none",
1371    target_arch: Arch::Bpf,
1372    target_os: OS::None,
1373    target_env: Env::None,
1374    target_endian: Endian::Little,
1375    target_pointer_width: PointerWidth::U64,
1376    tier: Tier::Three,
1377};
1378
1379/// C-SKY abiv2 Linux (little endian)
1380pub(crate) const CSKY_UNKNOWN_LINUX_GNUABIV2: Platform = Platform {
1381    target_triple: "csky-unknown-linux-gnuabiv2",
1382    target_arch: Arch::Csky,
1383    target_os: OS::Linux,
1384    target_env: Env::Gnu,
1385    target_endian: Endian::Little,
1386    target_pointer_width: PointerWidth::U32,
1387    tier: Tier::Three,
1388};
1389
1390/// C-SKY abiv2 Linux, hardfloat (little endian)
1391pub(crate) const CSKY_UNKNOWN_LINUX_GNUABIV2HF: Platform = Platform {
1392    target_triple: "csky-unknown-linux-gnuabiv2hf",
1393    target_arch: Arch::Csky,
1394    target_os: OS::Linux,
1395    target_env: Env::Gnu,
1396    target_endian: Endian::Little,
1397    target_pointer_width: PointerWidth::U32,
1398    tier: Tier::Three,
1399};
1400
1401/// Hexagon Linux with musl 1.2.3
1402pub(crate) const HEXAGON_UNKNOWN_LINUX_MUSL: Platform = Platform {
1403    target_triple: "hexagon-unknown-linux-musl",
1404    target_arch: Arch::Hexagon,
1405    target_os: OS::Linux,
1406    target_env: Env::Musl,
1407    target_endian: Endian::Little,
1408    target_pointer_width: PointerWidth::U32,
1409    tier: Tier::Three,
1410};
1411
1412/// Bare Hexagon (v60+, HVX)
1413pub(crate) const HEXAGON_UNKNOWN_NONE_ELF: Platform = Platform {
1414    target_triple: "hexagon-unknown-none-elf",
1415    target_arch: Arch::Hexagon,
1416    target_os: OS::None,
1417    target_env: Env::None,
1418    target_endian: Endian::Little,
1419    target_pointer_width: PointerWidth::U32,
1420    tier: Tier::Three,
1421};
1422
1423/// 32-bit x86 iOS (Penryn) [^x86_32-floats-return-ABI]
1424pub(crate) const I386_APPLE_IOS: Platform = Platform {
1425    target_triple: "i386-apple-ios",
1426    target_arch: Arch::X86,
1427    target_os: OS::iOS,
1428    target_env: Env::Sim,
1429    target_endian: Endian::Little,
1430    target_pointer_width: PointerWidth::U32,
1431    tier: Tier::Three,
1432};
1433
1434/// 32-bit Linux (kernel 3.2+, glibc 2.17, original Pentium) [^x86_32-floats-x87]
1435pub(crate) const I586_UNKNOWN_LINUX_GNU: Platform = Platform {
1436    target_triple: "i586-unknown-linux-gnu",
1437    target_arch: Arch::X86,
1438    target_os: OS::Linux,
1439    target_env: Env::Gnu,
1440    target_endian: Endian::Little,
1441    target_pointer_width: PointerWidth::U32,
1442    tier: Tier::Two,
1443};
1444
1445/// 32-bit Linux (musl 1.2.3, original Pentium) [^x86_32-floats-x87]
1446pub(crate) const I586_UNKNOWN_LINUX_MUSL: Platform = Platform {
1447    target_triple: "i586-unknown-linux-musl",
1448    target_arch: Arch::X86,
1449    target_os: OS::Linux,
1450    target_env: Env::Musl,
1451    target_endian: Endian::Little,
1452    target_pointer_width: PointerWidth::U32,
1453    tier: Tier::Two,
1454};
1455
1456/// 32-bit x86 (original Pentium) [^x86_32-floats-x87]
1457pub(crate) const I586_UNKNOWN_NETBSD: Platform = Platform {
1458    target_triple: "i586-unknown-netbsd",
1459    target_arch: Arch::X86,
1460    target_os: OS::NetBSD,
1461    target_env: Env::None,
1462    target_endian: Endian::Little,
1463    target_pointer_width: PointerWidth::U32,
1464    tier: Tier::Three,
1465};
1466
1467/// 32-bit x86 Redox OS (PentiumPro) [^x86_32-floats-x87]
1468pub(crate) const I586_UNKNOWN_REDOX: Platform = Platform {
1469    target_triple: "i586-unknown-redox",
1470    target_arch: Arch::X86,
1471    target_os: OS::Redox,
1472    target_env: Env::Relibc,
1473    target_endian: Endian::Little,
1474    target_pointer_width: PointerWidth::U32,
1475    tier: Tier::Three,
1476};
1477
1478/// 32-bit macOS (10.12+, Sierra+, Penryn) [^x86_32-floats-return-ABI]
1479pub(crate) const I686_APPLE_DARWIN: Platform = Platform {
1480    target_triple: "i686-apple-darwin",
1481    target_arch: Arch::X86,
1482    target_os: OS::MacOS,
1483    target_env: Env::None,
1484    target_endian: Endian::Little,
1485    target_pointer_width: PointerWidth::U32,
1486    tier: Tier::Three,
1487};
1488
1489/// 32-bit x86 Android ([Pentium 4 plus various extensions](https://developer.android.com/ndk/guides/abis.html#x86)) [^x86_32-floats-return-ABI]
1490pub(crate) const I686_LINUX_ANDROID: Platform = Platform {
1491    target_triple: "i686-linux-android",
1492    target_arch: Arch::X86,
1493    target_os: OS::Android,
1494    target_env: Env::None,
1495    target_endian: Endian::Little,
1496    target_pointer_width: PointerWidth::U32,
1497    tier: Tier::Two,
1498};
1499
1500/// 32-bit x86 QNX Neutrino 7.0 RTOS (Pentium 4) [^x86_32-floats-return-ABI]
1501pub(crate) const I686_PC_NTO_QNX700: Platform = Platform {
1502    target_triple: "i686-pc-nto-qnx700",
1503    target_arch: Arch::X86,
1504    target_os: OS::Nto,
1505    target_env: Env::Nto70,
1506    target_endian: Endian::Little,
1507    target_pointer_width: PointerWidth::U32,
1508    tier: Tier::Three,
1509};
1510
1511/// 32-bit MinGW (Windows 10+, Windows Server 2016+, Pentium 4) [^x86_32-floats-return-ABI] [^win32-msvc-alignment]
1512pub(crate) const I686_PC_WINDOWS_GNU: Platform = Platform {
1513    target_triple: "i686-pc-windows-gnu",
1514    target_arch: Arch::X86,
1515    target_os: OS::Windows,
1516    target_env: Env::Gnu,
1517    target_endian: Endian::Little,
1518    target_pointer_width: PointerWidth::U32,
1519    tier: Tier::Two,
1520};
1521
1522/// 32-bit x86 MinGW (Windows 10+, Pentium 4), LLVM ABI [^x86_32-floats-return-ABI]
1523pub(crate) const I686_PC_WINDOWS_GNULLVM: Platform = Platform {
1524    target_triple: "i686-pc-windows-gnullvm",
1525    target_arch: Arch::X86,
1526    target_os: OS::Windows,
1527    target_env: Env::Gnu,
1528    target_endian: Endian::Little,
1529    target_pointer_width: PointerWidth::U32,
1530    tier: Tier::Two,
1531};
1532
1533/// 32-bit MSVC (Windows 10+, Windows Server 2016+, Pentium 4) [^x86_32-floats-return-ABI] [^win32-msvc-alignment]
1534pub(crate) const I686_PC_WINDOWS_MSVC: Platform = Platform {
1535    target_triple: "i686-pc-windows-msvc",
1536    target_arch: Arch::X86,
1537    target_os: OS::Windows,
1538    target_env: Env::Msvc,
1539    target_endian: Endian::Little,
1540    target_pointer_width: PointerWidth::U32,
1541    tier: Tier::One,
1542};
1543
1544/// 32-bit x86 FreeBSD (Pentium 4) [^x86_32-floats-return-ABI]
1545pub(crate) const I686_UNKNOWN_FREEBSD: Platform = Platform {
1546    target_triple: "i686-unknown-freebsd",
1547    target_arch: Arch::X86,
1548    target_os: OS::FreeBSD,
1549    target_env: Env::None,
1550    target_endian: Endian::Little,
1551    target_pointer_width: PointerWidth::U32,
1552    tier: Tier::Two,
1553};
1554
1555/// 32-bit Haiku (Pentium 4) [^x86_32-floats-return-ABI]
1556pub(crate) const I686_UNKNOWN_HAIKU: Platform = Platform {
1557    target_triple: "i686-unknown-haiku",
1558    target_arch: Arch::X86,
1559    target_os: OS::Haiku,
1560    target_env: Env::None,
1561    target_endian: Endian::Little,
1562    target_pointer_width: PointerWidth::U32,
1563    tier: Tier::Three,
1564};
1565
1566/// 32-bit GNU/Hurd (Pentium 4) [^x86_32-floats-return-ABI]
1567pub(crate) const I686_UNKNOWN_HURD_GNU: Platform = Platform {
1568    target_triple: "i686-unknown-hurd-gnu",
1569    target_arch: Arch::X86,
1570    target_os: OS::Hurd,
1571    target_env: Env::Gnu,
1572    target_endian: Endian::Little,
1573    target_pointer_width: PointerWidth::U32,
1574    tier: Tier::Three,
1575};
1576
1577/// 32-bit Linux (kernel 3.2+, glibc 2.17+, Pentium 4) [^x86_32-floats-return-ABI]
1578pub(crate) const I686_UNKNOWN_LINUX_GNU: Platform = Platform {
1579    target_triple: "i686-unknown-linux-gnu",
1580    target_arch: Arch::X86,
1581    target_os: OS::Linux,
1582    target_env: Env::Gnu,
1583    target_endian: Endian::Little,
1584    target_pointer_width: PointerWidth::U32,
1585    tier: Tier::One,
1586};
1587
1588/// 32-bit Linux with musl 1.2.3 (Pentium 4) [^x86_32-floats-return-ABI]
1589pub(crate) const I686_UNKNOWN_LINUX_MUSL: Platform = Platform {
1590    target_triple: "i686-unknown-linux-musl",
1591    target_arch: Arch::X86,
1592    target_os: OS::Linux,
1593    target_env: Env::Musl,
1594    target_endian: Endian::Little,
1595    target_pointer_width: PointerWidth::U32,
1596    tier: Tier::Two,
1597};
1598
1599/// NetBSD/i386 (Pentium 4) [^x86_32-floats-return-ABI]
1600pub(crate) const I686_UNKNOWN_NETBSD: Platform = Platform {
1601    target_triple: "i686-unknown-netbsd",
1602    target_arch: Arch::X86,
1603    target_os: OS::NetBSD,
1604    target_env: Env::None,
1605    target_endian: Endian::Little,
1606    target_pointer_width: PointerWidth::U32,
1607    tier: Tier::Three,
1608};
1609
1610/// 32-bit OpenBSD (Pentium 4) [^x86_32-floats-return-ABI]
1611pub(crate) const I686_UNKNOWN_OPENBSD: Platform = Platform {
1612    target_triple: "i686-unknown-openbsd",
1613    target_arch: Arch::X86,
1614    target_os: OS::OpenBSD,
1615    target_env: Env::None,
1616    target_endian: Endian::Little,
1617    target_pointer_width: PointerWidth::U32,
1618    tier: Tier::Three,
1619};
1620
1621/// 32-bit UEFI (Pentium 4, softfloat) [^win32-msvc-alignment]
1622pub(crate) const I686_UNKNOWN_UEFI: Platform = Platform {
1623    target_triple: "i686-unknown-uefi",
1624    target_arch: Arch::X86,
1625    target_os: OS::Uefi,
1626    target_env: Env::None,
1627    target_endian: Endian::Little,
1628    target_pointer_width: PointerWidth::U32,
1629    tier: Tier::Two,
1630};
1631
1632/// [^x86_32-floats-return-ABI]
1633pub(crate) const I686_UWP_WINDOWS_GNU: Platform = Platform {
1634    target_triple: "i686-uwp-windows-gnu",
1635    target_arch: Arch::X86,
1636    target_os: OS::Windows,
1637    target_env: Env::Gnu,
1638    target_endian: Endian::Little,
1639    target_pointer_width: PointerWidth::U32,
1640    tier: Tier::Three,
1641};
1642
1643/// [^x86_32-floats-return-ABI] [^win32-msvc-alignment]
1644pub(crate) const I686_UWP_WINDOWS_MSVC: Platform = Platform {
1645    target_triple: "i686-uwp-windows-msvc",
1646    target_arch: Arch::X86,
1647    target_os: OS::Windows,
1648    target_env: Env::Msvc,
1649    target_endian: Endian::Little,
1650    target_pointer_width: PointerWidth::U32,
1651    tier: Tier::Three,
1652};
1653
1654/// 32-bit Windows 7 support [^x86_32-floats-return-ABI]
1655pub(crate) const I686_WIN7_WINDOWS_GNU: Platform = Platform {
1656    target_triple: "i686-win7-windows-gnu",
1657    target_arch: Arch::X86,
1658    target_os: OS::Windows,
1659    target_env: Env::Gnu,
1660    target_endian: Endian::Little,
1661    target_pointer_width: PointerWidth::U32,
1662    tier: Tier::Three,
1663};
1664
1665/// 32-bit Windows 7 support [^x86_32-floats-return-ABI] [^win32-msvc-alignment]
1666pub(crate) const I686_WIN7_WINDOWS_MSVC: Platform = Platform {
1667    target_triple: "i686-win7-windows-msvc",
1668    target_arch: Arch::X86,
1669    target_os: OS::Windows,
1670    target_env: Env::Msvc,
1671    target_endian: Endian::Little,
1672    target_pointer_width: PointerWidth::U32,
1673    tier: Tier::Three,
1674};
1675
1676/// [^x86_32-floats-return-ABI]
1677pub(crate) const I686_WRS_VXWORKS: Platform = Platform {
1678    target_triple: "i686-wrs-vxworks",
1679    target_arch: Arch::X86,
1680    target_os: OS::VxWorks,
1681    target_env: Env::Gnu,
1682    target_endian: Endian::Little,
1683    target_pointer_width: PointerWidth::U32,
1684    tier: Tier::Three,
1685};
1686
1687/// LoongArch32 Bare-metal (ILP32D ABI)
1688pub(crate) const LOONGARCH32_UNKNOWN_NONE: Platform = Platform {
1689    target_triple: "loongarch32-unknown-none",
1690    target_arch: Arch::Loongarch32,
1691    target_os: OS::None,
1692    target_env: Env::None,
1693    target_endian: Endian::Little,
1694    target_pointer_width: PointerWidth::U32,
1695    tier: Tier::Three,
1696};
1697
1698/// LoongArch32 Bare-metal (ILP32S ABI)
1699pub(crate) const LOONGARCH32_UNKNOWN_NONE_SOFTFLOAT: Platform = Platform {
1700    target_triple: "loongarch32-unknown-none-softfloat",
1701    target_arch: Arch::Loongarch32,
1702    target_os: OS::None,
1703    target_env: Env::None,
1704    target_endian: Endian::Little,
1705    target_pointer_width: PointerWidth::U32,
1706    tier: Tier::Three,
1707};
1708
1709/// LoongArch64 Linux, LP64D ABI (kernel 5.19+, glibc 2.36), LSX required
1710pub(crate) const LOONGARCH64_UNKNOWN_LINUX_GNU: Platform = Platform {
1711    target_triple: "loongarch64-unknown-linux-gnu",
1712    target_arch: Arch::Loongarch64,
1713    target_os: OS::Linux,
1714    target_env: Env::Gnu,
1715    target_endian: Endian::Little,
1716    target_pointer_width: PointerWidth::U64,
1717    tier: Tier::Two,
1718};
1719
1720/// LoongArch64 Linux, LP64D ABI (kernel 5.19+, musl 1.2.5), LSX required
1721pub(crate) const LOONGARCH64_UNKNOWN_LINUX_MUSL: Platform = Platform {
1722    target_triple: "loongarch64-unknown-linux-musl",
1723    target_arch: Arch::Loongarch64,
1724    target_os: OS::Linux,
1725    target_env: Env::Musl,
1726    target_endian: Endian::Little,
1727    target_pointer_width: PointerWidth::U64,
1728    tier: Tier::Two,
1729};
1730
1731/// LoongArch64 OpenHarmony
1732pub(crate) const LOONGARCH64_UNKNOWN_LINUX_OHOS: Platform = Platform {
1733    target_triple: "loongarch64-unknown-linux-ohos",
1734    target_arch: Arch::Loongarch64,
1735    target_os: OS::Linux,
1736    target_env: Env::OhOS,
1737    target_endian: Endian::Little,
1738    target_pointer_width: PointerWidth::U64,
1739    tier: Tier::Three,
1740};
1741
1742/// LoongArch64 Bare-metal (LP64D ABI)
1743pub(crate) const LOONGARCH64_UNKNOWN_NONE: Platform = Platform {
1744    target_triple: "loongarch64-unknown-none",
1745    target_arch: Arch::Loongarch64,
1746    target_os: OS::None,
1747    target_env: Env::None,
1748    target_endian: Endian::Little,
1749    target_pointer_width: PointerWidth::U64,
1750    tier: Tier::Two,
1751};
1752
1753/// LoongArch64 Bare-metal (LP64S ABI)
1754pub(crate) const LOONGARCH64_UNKNOWN_NONE_SOFTFLOAT: Platform = Platform {
1755    target_triple: "loongarch64-unknown-none-softfloat",
1756    target_arch: Arch::Loongarch64,
1757    target_os: OS::None,
1758    target_env: Env::None,
1759    target_endian: Endian::Little,
1760    target_pointer_width: PointerWidth::U64,
1761    tier: Tier::Two,
1762};
1763
1764/// Motorola 680x0 Linux
1765pub(crate) const M68K_UNKNOWN_LINUX_GNU: Platform = Platform {
1766    target_triple: "m68k-unknown-linux-gnu",
1767    target_arch: Arch::M68k,
1768    target_os: OS::Linux,
1769    target_env: Env::Gnu,
1770    target_endian: Endian::Big,
1771    target_pointer_width: PointerWidth::U32,
1772    tier: Tier::Three,
1773};
1774
1775/// Motorola 680x0
1776pub(crate) const M68K_UNKNOWN_NONE_ELF: Platform = Platform {
1777    target_triple: "m68k-unknown-none-elf",
1778    target_arch: Arch::M68k,
1779    target_os: OS::None,
1780    target_env: Env::None,
1781    target_endian: Endian::Big,
1782    target_pointer_width: PointerWidth::U32,
1783    tier: Tier::Three,
1784};
1785
1786/// Bare MIPS32r2 (BE) softfloat
1787pub(crate) const MIPS_MTI_NONE_ELF: Platform = Platform {
1788    target_triple: "mips-mti-none-elf",
1789    target_arch: Arch::Mips,
1790    target_os: OS::None,
1791    target_env: Env::None,
1792    target_endian: Endian::Big,
1793    target_pointer_width: PointerWidth::U32,
1794    tier: Tier::Three,
1795};
1796
1797/// MIPS Linux (kernel 4.4, glibc 2.23)
1798pub(crate) const MIPS_UNKNOWN_LINUX_GNU: Platform = Platform {
1799    target_triple: "mips-unknown-linux-gnu",
1800    target_arch: Arch::Mips,
1801    target_os: OS::Linux,
1802    target_env: Env::Gnu,
1803    target_endian: Endian::Big,
1804    target_pointer_width: PointerWidth::U32,
1805    tier: Tier::Three,
1806};
1807
1808/// MIPS Linux with musl 1.2.3
1809pub(crate) const MIPS_UNKNOWN_LINUX_MUSL: Platform = Platform {
1810    target_triple: "mips-unknown-linux-musl",
1811    target_arch: Arch::Mips,
1812    target_os: OS::Linux,
1813    target_env: Env::Musl,
1814    target_endian: Endian::Big,
1815    target_pointer_width: PointerWidth::U32,
1816    tier: Tier::Three,
1817};
1818
1819/// MIPS Linux with uClibc
1820pub(crate) const MIPS_UNKNOWN_LINUX_UCLIBC: Platform = Platform {
1821    target_triple: "mips-unknown-linux-uclibc",
1822    target_arch: Arch::Mips,
1823    target_os: OS::Linux,
1824    target_env: Env::UClibc,
1825    target_endian: Endian::Big,
1826    target_pointer_width: PointerWidth::U32,
1827    tier: Tier::Three,
1828};
1829
1830/// MIPS64 for OpenWrt Linux musl 1.2.3
1831pub(crate) const MIPS64_OPENWRT_LINUX_MUSL: Platform = Platform {
1832    target_triple: "mips64-openwrt-linux-musl",
1833    target_arch: Arch::Mips64,
1834    target_os: OS::Linux,
1835    target_env: Env::Musl,
1836    target_endian: Endian::Big,
1837    target_pointer_width: PointerWidth::U64,
1838    tier: Tier::Three,
1839};
1840
1841/// MIPS64 Linux, N64 ABI (kernel 4.4, glibc 2.23)
1842pub(crate) const MIPS64_UNKNOWN_LINUX_GNUABI64: Platform = Platform {
1843    target_triple: "mips64-unknown-linux-gnuabi64",
1844    target_arch: Arch::Mips64,
1845    target_os: OS::Linux,
1846    target_env: Env::Gnu,
1847    target_endian: Endian::Big,
1848    target_pointer_width: PointerWidth::U64,
1849    tier: Tier::Three,
1850};
1851
1852/// MIPS64 Linux, N64 ABI, musl 1.2.3
1853pub(crate) const MIPS64_UNKNOWN_LINUX_MUSLABI64: Platform = Platform {
1854    target_triple: "mips64-unknown-linux-muslabi64",
1855    target_arch: Arch::Mips64,
1856    target_os: OS::Linux,
1857    target_env: Env::Musl,
1858    target_endian: Endian::Big,
1859    target_pointer_width: PointerWidth::U64,
1860    tier: Tier::Three,
1861};
1862
1863/// MIPS64 (little endian) Linux, N64 ABI (kernel 4.4, glibc 2.23)
1864pub(crate) const MIPS64EL_UNKNOWN_LINUX_GNUABI64: Platform = Platform {
1865    target_triple: "mips64el-unknown-linux-gnuabi64",
1866    target_arch: Arch::Mips64,
1867    target_os: OS::Linux,
1868    target_env: Env::Gnu,
1869    target_endian: Endian::Little,
1870    target_pointer_width: PointerWidth::U64,
1871    tier: Tier::Three,
1872};
1873
1874/// MIPS64 (little endian) Linux, N64 ABI, musl 1.2.3
1875pub(crate) const MIPS64EL_UNKNOWN_LINUX_MUSLABI64: Platform = Platform {
1876    target_triple: "mips64el-unknown-linux-muslabi64",
1877    target_arch: Arch::Mips64,
1878    target_os: OS::Linux,
1879    target_env: Env::Musl,
1880    target_endian: Endian::Little,
1881    target_pointer_width: PointerWidth::U64,
1882    tier: Tier::Three,
1883};
1884
1885/// Bare MIPS32r2 (LE) softfloat
1886pub(crate) const MIPSEL_MTI_NONE_ELF: Platform = Platform {
1887    target_triple: "mipsel-mti-none-elf",
1888    target_arch: Arch::Mips,
1889    target_os: OS::None,
1890    target_env: Env::None,
1891    target_endian: Endian::Little,
1892    target_pointer_width: PointerWidth::U32,
1893    tier: Tier::Three,
1894};
1895
1896/// MIPS (LE) Sony PlayStation Portable (PSP)
1897pub(crate) const MIPSEL_SONY_PSP: Platform = Platform {
1898    target_triple: "mipsel-sony-psp",
1899    target_arch: Arch::Mips,
1900    target_os: OS::Psp,
1901    target_env: Env::None,
1902    target_endian: Endian::Little,
1903    target_pointer_width: PointerWidth::U32,
1904    tier: Tier::Three,
1905};
1906
1907/// MIPS (LE) Sony PlayStation 1 (PSX)
1908pub(crate) const MIPSEL_SONY_PSX: Platform = Platform {
1909    target_triple: "mipsel-sony-psx",
1910    target_arch: Arch::Mips,
1911    target_os: OS::Psx,
1912    target_env: Env::None,
1913    target_endian: Endian::Little,
1914    target_pointer_width: PointerWidth::U32,
1915    tier: Tier::Three,
1916};
1917
1918/// MIPS (little endian) Linux (kernel 4.4, glibc 2.23)
1919pub(crate) const MIPSEL_UNKNOWN_LINUX_GNU: Platform = Platform {
1920    target_triple: "mipsel-unknown-linux-gnu",
1921    target_arch: Arch::Mips,
1922    target_os: OS::Linux,
1923    target_env: Env::Gnu,
1924    target_endian: Endian::Little,
1925    target_pointer_width: PointerWidth::U32,
1926    tier: Tier::Three,
1927};
1928
1929/// MIPS (little endian) Linux with musl 1.2.3
1930pub(crate) const MIPSEL_UNKNOWN_LINUX_MUSL: Platform = Platform {
1931    target_triple: "mipsel-unknown-linux-musl",
1932    target_arch: Arch::Mips,
1933    target_os: OS::Linux,
1934    target_env: Env::Musl,
1935    target_endian: Endian::Little,
1936    target_pointer_width: PointerWidth::U32,
1937    tier: Tier::Three,
1938};
1939
1940/// MIPS (LE) Linux with uClibc
1941pub(crate) const MIPSEL_UNKNOWN_LINUX_UCLIBC: Platform = Platform {
1942    target_triple: "mipsel-unknown-linux-uclibc",
1943    target_arch: Arch::Mips,
1944    target_os: OS::Linux,
1945    target_env: Env::UClibc,
1946    target_endian: Endian::Little,
1947    target_pointer_width: PointerWidth::U32,
1948    tier: Tier::Three,
1949};
1950
1951/// 32-bit MIPS (LE), requires mips32 cpu support
1952pub(crate) const MIPSEL_UNKNOWN_NETBSD: Platform = Platform {
1953    target_triple: "mipsel-unknown-netbsd",
1954    target_arch: Arch::Mips,
1955    target_os: OS::NetBSD,
1956    target_env: Env::None,
1957    target_endian: Endian::Little,
1958    target_pointer_width: PointerWidth::U32,
1959    tier: Tier::Three,
1960};
1961
1962/// Bare MIPS (LE) softfloat
1963pub(crate) const MIPSEL_UNKNOWN_NONE: Platform = Platform {
1964    target_triple: "mipsel-unknown-none",
1965    target_arch: Arch::Mips,
1966    target_os: OS::None,
1967    target_env: Env::None,
1968    target_endian: Endian::Little,
1969    target_pointer_width: PointerWidth::U32,
1970    tier: Tier::Three,
1971};
1972
1973/// 32-bit MIPS Release 6 Big Endian
1974pub(crate) const MIPSISA32R6_UNKNOWN_LINUX_GNU: Platform = Platform {
1975    target_triple: "mipsisa32r6-unknown-linux-gnu",
1976    target_arch: Arch::Mips32r6,
1977    target_os: OS::Linux,
1978    target_env: Env::Gnu,
1979    target_endian: Endian::Big,
1980    target_pointer_width: PointerWidth::U32,
1981    tier: Tier::Three,
1982};
1983
1984/// 32-bit MIPS Release 6 Little Endian
1985pub(crate) const MIPSISA32R6EL_UNKNOWN_LINUX_GNU: Platform = Platform {
1986    target_triple: "mipsisa32r6el-unknown-linux-gnu",
1987    target_arch: Arch::Mips32r6,
1988    target_os: OS::Linux,
1989    target_env: Env::Gnu,
1990    target_endian: Endian::Little,
1991    target_pointer_width: PointerWidth::U32,
1992    tier: Tier::Three,
1993};
1994
1995/// 64-bit MIPS Release 6 Big Endian
1996pub(crate) const MIPSISA64R6_UNKNOWN_LINUX_GNUABI64: Platform = Platform {
1997    target_triple: "mipsisa64r6-unknown-linux-gnuabi64",
1998    target_arch: Arch::Mips64r6,
1999    target_os: OS::Linux,
2000    target_env: Env::Gnu,
2001    target_endian: Endian::Big,
2002    target_pointer_width: PointerWidth::U64,
2003    tier: Tier::Three,
2004};
2005
2006/// 64-bit MIPS Release 6 Little Endian
2007pub(crate) const MIPSISA64R6EL_UNKNOWN_LINUX_GNUABI64: Platform = Platform {
2008    target_triple: "mipsisa64r6el-unknown-linux-gnuabi64",
2009    target_arch: Arch::Mips64r6,
2010    target_os: OS::Linux,
2011    target_env: Env::Gnu,
2012    target_endian: Endian::Little,
2013    target_pointer_width: PointerWidth::U64,
2014    tier: Tier::Three,
2015};
2016
2017/// 16-bit MSP430 microcontrollers
2018pub(crate) const MSP430_NONE_ELF: Platform = Platform {
2019    target_triple: "msp430-none-elf",
2020    target_arch: Arch::Msp430,
2021    target_os: OS::None,
2022    target_env: Env::None,
2023    target_endian: Endian::Little,
2024    target_pointer_width: PointerWidth::U16,
2025    tier: Tier::Three,
2026};
2027
2028/// --emit=asm generates PTX code that [runs on NVIDIA GPUs]
2029pub(crate) const NVPTX64_NVIDIA_CUDA: Platform = Platform {
2030    target_triple: "nvptx64-nvidia-cuda",
2031    target_arch: Arch::Nvptx64,
2032    target_os: OS::Cuda,
2033    target_env: Env::None,
2034    target_endian: Endian::Little,
2035    target_pointer_width: PointerWidth::U64,
2036    tier: Tier::Two,
2037};
2038
2039/// PowerPC FreeBSD
2040pub(crate) const POWERPC_UNKNOWN_FREEBSD: Platform = Platform {
2041    target_triple: "powerpc-unknown-freebsd",
2042    target_arch: Arch::PowerPc,
2043    target_os: OS::FreeBSD,
2044    target_env: Env::None,
2045    target_endian: Endian::Big,
2046    target_pointer_width: PointerWidth::U32,
2047    tier: Tier::Three,
2048};
2049
2050/// PowerPC Linux (kernel 3.2+, glibc 2.17)
2051pub(crate) const POWERPC_UNKNOWN_LINUX_GNU: Platform = Platform {
2052    target_triple: "powerpc-unknown-linux-gnu",
2053    target_arch: Arch::PowerPc,
2054    target_os: OS::Linux,
2055    target_env: Env::Gnu,
2056    target_endian: Endian::Big,
2057    target_pointer_width: PointerWidth::U32,
2058    tier: Tier::Two,
2059};
2060
2061/// PowerPC SPE Linux
2062pub(crate) const POWERPC_UNKNOWN_LINUX_GNUSPE: Platform = Platform {
2063    target_triple: "powerpc-unknown-linux-gnuspe",
2064    target_arch: Arch::PowerPc,
2065    target_os: OS::Linux,
2066    target_env: Env::Gnu,
2067    target_endian: Endian::Big,
2068    target_pointer_width: PointerWidth::U32,
2069    tier: Tier::Three,
2070};
2071
2072/// PowerPC Linux with musl 1.2.3
2073pub(crate) const POWERPC_UNKNOWN_LINUX_MUSL: Platform = Platform {
2074    target_triple: "powerpc-unknown-linux-musl",
2075    target_arch: Arch::PowerPc,
2076    target_os: OS::Linux,
2077    target_env: Env::Musl,
2078    target_endian: Endian::Big,
2079    target_pointer_width: PointerWidth::U32,
2080    tier: Tier::Three,
2081};
2082
2083/// PowerPC SPE Linux with musl 1.2.3
2084pub(crate) const POWERPC_UNKNOWN_LINUX_MUSLSPE: Platform = Platform {
2085    target_triple: "powerpc-unknown-linux-muslspe",
2086    target_arch: Arch::PowerPc,
2087    target_os: OS::Linux,
2088    target_env: Env::Musl,
2089    target_endian: Endian::Big,
2090    target_pointer_width: PointerWidth::U32,
2091    tier: Tier::Three,
2092};
2093
2094/// NetBSD 32-bit powerpc systems
2095pub(crate) const POWERPC_UNKNOWN_NETBSD: Platform = Platform {
2096    target_triple: "powerpc-unknown-netbsd",
2097    target_arch: Arch::PowerPc,
2098    target_os: OS::NetBSD,
2099    target_env: Env::None,
2100    target_endian: Endian::Big,
2101    target_pointer_width: PointerWidth::U32,
2102    tier: Tier::Three,
2103};
2104
2105pub(crate) const POWERPC_UNKNOWN_OPENBSD: Platform = Platform {
2106    target_triple: "powerpc-unknown-openbsd",
2107    target_arch: Arch::PowerPc,
2108    target_os: OS::OpenBSD,
2109    target_env: Env::None,
2110    target_endian: Endian::Big,
2111    target_pointer_width: PointerWidth::U32,
2112    tier: Tier::Three,
2113};
2114
2115pub(crate) const POWERPC_WRS_VXWORKS: Platform = Platform {
2116    target_triple: "powerpc-wrs-vxworks",
2117    target_arch: Arch::PowerPc,
2118    target_os: OS::VxWorks,
2119    target_env: Env::Gnu,
2120    target_endian: Endian::Big,
2121    target_pointer_width: PointerWidth::U32,
2122    tier: Tier::Three,
2123};
2124
2125pub(crate) const POWERPC_WRS_VXWORKS_SPE: Platform = Platform {
2126    target_triple: "powerpc-wrs-vxworks-spe",
2127    target_arch: Arch::PowerPc,
2128    target_os: OS::VxWorks,
2129    target_env: Env::Gnu,
2130    target_endian: Endian::Big,
2131    target_pointer_width: PointerWidth::U32,
2132    tier: Tier::Three,
2133};
2134
2135/// 64-bit AIX (7.2 and newer)
2136pub(crate) const POWERPC64_IBM_AIX: Platform = Platform {
2137    target_triple: "powerpc64-ibm-aix",
2138    target_arch: Arch::PowerPc64,
2139    target_os: OS::Aix,
2140    target_env: Env::None,
2141    target_endian: Endian::Big,
2142    target_pointer_width: PointerWidth::U64,
2143    tier: Tier::Three,
2144};
2145
2146/// PPC64 FreeBSD (ELFv2)
2147pub(crate) const POWERPC64_UNKNOWN_FREEBSD: Platform = Platform {
2148    target_triple: "powerpc64-unknown-freebsd",
2149    target_arch: Arch::PowerPc64,
2150    target_os: OS::FreeBSD,
2151    target_env: Env::None,
2152    target_endian: Endian::Big,
2153    target_pointer_width: PointerWidth::U64,
2154    tier: Tier::Three,
2155};
2156
2157/// PPC64 Linux (kernel 3.2+, glibc 2.17)
2158pub(crate) const POWERPC64_UNKNOWN_LINUX_GNU: Platform = Platform {
2159    target_triple: "powerpc64-unknown-linux-gnu",
2160    target_arch: Arch::PowerPc64,
2161    target_os: OS::Linux,
2162    target_env: Env::Gnu,
2163    target_endian: Endian::Big,
2164    target_pointer_width: PointerWidth::U64,
2165    tier: Tier::Two,
2166};
2167
2168/// PPC64 Linux (kernel 4.19, musl 1.2.3)
2169pub(crate) const POWERPC64_UNKNOWN_LINUX_MUSL: Platform = Platform {
2170    target_triple: "powerpc64-unknown-linux-musl",
2171    target_arch: Arch::PowerPc64,
2172    target_os: OS::Linux,
2173    target_env: Env::Musl,
2174    target_endian: Endian::Big,
2175    target_pointer_width: PointerWidth::U64,
2176    tier: Tier::Three,
2177};
2178
2179/// OpenBSD/powerpc64
2180pub(crate) const POWERPC64_UNKNOWN_OPENBSD: Platform = Platform {
2181    target_triple: "powerpc64-unknown-openbsd",
2182    target_arch: Arch::PowerPc64,
2183    target_os: OS::OpenBSD,
2184    target_env: Env::None,
2185    target_endian: Endian::Big,
2186    target_pointer_width: PointerWidth::U64,
2187    tier: Tier::Three,
2188};
2189
2190pub(crate) const POWERPC64_WRS_VXWORKS: Platform = Platform {
2191    target_triple: "powerpc64-wrs-vxworks",
2192    target_arch: Arch::PowerPc64,
2193    target_os: OS::VxWorks,
2194    target_env: Env::Gnu,
2195    target_endian: Endian::Big,
2196    target_pointer_width: PointerWidth::U64,
2197    tier: Tier::Three,
2198};
2199
2200/// PPC64LE FreeBSD
2201pub(crate) const POWERPC64LE_UNKNOWN_FREEBSD: Platform = Platform {
2202    target_triple: "powerpc64le-unknown-freebsd",
2203    target_arch: Arch::PowerPc64,
2204    target_os: OS::FreeBSD,
2205    target_env: Env::None,
2206    target_endian: Endian::Little,
2207    target_pointer_width: PointerWidth::U64,
2208    tier: Tier::Three,
2209};
2210
2211/// PPC64LE Linux (kernel 3.10+, glibc 2.17)
2212pub(crate) const POWERPC64LE_UNKNOWN_LINUX_GNU: Platform = Platform {
2213    target_triple: "powerpc64le-unknown-linux-gnu",
2214    target_arch: Arch::PowerPc64,
2215    target_os: OS::Linux,
2216    target_env: Env::Gnu,
2217    target_endian: Endian::Little,
2218    target_pointer_width: PointerWidth::U64,
2219    tier: Tier::Two,
2220};
2221
2222/// PPC64LE Linux (kernel 4.19+, musl 1.2.3)
2223pub(crate) const POWERPC64LE_UNKNOWN_LINUX_MUSL: Platform = Platform {
2224    target_triple: "powerpc64le-unknown-linux-musl",
2225    target_arch: Arch::PowerPc64,
2226    target_os: OS::Linux,
2227    target_env: Env::Musl,
2228    target_endian: Endian::Little,
2229    target_pointer_width: PointerWidth::U64,
2230    tier: Tier::Two,
2231};
2232
2233pub(crate) const RISCV32_WRS_VXWORKS: Platform = Platform {
2234    target_triple: "riscv32-wrs-vxworks",
2235    target_arch: Arch::Riscv32,
2236    target_os: OS::VxWorks,
2237    target_env: Env::Gnu,
2238    target_endian: Endian::Little,
2239    target_pointer_width: PointerWidth::U32,
2240    tier: Tier::Three,
2241};
2242
2243/// Bare RISC-V (RV32E ISA)
2244pub(crate) const RISCV32E_UNKNOWN_NONE_ELF: Platform = Platform {
2245    target_triple: "riscv32e-unknown-none-elf",
2246    target_arch: Arch::Riscv32,
2247    target_os: OS::None,
2248    target_env: Env::None,
2249    target_endian: Endian::Little,
2250    target_pointer_width: PointerWidth::U32,
2251    tier: Tier::Three,
2252};
2253
2254/// Bare RISC-V (RV32EM ISA)
2255pub(crate) const RISCV32EM_UNKNOWN_NONE_ELF: Platform = Platform {
2256    target_triple: "riscv32em-unknown-none-elf",
2257    target_arch: Arch::Riscv32,
2258    target_os: OS::None,
2259    target_env: Env::None,
2260    target_endian: Endian::Little,
2261    target_pointer_width: PointerWidth::U32,
2262    tier: Tier::Three,
2263};
2264
2265/// Bare RISC-V (RV32EMC ISA)
2266pub(crate) const RISCV32EMC_UNKNOWN_NONE_ELF: Platform = Platform {
2267    target_triple: "riscv32emc-unknown-none-elf",
2268    target_arch: Arch::Riscv32,
2269    target_os: OS::None,
2270    target_env: Env::None,
2271    target_endian: Endian::Little,
2272    target_pointer_width: PointerWidth::U32,
2273    tier: Tier::Three,
2274};
2275
2276/// RISC-V Linux (kernel 5.4, glibc 2.33)
2277pub(crate) const RISCV32GC_UNKNOWN_LINUX_GNU: Platform = Platform {
2278    target_triple: "riscv32gc-unknown-linux-gnu",
2279    target_arch: Arch::Riscv32,
2280    target_os: OS::Linux,
2281    target_env: Env::Gnu,
2282    target_endian: Endian::Little,
2283    target_pointer_width: PointerWidth::U32,
2284    tier: Tier::Three,
2285};
2286
2287/// RISC-V Linux (kernel 5.4, musl 1.2.3 + RISCV32 support patches)
2288pub(crate) const RISCV32GC_UNKNOWN_LINUX_MUSL: Platform = Platform {
2289    target_triple: "riscv32gc-unknown-linux-musl",
2290    target_arch: Arch::Riscv32,
2291    target_os: OS::Linux,
2292    target_env: Env::Musl,
2293    target_endian: Endian::Little,
2294    target_pointer_width: PointerWidth::U32,
2295    tier: Tier::Three,
2296};
2297
2298/// Bare RISC-V (RV32I ISA)
2299pub(crate) const RISCV32I_UNKNOWN_NONE_ELF: Platform = Platform {
2300    target_triple: "riscv32i-unknown-none-elf",
2301    target_arch: Arch::Riscv32,
2302    target_os: OS::None,
2303    target_env: Env::None,
2304    target_endian: Endian::Little,
2305    target_pointer_width: PointerWidth::U32,
2306    tier: Tier::Two,
2307};
2308
2309/// RISC Zero's zero-knowledge Virtual Machine (RV32IM ISA)
2310pub(crate) const RISCV32IM_RISC0_ZKVM_ELF: Platform = Platform {
2311    target_triple: "riscv32im-risc0-zkvm-elf",
2312    target_arch: Arch::Riscv32,
2313    target_os: OS::Zkvm,
2314    target_env: Env::None,
2315    target_endian: Endian::Little,
2316    target_pointer_width: PointerWidth::U32,
2317    tier: Tier::Three,
2318};
2319
2320/// Bare RISC-V (RV32IM ISA)
2321pub(crate) const RISCV32IM_UNKNOWN_NONE_ELF: Platform = Platform {
2322    target_triple: "riscv32im-unknown-none-elf",
2323    target_arch: Arch::Riscv32,
2324    target_os: OS::None,
2325    target_env: Env::None,
2326    target_endian: Endian::Little,
2327    target_pointer_width: PointerWidth::U32,
2328    tier: Tier::Two,
2329};
2330
2331/// Bare RISC-V (RV32IMA ISA)
2332pub(crate) const RISCV32IMA_UNKNOWN_NONE_ELF: Platform = Platform {
2333    target_triple: "riscv32ima-unknown-none-elf",
2334    target_arch: Arch::Riscv32,
2335    target_os: OS::None,
2336    target_env: Env::None,
2337    target_endian: Endian::Little,
2338    target_pointer_width: PointerWidth::U32,
2339    tier: Tier::Three,
2340};
2341
2342/// RISC-V ESP-IDF
2343pub(crate) const RISCV32IMAC_ESP_ESPIDF: Platform = Platform {
2344    target_triple: "riscv32imac-esp-espidf",
2345    target_arch: Arch::Riscv32,
2346    target_os: OS::Espidf,
2347    target_env: Env::Newlib,
2348    target_endian: Endian::Little,
2349    target_pointer_width: PointerWidth::U32,
2350    tier: Tier::Three,
2351};
2352
2353/// Bare RISC-V (RV32IMAC ISA)
2354pub(crate) const RISCV32IMAC_UNKNOWN_NONE_ELF: Platform = Platform {
2355    target_triple: "riscv32imac-unknown-none-elf",
2356    target_arch: Arch::Riscv32,
2357    target_os: OS::None,
2358    target_env: Env::None,
2359    target_endian: Endian::Little,
2360    target_pointer_width: PointerWidth::U32,
2361    tier: Tier::Two,
2362};
2363
2364/// RISC-V 32bit with NuttX
2365pub(crate) const RISCV32IMAC_UNKNOWN_NUTTX_ELF: Platform = Platform {
2366    target_triple: "riscv32imac-unknown-nuttx-elf",
2367    target_arch: Arch::Riscv32,
2368    target_os: OS::Nuttx,
2369    target_env: Env::None,
2370    target_endian: Endian::Little,
2371    target_pointer_width: PointerWidth::U32,
2372    tier: Tier::Three,
2373};
2374
2375/// RISC-V Xous (RV32IMAC ISA)
2376pub(crate) const RISCV32IMAC_UNKNOWN_XOUS_ELF: Platform = Platform {
2377    target_triple: "riscv32imac-unknown-xous-elf",
2378    target_arch: Arch::Riscv32,
2379    target_os: OS::Xous,
2380    target_env: Env::None,
2381    target_endian: Endian::Little,
2382    target_pointer_width: PointerWidth::U32,
2383    tier: Tier::Three,
2384};
2385
2386/// RISC-V ESP-IDF
2387pub(crate) const RISCV32IMAFC_ESP_ESPIDF: Platform = Platform {
2388    target_triple: "riscv32imafc-esp-espidf",
2389    target_arch: Arch::Riscv32,
2390    target_os: OS::Espidf,
2391    target_env: Env::Newlib,
2392    target_endian: Endian::Little,
2393    target_pointer_width: PointerWidth::U32,
2394    tier: Tier::Three,
2395};
2396
2397/// Bare RISC-V (RV32IMAFC ISA)
2398pub(crate) const RISCV32IMAFC_UNKNOWN_NONE_ELF: Platform = Platform {
2399    target_triple: "riscv32imafc-unknown-none-elf",
2400    target_arch: Arch::Riscv32,
2401    target_os: OS::None,
2402    target_env: Env::None,
2403    target_endian: Endian::Little,
2404    target_pointer_width: PointerWidth::U32,
2405    tier: Tier::Two,
2406};
2407
2408/// RISC-V 32bit with NuttX
2409pub(crate) const RISCV32IMAFC_UNKNOWN_NUTTX_ELF: Platform = Platform {
2410    target_triple: "riscv32imafc-unknown-nuttx-elf",
2411    target_arch: Arch::Riscv32,
2412    target_os: OS::Nuttx,
2413    target_env: Env::None,
2414    target_endian: Endian::Little,
2415    target_pointer_width: PointerWidth::U32,
2416    tier: Tier::Three,
2417};
2418
2419/// RISC-V ESP-IDF
2420pub(crate) const RISCV32IMC_ESP_ESPIDF: Platform = Platform {
2421    target_triple: "riscv32imc-esp-espidf",
2422    target_arch: Arch::Riscv32,
2423    target_os: OS::Espidf,
2424    target_env: Env::Newlib,
2425    target_endian: Endian::Little,
2426    target_pointer_width: PointerWidth::U32,
2427    tier: Tier::Three,
2428};
2429
2430/// Bare RISC-V (RV32IMC ISA)
2431pub(crate) const RISCV32IMC_UNKNOWN_NONE_ELF: Platform = Platform {
2432    target_triple: "riscv32imc-unknown-none-elf",
2433    target_arch: Arch::Riscv32,
2434    target_os: OS::None,
2435    target_env: Env::None,
2436    target_endian: Endian::Little,
2437    target_pointer_width: PointerWidth::U32,
2438    tier: Tier::Two,
2439};
2440
2441/// RISC-V 32bit with NuttX
2442pub(crate) const RISCV32IMC_UNKNOWN_NUTTX_ELF: Platform = Platform {
2443    target_triple: "riscv32imc-unknown-nuttx-elf",
2444    target_arch: Arch::Riscv32,
2445    target_os: OS::Nuttx,
2446    target_env: Env::None,
2447    target_endian: Endian::Little,
2448    target_pointer_width: PointerWidth::U32,
2449    tier: Tier::Three,
2450};
2451
2452/// RISC-V 64-bit Android
2453pub(crate) const RISCV64_LINUX_ANDROID: Platform = Platform {
2454    target_triple: "riscv64-linux-android",
2455    target_arch: Arch::Riscv64,
2456    target_os: OS::Android,
2457    target_env: Env::None,
2458    target_endian: Endian::Little,
2459    target_pointer_width: PointerWidth::U64,
2460    tier: Tier::Three,
2461};
2462
2463pub(crate) const RISCV64_WRS_VXWORKS: Platform = Platform {
2464    target_triple: "riscv64-wrs-vxworks",
2465    target_arch: Arch::Riscv64,
2466    target_os: OS::VxWorks,
2467    target_env: Env::Gnu,
2468    target_endian: Endian::Little,
2469    target_pointer_width: PointerWidth::U64,
2470    tier: Tier::Three,
2471};
2472
2473/// RISC-V Linux (kernel 6.8.0+, glibc 2.39)
2474pub(crate) const RISCV64A23_UNKNOWN_LINUX_GNU: Platform = Platform {
2475    target_triple: "riscv64a23-unknown-linux-gnu",
2476    target_arch: Arch::Riscv64,
2477    target_os: OS::Linux,
2478    target_env: Env::Gnu,
2479    target_endian: Endian::Little,
2480    target_pointer_width: PointerWidth::U64,
2481    tier: Tier::Three,
2482};
2483
2484/// RISC-V FreeBSD
2485pub(crate) const RISCV64GC_UNKNOWN_FREEBSD: Platform = Platform {
2486    target_triple: "riscv64gc-unknown-freebsd",
2487    target_arch: Arch::Riscv64,
2488    target_os: OS::FreeBSD,
2489    target_env: Env::None,
2490    target_endian: Endian::Little,
2491    target_pointer_width: PointerWidth::U64,
2492    tier: Tier::Three,
2493};
2494
2495/// RISC-V Fuchsia
2496pub(crate) const RISCV64GC_UNKNOWN_FUCHSIA: Platform = Platform {
2497    target_triple: "riscv64gc-unknown-fuchsia",
2498    target_arch: Arch::Riscv64,
2499    target_os: OS::Fuchsia,
2500    target_env: Env::None,
2501    target_endian: Endian::Little,
2502    target_pointer_width: PointerWidth::U64,
2503    tier: Tier::Three,
2504};
2505
2506/// RISC-V Hermit
2507pub(crate) const RISCV64GC_UNKNOWN_HERMIT: Platform = Platform {
2508    target_triple: "riscv64gc-unknown-hermit",
2509    target_arch: Arch::Riscv64,
2510    target_os: OS::Hermit,
2511    target_env: Env::None,
2512    target_endian: Endian::Little,
2513    target_pointer_width: PointerWidth::U64,
2514    tier: Tier::Three,
2515};
2516
2517/// RISC-V Linux (kernel 4.20+, glibc 2.29)
2518pub(crate) const RISCV64GC_UNKNOWN_LINUX_GNU: Platform = Platform {
2519    target_triple: "riscv64gc-unknown-linux-gnu",
2520    target_arch: Arch::Riscv64,
2521    target_os: OS::Linux,
2522    target_env: Env::Gnu,
2523    target_endian: Endian::Little,
2524    target_pointer_width: PointerWidth::U64,
2525    tier: Tier::Two,
2526};
2527
2528/// RISC-V Linux (kernel 4.20+, musl 1.2.3)
2529pub(crate) const RISCV64GC_UNKNOWN_LINUX_MUSL: Platform = Platform {
2530    target_triple: "riscv64gc-unknown-linux-musl",
2531    target_arch: Arch::Riscv64,
2532    target_os: OS::Linux,
2533    target_env: Env::Musl,
2534    target_endian: Endian::Little,
2535    target_pointer_width: PointerWidth::U64,
2536    tier: Tier::Two,
2537};
2538
2539/// RISC-V Managarm
2540pub(crate) const RISCV64GC_UNKNOWN_MANAGARM_MLIBC: Platform = Platform {
2541    target_triple: "riscv64gc-unknown-managarm-mlibc",
2542    target_arch: Arch::Riscv64,
2543    target_os: OS::Managarm,
2544    target_env: Env::Mlibc,
2545    target_endian: Endian::Little,
2546    target_pointer_width: PointerWidth::U64,
2547    tier: Tier::Three,
2548};
2549
2550/// RISC-V NetBSD
2551pub(crate) const RISCV64GC_UNKNOWN_NETBSD: Platform = Platform {
2552    target_triple: "riscv64gc-unknown-netbsd",
2553    target_arch: Arch::Riscv64,
2554    target_os: OS::NetBSD,
2555    target_env: Env::None,
2556    target_endian: Endian::Little,
2557    target_pointer_width: PointerWidth::U64,
2558    tier: Tier::Three,
2559};
2560
2561/// Bare RISC-V (RV64IMAFDC ISA)
2562pub(crate) const RISCV64GC_UNKNOWN_NONE_ELF: Platform = Platform {
2563    target_triple: "riscv64gc-unknown-none-elf",
2564    target_arch: Arch::Riscv64,
2565    target_os: OS::None,
2566    target_env: Env::None,
2567    target_endian: Endian::Little,
2568    target_pointer_width: PointerWidth::U64,
2569    tier: Tier::Two,
2570};
2571
2572/// RISC-V 64bit with NuttX
2573pub(crate) const RISCV64GC_UNKNOWN_NUTTX_ELF: Platform = Platform {
2574    target_triple: "riscv64gc-unknown-nuttx-elf",
2575    target_arch: Arch::Riscv64,
2576    target_os: OS::Nuttx,
2577    target_env: Env::None,
2578    target_endian: Endian::Little,
2579    target_pointer_width: PointerWidth::U64,
2580    tier: Tier::Three,
2581};
2582
2583/// OpenBSD/riscv64
2584pub(crate) const RISCV64GC_UNKNOWN_OPENBSD: Platform = Platform {
2585    target_triple: "riscv64gc-unknown-openbsd",
2586    target_arch: Arch::Riscv64,
2587    target_os: OS::OpenBSD,
2588    target_env: Env::None,
2589    target_endian: Endian::Little,
2590    target_pointer_width: PointerWidth::U64,
2591    tier: Tier::Three,
2592};
2593
2594/// Bare RISC-V (RV64IMAC ISA)
2595pub(crate) const RISCV64IMAC_UNKNOWN_NONE_ELF: Platform = Platform {
2596    target_triple: "riscv64imac-unknown-none-elf",
2597    target_arch: Arch::Riscv64,
2598    target_os: OS::None,
2599    target_env: Env::None,
2600    target_endian: Endian::Little,
2601    target_pointer_width: PointerWidth::U64,
2602    tier: Tier::Two,
2603};
2604
2605/// RISC-V 64bit with NuttX
2606pub(crate) const RISCV64IMAC_UNKNOWN_NUTTX_ELF: Platform = Platform {
2607    target_triple: "riscv64imac-unknown-nuttx-elf",
2608    target_arch: Arch::Riscv64,
2609    target_os: OS::Nuttx,
2610    target_env: Env::None,
2611    target_endian: Endian::Little,
2612    target_pointer_width: PointerWidth::U64,
2613    tier: Tier::Three,
2614};
2615
2616/// S390x Linux (kernel 3.2+, glibc 2.17)
2617pub(crate) const S390X_UNKNOWN_LINUX_GNU: Platform = Platform {
2618    target_triple: "s390x-unknown-linux-gnu",
2619    target_arch: Arch::S390X,
2620    target_os: OS::Linux,
2621    target_env: Env::Gnu,
2622    target_endian: Endian::Big,
2623    target_pointer_width: PointerWidth::U64,
2624    tier: Tier::Two,
2625};
2626
2627/// S390x Linux (kernel 3.2, musl 1.2.3)
2628pub(crate) const S390X_UNKNOWN_LINUX_MUSL: Platform = Platform {
2629    target_triple: "s390x-unknown-linux-musl",
2630    target_arch: Arch::S390X,
2631    target_os: OS::Linux,
2632    target_env: Env::Musl,
2633    target_endian: Endian::Big,
2634    target_pointer_width: PointerWidth::U64,
2635    tier: Tier::Three,
2636};
2637
2638/// 32-bit SPARC Linux
2639pub(crate) const SPARC_UNKNOWN_LINUX_GNU: Platform = Platform {
2640    target_triple: "sparc-unknown-linux-gnu",
2641    target_arch: Arch::Sparc,
2642    target_os: OS::Linux,
2643    target_env: Env::Gnu,
2644    target_endian: Endian::Big,
2645    target_pointer_width: PointerWidth::U32,
2646    tier: Tier::Three,
2647};
2648
2649/// Bare 32-bit SPARC V7+
2650pub(crate) const SPARC_UNKNOWN_NONE_ELF: Platform = Platform {
2651    target_triple: "sparc-unknown-none-elf",
2652    target_arch: Arch::Sparc,
2653    target_os: OS::None,
2654    target_env: Env::None,
2655    target_endian: Endian::Big,
2656    target_pointer_width: PointerWidth::U32,
2657    tier: Tier::Three,
2658};
2659
2660/// SPARC Linux (kernel 4.4+, glibc 2.23)
2661pub(crate) const SPARC64_UNKNOWN_LINUX_GNU: Platform = Platform {
2662    target_triple: "sparc64-unknown-linux-gnu",
2663    target_arch: Arch::Sparc64,
2664    target_os: OS::Linux,
2665    target_env: Env::Gnu,
2666    target_endian: Endian::Big,
2667    target_pointer_width: PointerWidth::U64,
2668    tier: Tier::Two,
2669};
2670
2671/// NetBSD/sparc64
2672pub(crate) const SPARC64_UNKNOWN_NETBSD: Platform = Platform {
2673    target_triple: "sparc64-unknown-netbsd",
2674    target_arch: Arch::Sparc64,
2675    target_os: OS::NetBSD,
2676    target_env: Env::None,
2677    target_endian: Endian::Big,
2678    target_pointer_width: PointerWidth::U64,
2679    tier: Tier::Three,
2680};
2681
2682/// OpenBSD/sparc64
2683pub(crate) const SPARC64_UNKNOWN_OPENBSD: Platform = Platform {
2684    target_triple: "sparc64-unknown-openbsd",
2685    target_arch: Arch::Sparc64,
2686    target_os: OS::OpenBSD,
2687    target_env: Env::None,
2688    target_endian: Endian::Big,
2689    target_pointer_width: PointerWidth::U64,
2690    tier: Tier::Three,
2691};
2692
2693/// SPARC V9 Solaris 11.4
2694pub(crate) const SPARCV9_SUN_SOLARIS: Platform = Platform {
2695    target_triple: "sparcv9-sun-solaris",
2696    target_arch: Arch::Sparc64,
2697    target_os: OS::Solaris,
2698    target_env: Env::None,
2699    target_endian: Endian::Big,
2700    target_pointer_width: PointerWidth::U64,
2701    tier: Tier::Two,
2702};
2703
2704/// Thumb-mode Bare Armv4T
2705pub(crate) const THUMBV4T_NONE_EABI: Platform = Platform {
2706    target_triple: "thumbv4t-none-eabi",
2707    target_arch: Arch::Arm,
2708    target_os: OS::None,
2709    target_env: Env::None,
2710    target_endian: Endian::Little,
2711    target_pointer_width: PointerWidth::U32,
2712    tier: Tier::Three,
2713};
2714
2715/// Thumb-mode Bare Armv5TE
2716pub(crate) const THUMBV5TE_NONE_EABI: Platform = Platform {
2717    target_triple: "thumbv5te-none-eabi",
2718    target_arch: Arch::Arm,
2719    target_os: OS::None,
2720    target_env: Env::None,
2721    target_endian: Endian::Little,
2722    target_pointer_width: PointerWidth::U32,
2723    tier: Tier::Three,
2724};
2725
2726/// Bare Armv6-M
2727pub(crate) const THUMBV6M_NONE_EABI: Platform = Platform {
2728    target_triple: "thumbv6m-none-eabi",
2729    target_arch: Arch::Arm,
2730    target_os: OS::None,
2731    target_env: Env::None,
2732    target_endian: Endian::Little,
2733    target_pointer_width: PointerWidth::U32,
2734    tier: Tier::Two,
2735};
2736
2737/// ARMv6M with NuttX
2738pub(crate) const THUMBV6M_NUTTX_EABI: Platform = Platform {
2739    target_triple: "thumbv6m-nuttx-eabi",
2740    target_arch: Arch::Arm,
2741    target_os: OS::Nuttx,
2742    target_env: Env::None,
2743    target_endian: Endian::Little,
2744    target_pointer_width: PointerWidth::U32,
2745    tier: Tier::Three,
2746};
2747
2748/// ARMv7-A with NuttX
2749pub(crate) const THUMBV7A_NUTTX_EABI: Platform = Platform {
2750    target_triple: "thumbv7a-nuttx-eabi",
2751    target_arch: Arch::Arm,
2752    target_os: OS::Nuttx,
2753    target_env: Env::None,
2754    target_endian: Endian::Little,
2755    target_pointer_width: PointerWidth::U32,
2756    tier: Tier::Three,
2757};
2758
2759/// ARMv7-A with NuttX, hardfloat
2760pub(crate) const THUMBV7A_NUTTX_EABIHF: Platform = Platform {
2761    target_triple: "thumbv7a-nuttx-eabihf",
2762    target_arch: Arch::Arm,
2763    target_os: OS::Nuttx,
2764    target_env: Env::None,
2765    target_endian: Endian::Little,
2766    target_pointer_width: PointerWidth::U32,
2767    tier: Tier::Three,
2768};
2769
2770pub(crate) const THUMBV7A_PC_WINDOWS_MSVC: Platform = Platform {
2771    target_triple: "thumbv7a-pc-windows-msvc",
2772    target_arch: Arch::Arm,
2773    target_os: OS::Windows,
2774    target_env: Env::Msvc,
2775    target_endian: Endian::Little,
2776    target_pointer_width: PointerWidth::U32,
2777    tier: Tier::Three,
2778};
2779
2780pub(crate) const THUMBV7A_UWP_WINDOWS_MSVC: Platform = Platform {
2781    target_triple: "thumbv7a-uwp-windows-msvc",
2782    target_arch: Arch::Arm,
2783    target_os: OS::Windows,
2784    target_env: Env::Msvc,
2785    target_endian: Endian::Little,
2786    target_pointer_width: PointerWidth::U32,
2787    tier: Tier::Three,
2788};
2789
2790/// Bare Armv7E-M
2791pub(crate) const THUMBV7EM_NONE_EABI: Platform = Platform {
2792    target_triple: "thumbv7em-none-eabi",
2793    target_arch: Arch::Arm,
2794    target_os: OS::None,
2795    target_env: Env::None,
2796    target_endian: Endian::Little,
2797    target_pointer_width: PointerWidth::U32,
2798    tier: Tier::Two,
2799};
2800
2801/// Bare Armv7E-M, hardfloat
2802pub(crate) const THUMBV7EM_NONE_EABIHF: Platform = Platform {
2803    target_triple: "thumbv7em-none-eabihf",
2804    target_arch: Arch::Arm,
2805    target_os: OS::None,
2806    target_env: Env::None,
2807    target_endian: Endian::Little,
2808    target_pointer_width: PointerWidth::U32,
2809    tier: Tier::Two,
2810};
2811
2812/// ARMv7EM with NuttX
2813pub(crate) const THUMBV7EM_NUTTX_EABI: Platform = Platform {
2814    target_triple: "thumbv7em-nuttx-eabi",
2815    target_arch: Arch::Arm,
2816    target_os: OS::Nuttx,
2817    target_env: Env::None,
2818    target_endian: Endian::Little,
2819    target_pointer_width: PointerWidth::U32,
2820    tier: Tier::Three,
2821};
2822
2823/// ARMv7EM with NuttX, hardfloat
2824pub(crate) const THUMBV7EM_NUTTX_EABIHF: Platform = Platform {
2825    target_triple: "thumbv7em-nuttx-eabihf",
2826    target_arch: Arch::Arm,
2827    target_os: OS::Nuttx,
2828    target_env: Env::None,
2829    target_endian: Endian::Little,
2830    target_pointer_width: PointerWidth::U32,
2831    tier: Tier::Three,
2832};
2833
2834/// Bare Armv7-M
2835pub(crate) const THUMBV7M_NONE_EABI: Platform = Platform {
2836    target_triple: "thumbv7m-none-eabi",
2837    target_arch: Arch::Arm,
2838    target_os: OS::None,
2839    target_env: Env::None,
2840    target_endian: Endian::Little,
2841    target_pointer_width: PointerWidth::U32,
2842    tier: Tier::Two,
2843};
2844
2845/// ARMv7M with NuttX
2846pub(crate) const THUMBV7M_NUTTX_EABI: Platform = Platform {
2847    target_triple: "thumbv7m-nuttx-eabi",
2848    target_arch: Arch::Arm,
2849    target_os: OS::Nuttx,
2850    target_env: Env::None,
2851    target_endian: Endian::Little,
2852    target_pointer_width: PointerWidth::U32,
2853    tier: Tier::Three,
2854};
2855
2856/// Thumb2-mode Armv7-A Android with NEON
2857pub(crate) const THUMBV7NEON_LINUX_ANDROIDEABI: Platform = Platform {
2858    target_triple: "thumbv7neon-linux-androideabi",
2859    target_arch: Arch::Arm,
2860    target_os: OS::Android,
2861    target_env: Env::None,
2862    target_endian: Endian::Little,
2863    target_pointer_width: PointerWidth::U32,
2864    tier: Tier::Two,
2865};
2866
2867/// Thumb2-mode Armv7-A Linux with NEON (kernel 4.4+, glibc 2.23)
2868pub(crate) const THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF: Platform = Platform {
2869    target_triple: "thumbv7neon-unknown-linux-gnueabihf",
2870    target_arch: Arch::Arm,
2871    target_os: OS::Linux,
2872    target_env: Env::Gnu,
2873    target_endian: Endian::Little,
2874    target_pointer_width: PointerWidth::U32,
2875    tier: Tier::Two,
2876};
2877
2878/// Thumb2-mode Armv7-A Linux with NEON, musl 1.2.3
2879pub(crate) const THUMBV7NEON_UNKNOWN_LINUX_MUSLEABIHF: Platform = Platform {
2880    target_triple: "thumbv7neon-unknown-linux-musleabihf",
2881    target_arch: Arch::Arm,
2882    target_os: OS::Linux,
2883    target_env: Env::Musl,
2884    target_endian: Endian::Little,
2885    target_pointer_width: PointerWidth::U32,
2886    tier: Tier::Three,
2887};
2888
2889/// Bare Armv8-M Baseline
2890pub(crate) const THUMBV8M_BASE_NONE_EABI: Platform = Platform {
2891    target_triple: "thumbv8m.base-none-eabi",
2892    target_arch: Arch::Arm,
2893    target_os: OS::None,
2894    target_env: Env::None,
2895    target_endian: Endian::Little,
2896    target_pointer_width: PointerWidth::U32,
2897    tier: Tier::Two,
2898};
2899
2900/// ARMv8M Baseline with NuttX
2901pub(crate) const THUMBV8M_BASE_NUTTX_EABI: Platform = Platform {
2902    target_triple: "thumbv8m.base-nuttx-eabi",
2903    target_arch: Arch::Arm,
2904    target_os: OS::Nuttx,
2905    target_env: Env::None,
2906    target_endian: Endian::Little,
2907    target_pointer_width: PointerWidth::U32,
2908    tier: Tier::Three,
2909};
2910
2911/// Bare Armv8-M Mainline
2912pub(crate) const THUMBV8M_MAIN_NONE_EABI: Platform = Platform {
2913    target_triple: "thumbv8m.main-none-eabi",
2914    target_arch: Arch::Arm,
2915    target_os: OS::None,
2916    target_env: Env::None,
2917    target_endian: Endian::Little,
2918    target_pointer_width: PointerWidth::U32,
2919    tier: Tier::Two,
2920};
2921
2922/// Bare Armv8-M Mainline, hardfloat
2923pub(crate) const THUMBV8M_MAIN_NONE_EABIHF: Platform = Platform {
2924    target_triple: "thumbv8m.main-none-eabihf",
2925    target_arch: Arch::Arm,
2926    target_os: OS::None,
2927    target_env: Env::None,
2928    target_endian: Endian::Little,
2929    target_pointer_width: PointerWidth::U32,
2930    tier: Tier::Two,
2931};
2932
2933/// ARMv8M Mainline with NuttX
2934pub(crate) const THUMBV8M_MAIN_NUTTX_EABI: Platform = Platform {
2935    target_triple: "thumbv8m.main-nuttx-eabi",
2936    target_arch: Arch::Arm,
2937    target_os: OS::Nuttx,
2938    target_env: Env::None,
2939    target_endian: Endian::Little,
2940    target_pointer_width: PointerWidth::U32,
2941    tier: Tier::Three,
2942};
2943
2944/// ARMv8M Mainline with NuttX, hardfloat
2945pub(crate) const THUMBV8M_MAIN_NUTTX_EABIHF: Platform = Platform {
2946    target_triple: "thumbv8m.main-nuttx-eabihf",
2947    target_arch: Arch::Arm,
2948    target_os: OS::Nuttx,
2949    target_env: Env::None,
2950    target_endian: Endian::Little,
2951    target_pointer_width: PointerWidth::U32,
2952    tier: Tier::Three,
2953};
2954
2955/// WebAssembly via Emscripten
2956pub(crate) const WASM32_UNKNOWN_EMSCRIPTEN: Platform = Platform {
2957    target_triple: "wasm32-unknown-emscripten",
2958    target_arch: Arch::Wasm32,
2959    target_os: OS::Emscripten,
2960    target_env: Env::None,
2961    target_endian: Endian::Little,
2962    target_pointer_width: PointerWidth::U32,
2963    tier: Tier::Two,
2964};
2965
2966/// WebAssembly
2967pub(crate) const WASM32_UNKNOWN_UNKNOWN: Platform = Platform {
2968    target_triple: "wasm32-unknown-unknown",
2969    target_arch: Arch::Wasm32,
2970    target_os: OS::Unknown,
2971    target_env: Env::None,
2972    target_endian: Endian::Little,
2973    target_pointer_width: PointerWidth::U32,
2974    tier: Tier::Two,
2975};
2976
2977/// WebAssembly with [WALI](https://github.com/arjunr2/WALI)
2978pub(crate) const WASM32_WALI_LINUX_MUSL: Platform = Platform {
2979    target_triple: "wasm32-wali-linux-musl",
2980    target_arch: Arch::Wasm32,
2981    target_os: OS::Linux,
2982    target_env: Env::Musl,
2983    target_endian: Endian::Little,
2984    target_pointer_width: PointerWidth::U32,
2985    tier: Tier::Three,
2986};
2987
2988/// WebAssembly with WASIp1
2989pub(crate) const WASM32_WASIP1: Platform = Platform {
2990    target_triple: "wasm32-wasip1",
2991    target_arch: Arch::Wasm32,
2992    target_os: OS::Wasi,
2993    target_env: Env::P1,
2994    target_endian: Endian::Little,
2995    target_pointer_width: PointerWidth::U32,
2996    tier: Tier::Two,
2997};
2998
2999/// WebAssembly with WASI Preview 1 and threads
3000pub(crate) const WASM32_WASIP1_THREADS: Platform = Platform {
3001    target_triple: "wasm32-wasip1-threads",
3002    target_arch: Arch::Wasm32,
3003    target_os: OS::Wasi,
3004    target_env: Env::P1,
3005    target_endian: Endian::Little,
3006    target_pointer_width: PointerWidth::U32,
3007    tier: Tier::Two,
3008};
3009
3010/// WebAssembly with WASIp2
3011pub(crate) const WASM32_WASIP2: Platform = Platform {
3012    target_triple: "wasm32-wasip2",
3013    target_arch: Arch::Wasm32,
3014    target_os: OS::Wasi,
3015    target_env: Env::P2,
3016    target_endian: Endian::Little,
3017    target_pointer_width: PointerWidth::U32,
3018    tier: Tier::Two,
3019};
3020
3021/// WebAssembly with WASIp3
3022pub(crate) const WASM32_WASIP3: Platform = Platform {
3023    target_triple: "wasm32-wasip3",
3024    target_arch: Arch::Wasm32,
3025    target_os: OS::Wasi,
3026    target_env: Env::P3,
3027    target_endian: Endian::Little,
3028    target_pointer_width: PointerWidth::U32,
3029    tier: Tier::Two,
3030};
3031
3032/// WebAssembly limited to 1.0 features and no imports
3033pub(crate) const WASM32V1_NONE: Platform = Platform {
3034    target_triple: "wasm32v1-none",
3035    target_arch: Arch::Wasm32,
3036    target_os: OS::None,
3037    target_env: Env::None,
3038    target_endian: Endian::Little,
3039    target_pointer_width: PointerWidth::U32,
3040    tier: Tier::Two,
3041};
3042
3043/// WebAssembly
3044pub(crate) const WASM64_UNKNOWN_UNKNOWN: Platform = Platform {
3045    target_triple: "wasm64-unknown-unknown",
3046    target_arch: Arch::Wasm64,
3047    target_os: OS::Unknown,
3048    target_env: Env::None,
3049    target_endian: Endian::Little,
3050    target_pointer_width: PointerWidth::U64,
3051    tier: Tier::Three,
3052};
3053
3054/// 64-bit macOS (10.12+, Sierra+)
3055pub(crate) const X86_64_APPLE_DARWIN: Platform = Platform {
3056    target_triple: "x86_64-apple-darwin",
3057    target_arch: Arch::X86_64,
3058    target_os: OS::MacOS,
3059    target_env: Env::None,
3060    target_endian: Endian::Little,
3061    target_pointer_width: PointerWidth::U64,
3062    tier: Tier::Two,
3063};
3064
3065/// 64-bit x86 iOS
3066pub(crate) const X86_64_APPLE_IOS: Platform = Platform {
3067    target_triple: "x86_64-apple-ios",
3068    target_arch: Arch::X86_64,
3069    target_os: OS::iOS,
3070    target_env: Env::Sim,
3071    target_endian: Endian::Little,
3072    target_pointer_width: PointerWidth::U64,
3073    tier: Tier::Two,
3074};
3075
3076/// Mac Catalyst on x86_64
3077pub(crate) const X86_64_APPLE_IOS_MACABI: Platform = Platform {
3078    target_triple: "x86_64-apple-ios-macabi",
3079    target_arch: Arch::X86_64,
3080    target_os: OS::iOS,
3081    target_env: Env::Macabi,
3082    target_endian: Endian::Little,
3083    target_pointer_width: PointerWidth::U64,
3084    tier: Tier::Two,
3085};
3086
3087/// x86 64-bit tvOS
3088pub(crate) const X86_64_APPLE_TVOS: Platform = Platform {
3089    target_triple: "x86_64-apple-tvos",
3090    target_arch: Arch::X86_64,
3091    target_os: OS::TvOS,
3092    target_env: Env::Sim,
3093    target_endian: Endian::Little,
3094    target_pointer_width: PointerWidth::U64,
3095    tier: Tier::Three,
3096};
3097
3098/// x86 64-bit Apple WatchOS simulator
3099pub(crate) const X86_64_APPLE_WATCHOS_SIM: Platform = Platform {
3100    target_triple: "x86_64-apple-watchos-sim",
3101    target_arch: Arch::X86_64,
3102    target_os: OS::WatchOS,
3103    target_env: Env::Sim,
3104    target_endian: Endian::Little,
3105    target_pointer_width: PointerWidth::U64,
3106    tier: Tier::Three,
3107};
3108
3109/// [Fortanix ABI] for 64-bit Intel SGX
3110pub(crate) const X86_64_FORTANIX_UNKNOWN_SGX: Platform = Platform {
3111    target_triple: "x86_64-fortanix-unknown-sgx",
3112    target_arch: Arch::X86_64,
3113    target_os: OS::Unknown,
3114    target_env: Env::Sgx,
3115    target_endian: Endian::Little,
3116    target_pointer_width: PointerWidth::U64,
3117    tier: Tier::Two,
3118};
3119
3120/// 64-bit x86 Android
3121pub(crate) const X86_64_LINUX_ANDROID: Platform = Platform {
3122    target_triple: "x86_64-linux-android",
3123    target_arch: Arch::X86_64,
3124    target_os: OS::Android,
3125    target_env: Env::None,
3126    target_endian: Endian::Little,
3127    target_pointer_width: PointerWidth::U64,
3128    tier: Tier::Two,
3129};
3130
3131/// x86_64 LynxOS-178
3132pub(crate) const X86_64_LYNX_LYNXOS178: Platform = Platform {
3133    target_triple: "x86_64-lynx-lynxos178",
3134    target_arch: Arch::X86_64,
3135    target_os: OS::Lynxos178,
3136    target_env: Env::None,
3137    target_endian: Endian::Little,
3138    target_pointer_width: PointerWidth::U64,
3139    tier: Tier::Three,
3140};
3141
3142pub(crate) const X86_64_PC_CYGWIN: Platform = Platform {
3143    target_triple: "x86_64-pc-cygwin",
3144    target_arch: Arch::X86_64,
3145    target_os: OS::Cygwin,
3146    target_env: Env::None,
3147    target_endian: Endian::Little,
3148    target_pointer_width: PointerWidth::U64,
3149    tier: Tier::Three,
3150};
3151
3152pub(crate) const X86_64_PC_NTO_QNX710: Platform = Platform {
3153    target_triple: "x86_64-pc-nto-qnx710",
3154    target_arch: Arch::X86_64,
3155    target_os: OS::Nto,
3156    target_env: Env::Nto71,
3157    target_endian: Endian::Little,
3158    target_pointer_width: PointerWidth::U64,
3159    tier: Tier::Three,
3160};
3161
3162pub(crate) const X86_64_PC_NTO_QNX710_IOSOCK: Platform = Platform {
3163    target_triple: "x86_64-pc-nto-qnx710_iosock",
3164    target_arch: Arch::X86_64,
3165    target_os: OS::Nto,
3166    target_env: Env::Nto71Iosock,
3167    target_endian: Endian::Little,
3168    target_pointer_width: PointerWidth::U64,
3169    tier: Tier::Three,
3170};
3171
3172pub(crate) const X86_64_PC_NTO_QNX800: Platform = Platform {
3173    target_triple: "x86_64-pc-nto-qnx800",
3174    target_arch: Arch::X86_64,
3175    target_os: OS::Nto,
3176    target_env: Env::Nto80,
3177    target_endian: Endian::Little,
3178    target_pointer_width: PointerWidth::U64,
3179    tier: Tier::Three,
3180};
3181
3182/// 64-bit x86 Solaris 11.4
3183pub(crate) const X86_64_PC_SOLARIS: Platform = Platform {
3184    target_triple: "x86_64-pc-solaris",
3185    target_arch: Arch::X86_64,
3186    target_os: OS::Solaris,
3187    target_env: Env::None,
3188    target_endian: Endian::Little,
3189    target_pointer_width: PointerWidth::U64,
3190    tier: Tier::Two,
3191};
3192
3193/// 64-bit MinGW (Windows 10+, Windows Server 2016+)
3194pub(crate) const X86_64_PC_WINDOWS_GNU: Platform = Platform {
3195    target_triple: "x86_64-pc-windows-gnu",
3196    target_arch: Arch::X86_64,
3197    target_os: OS::Windows,
3198    target_env: Env::Gnu,
3199    target_endian: Endian::Little,
3200    target_pointer_width: PointerWidth::U64,
3201    tier: Tier::One,
3202};
3203
3204/// 64-bit x86 MinGW (Windows 10+), LLVM ABI
3205pub(crate) const X86_64_PC_WINDOWS_GNULLVM: Platform = Platform {
3206    target_triple: "x86_64-pc-windows-gnullvm",
3207    target_arch: Arch::X86_64,
3208    target_os: OS::Windows,
3209    target_env: Env::Gnu,
3210    target_endian: Endian::Little,
3211    target_pointer_width: PointerWidth::U64,
3212    tier: Tier::Two,
3213};
3214
3215/// 64-bit MSVC (Windows 10+, Windows Server 2016+)
3216pub(crate) const X86_64_PC_WINDOWS_MSVC: Platform = Platform {
3217    target_triple: "x86_64-pc-windows-msvc",
3218    target_arch: Arch::X86_64,
3219    target_os: OS::Windows,
3220    target_env: Env::Msvc,
3221    target_endian: Endian::Little,
3222    target_pointer_width: PointerWidth::U64,
3223    tier: Tier::One,
3224};
3225
3226/// 64-bit Unikraft with musl 1.2.3
3227pub(crate) const X86_64_UNIKRAFT_LINUX_MUSL: Platform = Platform {
3228    target_triple: "x86_64-unikraft-linux-musl",
3229    target_arch: Arch::X86_64,
3230    target_os: OS::Linux,
3231    target_env: Env::Musl,
3232    target_endian: Endian::Little,
3233    target_pointer_width: PointerWidth::U64,
3234    tier: Tier::Three,
3235};
3236
3237/// 64-bit DragonFlyBSD
3238pub(crate) const X86_64_UNKNOWN_DRAGONFLY: Platform = Platform {
3239    target_triple: "x86_64-unknown-dragonfly",
3240    target_arch: Arch::X86_64,
3241    target_os: OS::Dragonfly,
3242    target_env: Env::None,
3243    target_endian: Endian::Little,
3244    target_pointer_width: PointerWidth::U64,
3245    tier: Tier::Three,
3246};
3247
3248/// 64-bit x86 FreeBSD
3249pub(crate) const X86_64_UNKNOWN_FREEBSD: Platform = Platform {
3250    target_triple: "x86_64-unknown-freebsd",
3251    target_arch: Arch::X86_64,
3252    target_os: OS::FreeBSD,
3253    target_env: Env::None,
3254    target_endian: Endian::Little,
3255    target_pointer_width: PointerWidth::U64,
3256    tier: Tier::Two,
3257};
3258
3259/// 64-bit x86 Fuchsia
3260pub(crate) const X86_64_UNKNOWN_FUCHSIA: Platform = Platform {
3261    target_triple: "x86_64-unknown-fuchsia",
3262    target_arch: Arch::X86_64,
3263    target_os: OS::Fuchsia,
3264    target_env: Env::None,
3265    target_endian: Endian::Little,
3266    target_pointer_width: PointerWidth::U64,
3267    tier: Tier::Two,
3268};
3269
3270/// 64-bit Haiku
3271pub(crate) const X86_64_UNKNOWN_HAIKU: Platform = Platform {
3272    target_triple: "x86_64-unknown-haiku",
3273    target_arch: Arch::X86_64,
3274    target_os: OS::Haiku,
3275    target_env: Env::None,
3276    target_endian: Endian::Little,
3277    target_pointer_width: PointerWidth::U64,
3278    tier: Tier::Three,
3279};
3280
3281/// x86_64 Hermit
3282pub(crate) const X86_64_UNKNOWN_HERMIT: Platform = Platform {
3283    target_triple: "x86_64-unknown-hermit",
3284    target_arch: Arch::X86_64,
3285    target_os: OS::Hermit,
3286    target_env: Env::None,
3287    target_endian: Endian::Little,
3288    target_pointer_width: PointerWidth::U64,
3289    tier: Tier::Three,
3290};
3291
3292/// 64-bit GNU/Hurd
3293pub(crate) const X86_64_UNKNOWN_HURD_GNU: Platform = Platform {
3294    target_triple: "x86_64-unknown-hurd-gnu",
3295    target_arch: Arch::X86_64,
3296    target_os: OS::Hurd,
3297    target_env: Env::Gnu,
3298    target_endian: Endian::Little,
3299    target_pointer_width: PointerWidth::U64,
3300    tier: Tier::Three,
3301};
3302
3303/// illumos
3304pub(crate) const X86_64_UNKNOWN_ILLUMOS: Platform = Platform {
3305    target_triple: "x86_64-unknown-illumos",
3306    target_arch: Arch::X86_64,
3307    target_os: OS::IllumOS,
3308    target_env: Env::None,
3309    target_endian: Endian::Little,
3310    target_pointer_width: PointerWidth::U64,
3311    tier: Tier::Two,
3312};
3313
3314pub(crate) const X86_64_UNKNOWN_L4RE_UCLIBC: Platform = Platform {
3315    target_triple: "x86_64-unknown-l4re-uclibc",
3316    target_arch: Arch::X86_64,
3317    target_os: OS::L4re,
3318    target_env: Env::UClibc,
3319    target_endian: Endian::Little,
3320    target_pointer_width: PointerWidth::U64,
3321    tier: Tier::Three,
3322};
3323
3324/// 64-bit Linux (kernel 3.2+, glibc 2.17+)
3325pub(crate) const X86_64_UNKNOWN_LINUX_GNU: Platform = Platform {
3326    target_triple: "x86_64-unknown-linux-gnu",
3327    target_arch: Arch::X86_64,
3328    target_os: OS::Linux,
3329    target_env: Env::Gnu,
3330    target_endian: Endian::Little,
3331    target_pointer_width: PointerWidth::U64,
3332    tier: Tier::One,
3333};
3334
3335/// 64-bit Linux (x32 ABI) (kernel 4.15+, glibc 2.27)
3336pub(crate) const X86_64_UNKNOWN_LINUX_GNUX32: Platform = Platform {
3337    target_triple: "x86_64-unknown-linux-gnux32",
3338    target_arch: Arch::X86_64,
3339    target_os: OS::Linux,
3340    target_env: Env::Gnu,
3341    target_endian: Endian::Little,
3342    target_pointer_width: PointerWidth::U32,
3343    tier: Tier::Two,
3344};
3345
3346/// 64-bit Linux with musl 1.2.3
3347pub(crate) const X86_64_UNKNOWN_LINUX_MUSL: Platform = Platform {
3348    target_triple: "x86_64-unknown-linux-musl",
3349    target_arch: Arch::X86_64,
3350    target_os: OS::Linux,
3351    target_env: Env::Musl,
3352    target_endian: Endian::Little,
3353    target_pointer_width: PointerWidth::U64,
3354    tier: Tier::Two,
3355};
3356
3357/// 64-bit Linux with no libc
3358pub(crate) const X86_64_UNKNOWN_LINUX_NONE: Platform = Platform {
3359    target_triple: "x86_64-unknown-linux-none",
3360    target_arch: Arch::X86_64,
3361    target_os: OS::Linux,
3362    target_env: Env::None,
3363    target_endian: Endian::Little,
3364    target_pointer_width: PointerWidth::U64,
3365    tier: Tier::Three,
3366};
3367
3368/// x86_64 OpenHarmony
3369pub(crate) const X86_64_UNKNOWN_LINUX_OHOS: Platform = Platform {
3370    target_triple: "x86_64-unknown-linux-ohos",
3371    target_arch: Arch::X86_64,
3372    target_os: OS::Linux,
3373    target_env: Env::OhOS,
3374    target_endian: Endian::Little,
3375    target_pointer_width: PointerWidth::U64,
3376    tier: Tier::Two,
3377};
3378
3379/// x86_64 Managarm
3380pub(crate) const X86_64_UNKNOWN_MANAGARM_MLIBC: Platform = Platform {
3381    target_triple: "x86_64-unknown-managarm-mlibc",
3382    target_arch: Arch::X86_64,
3383    target_os: OS::Managarm,
3384    target_env: Env::Mlibc,
3385    target_endian: Endian::Little,
3386    target_pointer_width: PointerWidth::U64,
3387    tier: Tier::Three,
3388};
3389
3390/// x86_64 Motor OS
3391pub(crate) const X86_64_UNKNOWN_MOTOR: Platform = Platform {
3392    target_triple: "x86_64-unknown-motor",
3393    target_arch: Arch::X86_64,
3394    target_os: OS::Motor,
3395    target_env: Env::None,
3396    target_endian: Endian::Little,
3397    target_pointer_width: PointerWidth::U64,
3398    tier: Tier::Three,
3399};
3400
3401/// NetBSD/amd64
3402pub(crate) const X86_64_UNKNOWN_NETBSD: Platform = Platform {
3403    target_triple: "x86_64-unknown-netbsd",
3404    target_arch: Arch::X86_64,
3405    target_os: OS::NetBSD,
3406    target_env: Env::None,
3407    target_endian: Endian::Little,
3408    target_pointer_width: PointerWidth::U64,
3409    tier: Tier::Two,
3410};
3411
3412/// Freestanding/bare-metal x86_64, softfloat
3413pub(crate) const X86_64_UNKNOWN_NONE: Platform = Platform {
3414    target_triple: "x86_64-unknown-none",
3415    target_arch: Arch::X86_64,
3416    target_os: OS::None,
3417    target_env: Env::None,
3418    target_endian: Endian::Little,
3419    target_pointer_width: PointerWidth::U64,
3420    tier: Tier::Two,
3421};
3422
3423/// 64-bit OpenBSD
3424pub(crate) const X86_64_UNKNOWN_OPENBSD: Platform = Platform {
3425    target_triple: "x86_64-unknown-openbsd",
3426    target_arch: Arch::X86_64,
3427    target_os: OS::OpenBSD,
3428    target_env: Env::None,
3429    target_endian: Endian::Little,
3430    target_pointer_width: PointerWidth::U64,
3431    tier: Tier::Three,
3432};
3433
3434/// Redox OS
3435pub(crate) const X86_64_UNKNOWN_REDOX: Platform = Platform {
3436    target_triple: "x86_64-unknown-redox",
3437    target_arch: Arch::X86_64,
3438    target_os: OS::Redox,
3439    target_env: Env::Relibc,
3440    target_endian: Endian::Little,
3441    target_pointer_width: PointerWidth::U64,
3442    tier: Tier::Two,
3443};
3444
3445pub(crate) const X86_64_UNKNOWN_TRUSTY: Platform = Platform {
3446    target_triple: "x86_64-unknown-trusty",
3447    target_arch: Arch::X86_64,
3448    target_os: OS::Trusty,
3449    target_env: Env::None,
3450    target_endian: Endian::Little,
3451    target_pointer_width: PointerWidth::U64,
3452    tier: Tier::Three,
3453};
3454
3455/// 64-bit UEFI
3456pub(crate) const X86_64_UNKNOWN_UEFI: Platform = Platform {
3457    target_triple: "x86_64-unknown-uefi",
3458    target_arch: Arch::X86_64,
3459    target_os: OS::Uefi,
3460    target_env: Env::None,
3461    target_endian: Endian::Little,
3462    target_pointer_width: PointerWidth::U64,
3463    tier: Tier::Two,
3464};
3465
3466pub(crate) const X86_64_UWP_WINDOWS_GNU: Platform = Platform {
3467    target_triple: "x86_64-uwp-windows-gnu",
3468    target_arch: Arch::X86_64,
3469    target_os: OS::Windows,
3470    target_env: Env::Gnu,
3471    target_endian: Endian::Little,
3472    target_pointer_width: PointerWidth::U64,
3473    tier: Tier::Three,
3474};
3475
3476pub(crate) const X86_64_UWP_WINDOWS_MSVC: Platform = Platform {
3477    target_triple: "x86_64-uwp-windows-msvc",
3478    target_arch: Arch::X86_64,
3479    target_os: OS::Windows,
3480    target_env: Env::Msvc,
3481    target_endian: Endian::Little,
3482    target_pointer_width: PointerWidth::U64,
3483    tier: Tier::Three,
3484};
3485
3486/// 64-bit Windows 7 support
3487pub(crate) const X86_64_WIN7_WINDOWS_GNU: Platform = Platform {
3488    target_triple: "x86_64-win7-windows-gnu",
3489    target_arch: Arch::X86_64,
3490    target_os: OS::Windows,
3491    target_env: Env::Gnu,
3492    target_endian: Endian::Little,
3493    target_pointer_width: PointerWidth::U64,
3494    tier: Tier::Three,
3495};
3496
3497/// 64-bit Windows 7 support
3498pub(crate) const X86_64_WIN7_WINDOWS_MSVC: Platform = Platform {
3499    target_triple: "x86_64-win7-windows-msvc",
3500    target_arch: Arch::X86_64,
3501    target_os: OS::Windows,
3502    target_env: Env::Msvc,
3503    target_endian: Endian::Little,
3504    target_pointer_width: PointerWidth::U64,
3505    tier: Tier::Three,
3506};
3507
3508pub(crate) const X86_64_WRS_VXWORKS: Platform = Platform {
3509    target_triple: "x86_64-wrs-vxworks",
3510    target_arch: Arch::X86_64,
3511    target_os: OS::VxWorks,
3512    target_env: Env::Gnu,
3513    target_endian: Endian::Little,
3514    target_pointer_width: PointerWidth::U64,
3515    tier: Tier::Three,
3516};
3517
3518/// macOS with late-gen Intel (at least Haswell)
3519pub(crate) const X86_64H_APPLE_DARWIN: Platform = Platform {
3520    target_triple: "x86_64h-apple-darwin",
3521    target_arch: Arch::X86_64,
3522    target_os: OS::MacOS,
3523    target_env: Env::None,
3524    target_endian: Endian::Little,
3525    target_pointer_width: PointerWidth::U64,
3526    tier: Tier::Three,
3527};
3528
3529/// Xtensa ESP32
3530pub(crate) const XTENSA_ESP32_ESPIDF: Platform = Platform {
3531    target_triple: "xtensa-esp32-espidf",
3532    target_arch: Arch::Xtensa,
3533    target_os: OS::Espidf,
3534    target_env: Env::Newlib,
3535    target_endian: Endian::Little,
3536    target_pointer_width: PointerWidth::U32,
3537    tier: Tier::Three,
3538};
3539
3540/// Xtensa ESP32
3541pub(crate) const XTENSA_ESP32_NONE_ELF: Platform = Platform {
3542    target_triple: "xtensa-esp32-none-elf",
3543    target_arch: Arch::Xtensa,
3544    target_os: OS::None,
3545    target_env: Env::None,
3546    target_endian: Endian::Little,
3547    target_pointer_width: PointerWidth::U32,
3548    tier: Tier::Three,
3549};
3550
3551/// Xtensa ESP32-S2
3552pub(crate) const XTENSA_ESP32S2_ESPIDF: Platform = Platform {
3553    target_triple: "xtensa-esp32s2-espidf",
3554    target_arch: Arch::Xtensa,
3555    target_os: OS::Espidf,
3556    target_env: Env::Newlib,
3557    target_endian: Endian::Little,
3558    target_pointer_width: PointerWidth::U32,
3559    tier: Tier::Three,
3560};
3561
3562/// Xtensa ESP32-S2
3563pub(crate) const XTENSA_ESP32S2_NONE_ELF: Platform = Platform {
3564    target_triple: "xtensa-esp32s2-none-elf",
3565    target_arch: Arch::Xtensa,
3566    target_os: OS::None,
3567    target_env: Env::None,
3568    target_endian: Endian::Little,
3569    target_pointer_width: PointerWidth::U32,
3570    tier: Tier::Three,
3571};
3572
3573/// Xtensa ESP32-S3
3574pub(crate) const XTENSA_ESP32S3_ESPIDF: Platform = Platform {
3575    target_triple: "xtensa-esp32s3-espidf",
3576    target_arch: Arch::Xtensa,
3577    target_os: OS::Espidf,
3578    target_env: Env::Newlib,
3579    target_endian: Endian::Little,
3580    target_pointer_width: PointerWidth::U32,
3581    tier: Tier::Three,
3582};
3583
3584/// Xtensa ESP32-S3
3585pub(crate) const XTENSA_ESP32S3_NONE_ELF: Platform = Platform {
3586    target_triple: "xtensa-esp32s3-none-elf",
3587    target_arch: Arch::Xtensa,
3588    target_os: OS::None,
3589    target_env: Env::None,
3590    target_endian: Endian::Little,
3591    target_pointer_width: PointerWidth::U32,
3592    tier: Tier::Three,
3593};