1pub use strum::IntoEnumIterator;
2use strum_macros::EnumIter;
3
4#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
5#[derive(EnumIter, Debug, PartialEq, Clone, Copy)]
6pub enum Os {
7 Darwin,
8 Linux,
9 Windows,
10 Freebsd,
11 Illumos,
12 Netbsd,
13 Ios,
14 Android,
15 Fuchsia,
16 None,
17 Uefi,
18 Androideabi,
19 Eabi,
20 Eabihf,
21 Cuda,
22 Solaris,
23 Emscripten,
24 Unknown,
25 Wasip1,
26 Threads,
27 Wasip2,
28 Redox,
29}
30impl Os {
31 pub fn to_str(&self) -> &'static str {
32 match self {
33 Os::Darwin => "darwin",
34 Os::Linux => "linux",
35 Os::Windows => "windows",
36 Os::Freebsd => "freebsd",
37 Os::Illumos => "illumos",
38 Os::Netbsd => "netbsd",
39 Os::Ios => "ios",
40 Os::Android => "android",
41 Os::Fuchsia => "fuchsia",
42 Os::None => "none",
43 Os::Uefi => "uefi",
44 Os::Androideabi => "androideabi",
45 Os::Eabi => "eabi",
46 Os::Eabihf => "eabihf",
47 Os::Cuda => "cuda",
48 Os::Solaris => "solaris",
49 Os::Emscripten => "emscripten",
50 Os::Unknown => "unknown",
51 Os::Wasip1 => "wasip1",
52 Os::Threads => "threads",
53 Os::Wasip2 => "wasip2",
54 Os::Redox => "redox",
55 }
56 }
57}
58impl std::fmt::Display for Os {
59 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
60 f.write_str(self.to_str())
61 }
62}
63impl std::str::FromStr for Os {
64 type Err = &'static str;
65 fn from_str(s: &str) -> Result<Self, Self::Err> {
66 match s {
67 "darwin" => Ok(Os::Darwin),
68 "linux" => Ok(Os::Linux),
69 "windows" => Ok(Os::Windows),
70 "freebsd" => Ok(Os::Freebsd),
71 "illumos" => Ok(Os::Illumos),
72 "netbsd" => Ok(Os::Netbsd),
73 "ios" => Ok(Os::Ios),
74 "android" => Ok(Os::Android),
75 "fuchsia" => Ok(Os::Fuchsia),
76 "none" => Ok(Os::None),
77 "uefi" => Ok(Os::Uefi),
78 "androideabi" => Ok(Os::Androideabi),
79 "eabi" => Ok(Os::Eabi),
80 "eabihf" => Ok(Os::Eabihf),
81 "cuda" => Ok(Os::Cuda),
82 "solaris" => Ok(Os::Solaris),
83 "emscripten" => Ok(Os::Emscripten),
84 "unknown" => Ok(Os::Unknown),
85 "wasip1" => Ok(Os::Wasip1),
86 "threads" => Ok(Os::Threads),
87 "wasip2" => Ok(Os::Wasip2),
88 "redox" => Ok(Os::Redox),
89 _ => Err("Unknown Os"),
90 }
91 }
92}
93#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
94#[derive(EnumIter, Debug, PartialEq, Clone, Copy)]
95pub enum Arch {
96 Aarch64,
97 I686,
98 X86_64,
99 Arm,
100 Armv7,
101 Loongarch64,
102 Powerpc,
103 Powerpc64,
104 Powerpc64le,
105 Riscv64gc,
106 S390x,
107 Arm64ec,
108 Armebv7r,
109 Armv5te,
110 Armv7a,
111 Armv7r,
112 I586,
113 Nvptx64,
114 Riscv32i,
115 Riscv32im,
116 Riscv32imac,
117 Riscv32imafc,
118 Riscv32imc,
119 Riscv64imac,
120 Sparc64,
121 Sparcv9,
122 Thumbv6m,
123 Thumbv7em,
124 Thumbv7m,
125 Thumbv7neon,
126 Thumbv8mBase,
127 Thumbv8mMain,
128 Wasm32,
129 Wasm32v1,
130}
131impl Arch {
132 pub fn to_str(&self) -> &'static str {
133 match self {
134 Arch::Aarch64 => "aarch64",
135 Arch::I686 => "i686",
136 Arch::X86_64 => "x86_64",
137 Arch::Arm => "arm",
138 Arch::Armv7 => "armv7",
139 Arch::Loongarch64 => "loongarch64",
140 Arch::Powerpc => "powerpc",
141 Arch::Powerpc64 => "powerpc64",
142 Arch::Powerpc64le => "powerpc64le",
143 Arch::Riscv64gc => "riscv64gc",
144 Arch::S390x => "s390x",
145 Arch::Arm64ec => "arm64ec",
146 Arch::Armebv7r => "armebv7r",
147 Arch::Armv5te => "armv5te",
148 Arch::Armv7a => "armv7a",
149 Arch::Armv7r => "armv7r",
150 Arch::I586 => "i586",
151 Arch::Nvptx64 => "nvptx64",
152 Arch::Riscv32i => "riscv32i",
153 Arch::Riscv32im => "riscv32im",
154 Arch::Riscv32imac => "riscv32imac",
155 Arch::Riscv32imafc => "riscv32imafc",
156 Arch::Riscv32imc => "riscv32imc",
157 Arch::Riscv64imac => "riscv64imac",
158 Arch::Sparc64 => "sparc64",
159 Arch::Sparcv9 => "sparcv9",
160 Arch::Thumbv6m => "thumbv6m",
161 Arch::Thumbv7em => "thumbv7em",
162 Arch::Thumbv7m => "thumbv7m",
163 Arch::Thumbv7neon => "thumbv7neon",
164 Arch::Thumbv8mBase => "thumbv8m.base",
165 Arch::Thumbv8mMain => "thumbv8m.main",
166 Arch::Wasm32 => "wasm32",
167 Arch::Wasm32v1 => "wasm32v1",
168 }
169 }
170}
171impl std::fmt::Display for Arch {
172 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
173 f.write_str(self.to_str())
174 }
175}
176impl std::str::FromStr for Arch {
177 type Err = &'static str;
178 fn from_str(s: &str) -> Result<Self, Self::Err> {
179 match s {
180 "aarch64" => Ok(Arch::Aarch64),
181 "i686" => Ok(Arch::I686),
182 "x86_64" => Ok(Arch::X86_64),
183 "arm" => Ok(Arch::Arm),
184 "armv7" => Ok(Arch::Armv7),
185 "loongarch64" => Ok(Arch::Loongarch64),
186 "powerpc" => Ok(Arch::Powerpc),
187 "powerpc64" => Ok(Arch::Powerpc64),
188 "powerpc64le" => Ok(Arch::Powerpc64le),
189 "riscv64gc" => Ok(Arch::Riscv64gc),
190 "s390x" => Ok(Arch::S390x),
191 "arm64ec" => Ok(Arch::Arm64ec),
192 "armebv7r" => Ok(Arch::Armebv7r),
193 "armv5te" => Ok(Arch::Armv5te),
194 "armv7a" => Ok(Arch::Armv7a),
195 "armv7r" => Ok(Arch::Armv7r),
196 "i586" => Ok(Arch::I586),
197 "nvptx64" => Ok(Arch::Nvptx64),
198 "riscv32i" => Ok(Arch::Riscv32i),
199 "riscv32im" => Ok(Arch::Riscv32im),
200 "riscv32imac" => Ok(Arch::Riscv32imac),
201 "riscv32imafc" => Ok(Arch::Riscv32imafc),
202 "riscv32imc" => Ok(Arch::Riscv32imc),
203 "riscv64imac" => Ok(Arch::Riscv64imac),
204 "sparc64" => Ok(Arch::Sparc64),
205 "sparcv9" => Ok(Arch::Sparcv9),
206 "thumbv6m" => Ok(Arch::Thumbv6m),
207 "thumbv7em" => Ok(Arch::Thumbv7em),
208 "thumbv7m" => Ok(Arch::Thumbv7m),
209 "thumbv7neon" => Ok(Arch::Thumbv7neon),
210 "thumbv8m.base" => Ok(Arch::Thumbv8mBase),
211 "thumbv8m.main" => Ok(Arch::Thumbv8mMain),
212 "wasm32" => Ok(Arch::Wasm32),
213 "wasm32v1" => Ok(Arch::Wasm32v1),
214 _ => Err("Unknown Arch"),
215 }
216 }
217}
218#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
219#[derive(EnumIter, Debug, PartialEq, Clone, Copy)]
220pub enum Vendor {
221 Apple,
222 Unknown,
223 Pc,
224 Linux,
225 None,
226 Nvidia,
227 Sun,
228 Wasip1,
229 Wasip2,
230 Fortanix,
231}
232impl Vendor {
233 pub fn to_str(&self) -> &'static str {
234 match self {
235 Vendor::Apple => "apple",
236 Vendor::Unknown => "unknown",
237 Vendor::Pc => "pc",
238 Vendor::Linux => "linux",
239 Vendor::None => "none",
240 Vendor::Nvidia => "nvidia",
241 Vendor::Sun => "sun",
242 Vendor::Wasip1 => "wasip1",
243 Vendor::Wasip2 => "wasip2",
244 Vendor::Fortanix => "fortanix",
245 }
246 }
247}
248impl std::fmt::Display for Vendor {
249 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
250 f.write_str(self.to_str())
251 }
252}
253impl std::str::FromStr for Vendor {
254 type Err = &'static str;
255 fn from_str(s: &str) -> Result<Self, Self::Err> {
256 match s {
257 "apple" => Ok(Vendor::Apple),
258 "unknown" => Ok(Vendor::Unknown),
259 "pc" => Ok(Vendor::Pc),
260 "linux" => Ok(Vendor::Linux),
261 "none" => Ok(Vendor::None),
262 "nvidia" => Ok(Vendor::Nvidia),
263 "sun" => Ok(Vendor::Sun),
264 "wasip1" => Ok(Vendor::Wasip1),
265 "wasip2" => Ok(Vendor::Wasip2),
266 "fortanix" => Ok(Vendor::Fortanix),
267 _ => Err("Unknown Vendor"),
268 }
269 }
270}
271#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
272#[derive(EnumIter, Debug, PartialEq, Clone, Copy)]
273pub enum Abi {
274 Gnu,
275 Msvc,
276 Musl,
277 Gnueabi,
278 Gnueabihf,
279 Macabi,
280 Sim,
281 Gnullvm,
282 Ohos,
283 Softfloat,
284 Musleabi,
285 Musleabihf,
286 Elf,
287 Sgx,
288 Gnux32,
289}
290impl Abi {
291 pub fn to_str(&self) -> &'static str {
292 match self {
293 Abi::Gnu => "gnu",
294 Abi::Msvc => "msvc",
295 Abi::Musl => "musl",
296 Abi::Gnueabi => "gnueabi",
297 Abi::Gnueabihf => "gnueabihf",
298 Abi::Macabi => "macabi",
299 Abi::Sim => "sim",
300 Abi::Gnullvm => "gnullvm",
301 Abi::Ohos => "ohos",
302 Abi::Softfloat => "softfloat",
303 Abi::Musleabi => "musleabi",
304 Abi::Musleabihf => "musleabihf",
305 Abi::Elf => "elf",
306 Abi::Sgx => "sgx",
307 Abi::Gnux32 => "gnux32",
308 }
309 }
310}
311impl std::fmt::Display for Abi {
312 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
313 f.write_str(self.to_str())
314 }
315}
316impl std::str::FromStr for Abi {
317 type Err = &'static str;
318 fn from_str(s: &str) -> Result<Self, Self::Err> {
319 match s {
320 "gnu" => Ok(Abi::Gnu),
321 "msvc" => Ok(Abi::Msvc),
322 "musl" => Ok(Abi::Musl),
323 "gnueabi" => Ok(Abi::Gnueabi),
324 "gnueabihf" => Ok(Abi::Gnueabihf),
325 "macabi" => Ok(Abi::Macabi),
326 "sim" => Ok(Abi::Sim),
327 "gnullvm" => Ok(Abi::Gnullvm),
328 "ohos" => Ok(Abi::Ohos),
329 "softfloat" => Ok(Abi::Softfloat),
330 "musleabi" => Ok(Abi::Musleabi),
331 "musleabihf" => Ok(Abi::Musleabihf),
332 "elf" => Ok(Abi::Elf),
333 "sgx" => Ok(Abi::Sgx),
334 "gnux32" => Ok(Abi::Gnux32),
335 _ => Err("Unknown Abi"),
336 }
337 }
338}
339#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
340#[derive(EnumIter, Debug, PartialEq, Clone, Copy)]
341pub enum Target {
342 Aarch64AppleDarwin,
343 Aarch64UnknownLinuxGnu,
344 I686PcWindowsGnu,
345 I686PcWindowsMsvc,
346 I686UnknownLinuxGnu,
347 X86_64AppleDarwin,
348 X86_64PcWindowsGnu,
349 X86_64PcWindowsMsvc,
350 X86_64UnknownLinuxGnu,
351 Aarch64PcWindowsMsvc,
352 Aarch64UnknownLinuxMusl,
353 ArmUnknownLinuxGnueabi,
354 ArmUnknownLinuxGnueabihf,
355 Armv7UnknownLinuxGnueabihf,
356 Loongarch64UnknownLinuxGnu,
357 Loongarch64UnknownLinuxMusl,
358 PowerpcUnknownLinuxGnu,
359 Powerpc64UnknownLinuxGnu,
360 Powerpc64leUnknownLinuxGnu,
361 Powerpc64leUnknownLinuxMusl,
362 Riscv64gcUnknownLinuxGnu,
363 Riscv64gcUnknownLinuxMusl,
364 S390xUnknownLinuxGnu,
365 X86_64UnknownFreebsd,
366 X86_64UnknownIllumos,
367 X86_64UnknownLinuxMusl,
368 X86_64UnknownNetbsd,
369 Aarch64AppleIos,
370 Aarch64AppleIosMacabi,
371 Aarch64AppleIosSim,
372 Aarch64LinuxAndroid,
373 Aarch64PcWindowsGnullvm,
374 Aarch64UnknownFuchsia,
375 Aarch64UnknownLinuxOhos,
376 Aarch64UnknownNone,
377 Aarch64UnknownNoneSoftfloat,
378 Aarch64UnknownUefi,
379 ArmLinuxAndroideabi,
380 ArmUnknownLinuxMusleabi,
381 ArmUnknownLinuxMusleabihf,
382 Arm64ecPcWindowsMsvc,
383 Armebv7rNoneEabi,
384 Armebv7rNoneEabihf,
385 Armv5teUnknownLinuxGnueabi,
386 Armv5teUnknownLinuxMusleabi,
387 Armv7LinuxAndroideabi,
388 Armv7UnknownLinuxGnueabi,
389 Armv7UnknownLinuxMusleabi,
390 Armv7UnknownLinuxMusleabihf,
391 Armv7UnknownLinuxOhos,
392 Armv7aNoneEabi,
393 Armv7rNoneEabi,
394 Armv7rNoneEabihf,
395 I586PcWindowsMsvc,
396 I586UnknownLinuxGnu,
397 I586UnknownLinuxMusl,
398 I686LinuxAndroid,
399 I686PcWindowsGnullvm,
400 I686UnknownFreebsd,
401 I686UnknownLinuxMusl,
402 I686UnknownUefi,
403 Loongarch64UnknownNone,
404 Loongarch64UnknownNoneSoftfloat,
405 Nvptx64NvidiaCuda,
406 Riscv32iUnknownNoneElf,
407 Riscv32imUnknownNoneElf,
408 Riscv32imacUnknownNoneElf,
409 Riscv32imafcUnknownNoneElf,
410 Riscv32imcUnknownNoneElf,
411 Riscv64gcUnknownNoneElf,
412 Riscv64imacUnknownNoneElf,
413 Sparc64UnknownLinuxGnu,
414 Sparcv9SunSolaris,
415 Thumbv6mNoneEabi,
416 Thumbv7emNoneEabi,
417 Thumbv7emNoneEabihf,
418 Thumbv7mNoneEabi,
419 Thumbv7neonLinuxAndroideabi,
420 Thumbv7neonUnknownLinuxGnueabihf,
421 Thumbv8mBaseNoneEabi,
422 Thumbv8mMainNoneEabi,
423 Thumbv8mMainNoneEabihf,
424 Wasm32UnknownEmscripten,
425 Wasm32UnknownUnknown,
426 Wasm32Wasip1,
427 Wasm32Wasip1Threads,
428 Wasm32Wasip2,
429 Wasm32v1None,
430 X86_64AppleIos,
431 X86_64AppleIosMacabi,
432 X86_64FortanixUnknownSgx,
433 X86_64LinuxAndroid,
434 X86_64PcSolaris,
435 X86_64PcWindowsGnullvm,
436 X86_64UnknownFuchsia,
437 X86_64UnknownLinuxGnux32,
438 X86_64UnknownLinuxOhos,
439 X86_64UnknownNone,
440 X86_64UnknownRedox,
441 X86_64UnknownUefi,
442}
443impl Target {
444 pub fn to_str(&self) -> &'static str {
445 match self {
446 Target::Aarch64AppleDarwin => "aarch64-apple-darwin",
447 Target::Aarch64UnknownLinuxGnu => "aarch64-unknown-linux-gnu",
448 Target::I686PcWindowsGnu => "i686-pc-windows-gnu",
449 Target::I686PcWindowsMsvc => "i686-pc-windows-msvc",
450 Target::I686UnknownLinuxGnu => "i686-unknown-linux-gnu",
451 Target::X86_64AppleDarwin => "x86_64-apple-darwin",
452 Target::X86_64PcWindowsGnu => "x86_64-pc-windows-gnu",
453 Target::X86_64PcWindowsMsvc => "x86_64-pc-windows-msvc",
454 Target::X86_64UnknownLinuxGnu => "x86_64-unknown-linux-gnu",
455 Target::Aarch64PcWindowsMsvc => "aarch64-pc-windows-msvc",
456 Target::Aarch64UnknownLinuxMusl => "aarch64-unknown-linux-musl",
457 Target::ArmUnknownLinuxGnueabi => "arm-unknown-linux-gnueabi",
458 Target::ArmUnknownLinuxGnueabihf => "arm-unknown-linux-gnueabihf",
459 Target::Armv7UnknownLinuxGnueabihf => "armv7-unknown-linux-gnueabihf",
460 Target::Loongarch64UnknownLinuxGnu => "loongarch64-unknown-linux-gnu",
461 Target::Loongarch64UnknownLinuxMusl => "loongarch64-unknown-linux-musl",
462 Target::PowerpcUnknownLinuxGnu => "powerpc-unknown-linux-gnu",
463 Target::Powerpc64UnknownLinuxGnu => "powerpc64-unknown-linux-gnu",
464 Target::Powerpc64leUnknownLinuxGnu => "powerpc64le-unknown-linux-gnu",
465 Target::Powerpc64leUnknownLinuxMusl => "powerpc64le-unknown-linux-musl",
466 Target::Riscv64gcUnknownLinuxGnu => "riscv64gc-unknown-linux-gnu",
467 Target::Riscv64gcUnknownLinuxMusl => "riscv64gc-unknown-linux-musl",
468 Target::S390xUnknownLinuxGnu => "s390x-unknown-linux-gnu",
469 Target::X86_64UnknownFreebsd => "x86_64-unknown-freebsd",
470 Target::X86_64UnknownIllumos => "x86_64-unknown-illumos",
471 Target::X86_64UnknownLinuxMusl => "x86_64-unknown-linux-musl",
472 Target::X86_64UnknownNetbsd => "x86_64-unknown-netbsd",
473 Target::Aarch64AppleIos => "aarch64-apple-ios",
474 Target::Aarch64AppleIosMacabi => "aarch64-apple-ios-macabi",
475 Target::Aarch64AppleIosSim => "aarch64-apple-ios-sim",
476 Target::Aarch64LinuxAndroid => "aarch64-linux-android",
477 Target::Aarch64PcWindowsGnullvm => "aarch64-pc-windows-gnullvm",
478 Target::Aarch64UnknownFuchsia => "aarch64-unknown-fuchsia",
479 Target::Aarch64UnknownLinuxOhos => "aarch64-unknown-linux-ohos",
480 Target::Aarch64UnknownNone => "aarch64-unknown-none",
481 Target::Aarch64UnknownNoneSoftfloat => "aarch64-unknown-none-softfloat",
482 Target::Aarch64UnknownUefi => "aarch64-unknown-uefi",
483 Target::ArmLinuxAndroideabi => "arm-linux-androideabi",
484 Target::ArmUnknownLinuxMusleabi => "arm-unknown-linux-musleabi",
485 Target::ArmUnknownLinuxMusleabihf => "arm-unknown-linux-musleabihf",
486 Target::Arm64ecPcWindowsMsvc => "arm64ec-pc-windows-msvc",
487 Target::Armebv7rNoneEabi => "armebv7r-none-eabi",
488 Target::Armebv7rNoneEabihf => "armebv7r-none-eabihf",
489 Target::Armv5teUnknownLinuxGnueabi => "armv5te-unknown-linux-gnueabi",
490 Target::Armv5teUnknownLinuxMusleabi => "armv5te-unknown-linux-musleabi",
491 Target::Armv7LinuxAndroideabi => "armv7-linux-androideabi",
492 Target::Armv7UnknownLinuxGnueabi => "armv7-unknown-linux-gnueabi",
493 Target::Armv7UnknownLinuxMusleabi => "armv7-unknown-linux-musleabi",
494 Target::Armv7UnknownLinuxMusleabihf => "armv7-unknown-linux-musleabihf",
495 Target::Armv7UnknownLinuxOhos => "armv7-unknown-linux-ohos",
496 Target::Armv7aNoneEabi => "armv7a-none-eabi",
497 Target::Armv7rNoneEabi => "armv7r-none-eabi",
498 Target::Armv7rNoneEabihf => "armv7r-none-eabihf",
499 Target::I586PcWindowsMsvc => "i586-pc-windows-msvc",
500 Target::I586UnknownLinuxGnu => "i586-unknown-linux-gnu",
501 Target::I586UnknownLinuxMusl => "i586-unknown-linux-musl",
502 Target::I686LinuxAndroid => "i686-linux-android",
503 Target::I686PcWindowsGnullvm => "i686-pc-windows-gnullvm",
504 Target::I686UnknownFreebsd => "i686-unknown-freebsd",
505 Target::I686UnknownLinuxMusl => "i686-unknown-linux-musl",
506 Target::I686UnknownUefi => "i686-unknown-uefi",
507 Target::Loongarch64UnknownNone => "loongarch64-unknown-none",
508 Target::Loongarch64UnknownNoneSoftfloat => "loongarch64-unknown-none-softfloat",
509 Target::Nvptx64NvidiaCuda => "nvptx64-nvidia-cuda",
510 Target::Riscv32iUnknownNoneElf => "riscv32i-unknown-none-elf",
511 Target::Riscv32imUnknownNoneElf => "riscv32im-unknown-none-elf",
512 Target::Riscv32imacUnknownNoneElf => "riscv32imac-unknown-none-elf",
513 Target::Riscv32imafcUnknownNoneElf => "riscv32imafc-unknown-none-elf",
514 Target::Riscv32imcUnknownNoneElf => "riscv32imc-unknown-none-elf",
515 Target::Riscv64gcUnknownNoneElf => "riscv64gc-unknown-none-elf",
516 Target::Riscv64imacUnknownNoneElf => "riscv64imac-unknown-none-elf",
517 Target::Sparc64UnknownLinuxGnu => "sparc64-unknown-linux-gnu",
518 Target::Sparcv9SunSolaris => "sparcv9-sun-solaris",
519 Target::Thumbv6mNoneEabi => "thumbv6m-none-eabi",
520 Target::Thumbv7emNoneEabi => "thumbv7em-none-eabi",
521 Target::Thumbv7emNoneEabihf => "thumbv7em-none-eabihf",
522 Target::Thumbv7mNoneEabi => "thumbv7m-none-eabi",
523 Target::Thumbv7neonLinuxAndroideabi => "thumbv7neon-linux-androideabi",
524 Target::Thumbv7neonUnknownLinuxGnueabihf => "thumbv7neon-unknown-linux-gnueabihf",
525 Target::Thumbv8mBaseNoneEabi => "thumbv8m.base-none-eabi",
526 Target::Thumbv8mMainNoneEabi => "thumbv8m.main-none-eabi",
527 Target::Thumbv8mMainNoneEabihf => "thumbv8m.main-none-eabihf",
528 Target::Wasm32UnknownEmscripten => "wasm32-unknown-emscripten",
529 Target::Wasm32UnknownUnknown => "wasm32-unknown-unknown",
530 Target::Wasm32Wasip1 => "wasm32-wasip1",
531 Target::Wasm32Wasip1Threads => "wasm32-wasip1-threads",
532 Target::Wasm32Wasip2 => "wasm32-wasip2",
533 Target::Wasm32v1None => "wasm32v1-none",
534 Target::X86_64AppleIos => "x86_64-apple-ios",
535 Target::X86_64AppleIosMacabi => "x86_64-apple-ios-macabi",
536 Target::X86_64FortanixUnknownSgx => "x86_64-fortanix-unknown-sgx",
537 Target::X86_64LinuxAndroid => "x86_64-linux-android",
538 Target::X86_64PcSolaris => "x86_64-pc-solaris",
539 Target::X86_64PcWindowsGnullvm => "x86_64-pc-windows-gnullvm",
540 Target::X86_64UnknownFuchsia => "x86_64-unknown-fuchsia",
541 Target::X86_64UnknownLinuxGnux32 => "x86_64-unknown-linux-gnux32",
542 Target::X86_64UnknownLinuxOhos => "x86_64-unknown-linux-ohos",
543 Target::X86_64UnknownNone => "x86_64-unknown-none",
544 Target::X86_64UnknownRedox => "x86_64-unknown-redox",
545 Target::X86_64UnknownUefi => "x86_64-unknown-uefi",
546 }
547 }
548}
549impl std::fmt::Display for Target {
550 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
551 f.write_str(self.to_str())
552 }
553}
554impl std::str::FromStr for Target {
555 type Err = &'static str;
556 fn from_str(s: &str) -> Result<Self, Self::Err> {
557 match s {
558 "aarch64-apple-darwin" => Ok(Target::Aarch64AppleDarwin),
559 "aarch64-unknown-linux-gnu" => Ok(Target::Aarch64UnknownLinuxGnu),
560 "i686-pc-windows-gnu" => Ok(Target::I686PcWindowsGnu),
561 "i686-pc-windows-msvc" => Ok(Target::I686PcWindowsMsvc),
562 "i686-unknown-linux-gnu" => Ok(Target::I686UnknownLinuxGnu),
563 "x86_64-apple-darwin" => Ok(Target::X86_64AppleDarwin),
564 "x86_64-pc-windows-gnu" => Ok(Target::X86_64PcWindowsGnu),
565 "x86_64-pc-windows-msvc" => Ok(Target::X86_64PcWindowsMsvc),
566 "x86_64-unknown-linux-gnu" => Ok(Target::X86_64UnknownLinuxGnu),
567 "aarch64-pc-windows-msvc" => Ok(Target::Aarch64PcWindowsMsvc),
568 "aarch64-unknown-linux-musl" => Ok(Target::Aarch64UnknownLinuxMusl),
569 "arm-unknown-linux-gnueabi" => Ok(Target::ArmUnknownLinuxGnueabi),
570 "arm-unknown-linux-gnueabihf" => Ok(Target::ArmUnknownLinuxGnueabihf),
571 "armv7-unknown-linux-gnueabihf" => Ok(Target::Armv7UnknownLinuxGnueabihf),
572 "loongarch64-unknown-linux-gnu" => Ok(Target::Loongarch64UnknownLinuxGnu),
573 "loongarch64-unknown-linux-musl" => Ok(Target::Loongarch64UnknownLinuxMusl),
574 "powerpc-unknown-linux-gnu" => Ok(Target::PowerpcUnknownLinuxGnu),
575 "powerpc64-unknown-linux-gnu" => Ok(Target::Powerpc64UnknownLinuxGnu),
576 "powerpc64le-unknown-linux-gnu" => Ok(Target::Powerpc64leUnknownLinuxGnu),
577 "powerpc64le-unknown-linux-musl" => Ok(Target::Powerpc64leUnknownLinuxMusl),
578 "riscv64gc-unknown-linux-gnu" => Ok(Target::Riscv64gcUnknownLinuxGnu),
579 "riscv64gc-unknown-linux-musl" => Ok(Target::Riscv64gcUnknownLinuxMusl),
580 "s390x-unknown-linux-gnu" => Ok(Target::S390xUnknownLinuxGnu),
581 "x86_64-unknown-freebsd" => Ok(Target::X86_64UnknownFreebsd),
582 "x86_64-unknown-illumos" => Ok(Target::X86_64UnknownIllumos),
583 "x86_64-unknown-linux-musl" => Ok(Target::X86_64UnknownLinuxMusl),
584 "x86_64-unknown-netbsd" => Ok(Target::X86_64UnknownNetbsd),
585 "aarch64-apple-ios" => Ok(Target::Aarch64AppleIos),
586 "aarch64-apple-ios-macabi" => Ok(Target::Aarch64AppleIosMacabi),
587 "aarch64-apple-ios-sim" => Ok(Target::Aarch64AppleIosSim),
588 "aarch64-linux-android" => Ok(Target::Aarch64LinuxAndroid),
589 "aarch64-pc-windows-gnullvm" => Ok(Target::Aarch64PcWindowsGnullvm),
590 "aarch64-unknown-fuchsia" => Ok(Target::Aarch64UnknownFuchsia),
591 "aarch64-unknown-linux-ohos" => Ok(Target::Aarch64UnknownLinuxOhos),
592 "aarch64-unknown-none" => Ok(Target::Aarch64UnknownNone),
593 "aarch64-unknown-none-softfloat" => Ok(Target::Aarch64UnknownNoneSoftfloat),
594 "aarch64-unknown-uefi" => Ok(Target::Aarch64UnknownUefi),
595 "arm-linux-androideabi" => Ok(Target::ArmLinuxAndroideabi),
596 "arm-unknown-linux-musleabi" => Ok(Target::ArmUnknownLinuxMusleabi),
597 "arm-unknown-linux-musleabihf" => Ok(Target::ArmUnknownLinuxMusleabihf),
598 "arm64ec-pc-windows-msvc" => Ok(Target::Arm64ecPcWindowsMsvc),
599 "armebv7r-none-eabi" => Ok(Target::Armebv7rNoneEabi),
600 "armebv7r-none-eabihf" => Ok(Target::Armebv7rNoneEabihf),
601 "armv5te-unknown-linux-gnueabi" => Ok(Target::Armv5teUnknownLinuxGnueabi),
602 "armv5te-unknown-linux-musleabi" => Ok(Target::Armv5teUnknownLinuxMusleabi),
603 "armv7-linux-androideabi" => Ok(Target::Armv7LinuxAndroideabi),
604 "armv7-unknown-linux-gnueabi" => Ok(Target::Armv7UnknownLinuxGnueabi),
605 "armv7-unknown-linux-musleabi" => Ok(Target::Armv7UnknownLinuxMusleabi),
606 "armv7-unknown-linux-musleabihf" => Ok(Target::Armv7UnknownLinuxMusleabihf),
607 "armv7-unknown-linux-ohos" => Ok(Target::Armv7UnknownLinuxOhos),
608 "armv7a-none-eabi" => Ok(Target::Armv7aNoneEabi),
609 "armv7r-none-eabi" => Ok(Target::Armv7rNoneEabi),
610 "armv7r-none-eabihf" => Ok(Target::Armv7rNoneEabihf),
611 "i586-pc-windows-msvc" => Ok(Target::I586PcWindowsMsvc),
612 "i586-unknown-linux-gnu" => Ok(Target::I586UnknownLinuxGnu),
613 "i586-unknown-linux-musl" => Ok(Target::I586UnknownLinuxMusl),
614 "i686-linux-android" => Ok(Target::I686LinuxAndroid),
615 "i686-pc-windows-gnullvm" => Ok(Target::I686PcWindowsGnullvm),
616 "i686-unknown-freebsd" => Ok(Target::I686UnknownFreebsd),
617 "i686-unknown-linux-musl" => Ok(Target::I686UnknownLinuxMusl),
618 "i686-unknown-uefi" => Ok(Target::I686UnknownUefi),
619 "loongarch64-unknown-none" => Ok(Target::Loongarch64UnknownNone),
620 "loongarch64-unknown-none-softfloat" => Ok(Target::Loongarch64UnknownNoneSoftfloat),
621 "nvptx64-nvidia-cuda" => Ok(Target::Nvptx64NvidiaCuda),
622 "riscv32i-unknown-none-elf" => Ok(Target::Riscv32iUnknownNoneElf),
623 "riscv32im-unknown-none-elf" => Ok(Target::Riscv32imUnknownNoneElf),
624 "riscv32imac-unknown-none-elf" => Ok(Target::Riscv32imacUnknownNoneElf),
625 "riscv32imafc-unknown-none-elf" => Ok(Target::Riscv32imafcUnknownNoneElf),
626 "riscv32imc-unknown-none-elf" => Ok(Target::Riscv32imcUnknownNoneElf),
627 "riscv64gc-unknown-none-elf" => Ok(Target::Riscv64gcUnknownNoneElf),
628 "riscv64imac-unknown-none-elf" => Ok(Target::Riscv64imacUnknownNoneElf),
629 "sparc64-unknown-linux-gnu" => Ok(Target::Sparc64UnknownLinuxGnu),
630 "sparcv9-sun-solaris" => Ok(Target::Sparcv9SunSolaris),
631 "thumbv6m-none-eabi" => Ok(Target::Thumbv6mNoneEabi),
632 "thumbv7em-none-eabi" => Ok(Target::Thumbv7emNoneEabi),
633 "thumbv7em-none-eabihf" => Ok(Target::Thumbv7emNoneEabihf),
634 "thumbv7m-none-eabi" => Ok(Target::Thumbv7mNoneEabi),
635 "thumbv7neon-linux-androideabi" => Ok(Target::Thumbv7neonLinuxAndroideabi),
636 "thumbv7neon-unknown-linux-gnueabihf" => Ok(Target::Thumbv7neonUnknownLinuxGnueabihf),
637 "thumbv8m.base-none-eabi" => Ok(Target::Thumbv8mBaseNoneEabi),
638 "thumbv8m.main-none-eabi" => Ok(Target::Thumbv8mMainNoneEabi),
639 "thumbv8m.main-none-eabihf" => Ok(Target::Thumbv8mMainNoneEabihf),
640 "wasm32-unknown-emscripten" => Ok(Target::Wasm32UnknownEmscripten),
641 "wasm32-unknown-unknown" => Ok(Target::Wasm32UnknownUnknown),
642 "wasm32-wasip1" => Ok(Target::Wasm32Wasip1),
643 "wasm32-wasip1-threads" => Ok(Target::Wasm32Wasip1Threads),
644 "wasm32-wasip2" => Ok(Target::Wasm32Wasip2),
645 "wasm32v1-none" => Ok(Target::Wasm32v1None),
646 "x86_64-apple-ios" => Ok(Target::X86_64AppleIos),
647 "x86_64-apple-ios-macabi" => Ok(Target::X86_64AppleIosMacabi),
648 "x86_64-fortanix-unknown-sgx" => Ok(Target::X86_64FortanixUnknownSgx),
649 "x86_64-linux-android" => Ok(Target::X86_64LinuxAndroid),
650 "x86_64-pc-solaris" => Ok(Target::X86_64PcSolaris),
651 "x86_64-pc-windows-gnullvm" => Ok(Target::X86_64PcWindowsGnullvm),
652 "x86_64-unknown-fuchsia" => Ok(Target::X86_64UnknownFuchsia),
653 "x86_64-unknown-linux-gnux32" => Ok(Target::X86_64UnknownLinuxGnux32),
654 "x86_64-unknown-linux-ohos" => Ok(Target::X86_64UnknownLinuxOhos),
655 "x86_64-unknown-none" => Ok(Target::X86_64UnknownNone),
656 "x86_64-unknown-redox" => Ok(Target::X86_64UnknownRedox),
657 "x86_64-unknown-uefi" => Ok(Target::X86_64UnknownUefi),
658 _ => Err("Unknown Target"),
659 }
660 }
661}
662impl Target {
663 pub fn arch(&self) -> Arch {
664 match self {
665 Target::Aarch64AppleDarwin => Arch::Aarch64,
666 Target::Aarch64UnknownLinuxGnu => Arch::Aarch64,
667 Target::I686PcWindowsGnu => Arch::I686,
668 Target::I686PcWindowsMsvc => Arch::I686,
669 Target::I686UnknownLinuxGnu => Arch::I686,
670 Target::X86_64AppleDarwin => Arch::X86_64,
671 Target::X86_64PcWindowsGnu => Arch::X86_64,
672 Target::X86_64PcWindowsMsvc => Arch::X86_64,
673 Target::X86_64UnknownLinuxGnu => Arch::X86_64,
674 Target::Aarch64PcWindowsMsvc => Arch::Aarch64,
675 Target::Aarch64UnknownLinuxMusl => Arch::Aarch64,
676 Target::ArmUnknownLinuxGnueabi => Arch::Arm,
677 Target::ArmUnknownLinuxGnueabihf => Arch::Arm,
678 Target::Armv7UnknownLinuxGnueabihf => Arch::Armv7,
679 Target::Loongarch64UnknownLinuxGnu => Arch::Loongarch64,
680 Target::Loongarch64UnknownLinuxMusl => Arch::Loongarch64,
681 Target::PowerpcUnknownLinuxGnu => Arch::Powerpc,
682 Target::Powerpc64UnknownLinuxGnu => Arch::Powerpc64,
683 Target::Powerpc64leUnknownLinuxGnu => Arch::Powerpc64le,
684 Target::Powerpc64leUnknownLinuxMusl => Arch::Powerpc64le,
685 Target::Riscv64gcUnknownLinuxGnu => Arch::Riscv64gc,
686 Target::Riscv64gcUnknownLinuxMusl => Arch::Riscv64gc,
687 Target::S390xUnknownLinuxGnu => Arch::S390x,
688 Target::X86_64UnknownFreebsd => Arch::X86_64,
689 Target::X86_64UnknownIllumos => Arch::X86_64,
690 Target::X86_64UnknownLinuxMusl => Arch::X86_64,
691 Target::X86_64UnknownNetbsd => Arch::X86_64,
692 Target::Aarch64AppleIos => Arch::Aarch64,
693 Target::Aarch64AppleIosMacabi => Arch::Aarch64,
694 Target::Aarch64AppleIosSim => Arch::Aarch64,
695 Target::Aarch64LinuxAndroid => Arch::Aarch64,
696 Target::Aarch64PcWindowsGnullvm => Arch::Aarch64,
697 Target::Aarch64UnknownFuchsia => Arch::Aarch64,
698 Target::Aarch64UnknownLinuxOhos => Arch::Aarch64,
699 Target::Aarch64UnknownNone => Arch::Aarch64,
700 Target::Aarch64UnknownNoneSoftfloat => Arch::Aarch64,
701 Target::Aarch64UnknownUefi => Arch::Aarch64,
702 Target::ArmLinuxAndroideabi => Arch::Arm,
703 Target::ArmUnknownLinuxMusleabi => Arch::Arm,
704 Target::ArmUnknownLinuxMusleabihf => Arch::Arm,
705 Target::Arm64ecPcWindowsMsvc => Arch::Arm64ec,
706 Target::Armebv7rNoneEabi => Arch::Armebv7r,
707 Target::Armebv7rNoneEabihf => Arch::Armebv7r,
708 Target::Armv5teUnknownLinuxGnueabi => Arch::Armv5te,
709 Target::Armv5teUnknownLinuxMusleabi => Arch::Armv5te,
710 Target::Armv7LinuxAndroideabi => Arch::Armv7,
711 Target::Armv7UnknownLinuxGnueabi => Arch::Armv7,
712 Target::Armv7UnknownLinuxMusleabi => Arch::Armv7,
713 Target::Armv7UnknownLinuxMusleabihf => Arch::Armv7,
714 Target::Armv7UnknownLinuxOhos => Arch::Armv7,
715 Target::Armv7aNoneEabi => Arch::Armv7a,
716 Target::Armv7rNoneEabi => Arch::Armv7r,
717 Target::Armv7rNoneEabihf => Arch::Armv7r,
718 Target::I586PcWindowsMsvc => Arch::I586,
719 Target::I586UnknownLinuxGnu => Arch::I586,
720 Target::I586UnknownLinuxMusl => Arch::I586,
721 Target::I686LinuxAndroid => Arch::I686,
722 Target::I686PcWindowsGnullvm => Arch::I686,
723 Target::I686UnknownFreebsd => Arch::I686,
724 Target::I686UnknownLinuxMusl => Arch::I686,
725 Target::I686UnknownUefi => Arch::I686,
726 Target::Loongarch64UnknownNone => Arch::Loongarch64,
727 Target::Loongarch64UnknownNoneSoftfloat => Arch::Loongarch64,
728 Target::Nvptx64NvidiaCuda => Arch::Nvptx64,
729 Target::Riscv32iUnknownNoneElf => Arch::Riscv32i,
730 Target::Riscv32imUnknownNoneElf => Arch::Riscv32im,
731 Target::Riscv32imacUnknownNoneElf => Arch::Riscv32imac,
732 Target::Riscv32imafcUnknownNoneElf => Arch::Riscv32imafc,
733 Target::Riscv32imcUnknownNoneElf => Arch::Riscv32imc,
734 Target::Riscv64gcUnknownNoneElf => Arch::Riscv64gc,
735 Target::Riscv64imacUnknownNoneElf => Arch::Riscv64imac,
736 Target::Sparc64UnknownLinuxGnu => Arch::Sparc64,
737 Target::Sparcv9SunSolaris => Arch::Sparcv9,
738 Target::Thumbv6mNoneEabi => Arch::Thumbv6m,
739 Target::Thumbv7emNoneEabi => Arch::Thumbv7em,
740 Target::Thumbv7emNoneEabihf => Arch::Thumbv7em,
741 Target::Thumbv7mNoneEabi => Arch::Thumbv7m,
742 Target::Thumbv7neonLinuxAndroideabi => Arch::Thumbv7neon,
743 Target::Thumbv7neonUnknownLinuxGnueabihf => Arch::Thumbv7neon,
744 Target::Thumbv8mBaseNoneEabi => Arch::Thumbv8mBase,
745 Target::Thumbv8mMainNoneEabi => Arch::Thumbv8mMain,
746 Target::Thumbv8mMainNoneEabihf => Arch::Thumbv8mMain,
747 Target::Wasm32UnknownEmscripten => Arch::Wasm32,
748 Target::Wasm32UnknownUnknown => Arch::Wasm32,
749 Target::Wasm32Wasip1 => Arch::Wasm32,
750 Target::Wasm32Wasip1Threads => Arch::Wasm32,
751 Target::Wasm32Wasip2 => Arch::Wasm32,
752 Target::Wasm32v1None => Arch::Wasm32v1,
753 Target::X86_64AppleIos => Arch::X86_64,
754 Target::X86_64AppleIosMacabi => Arch::X86_64,
755 Target::X86_64FortanixUnknownSgx => Arch::X86_64,
756 Target::X86_64LinuxAndroid => Arch::X86_64,
757 Target::X86_64PcSolaris => Arch::X86_64,
758 Target::X86_64PcWindowsGnullvm => Arch::X86_64,
759 Target::X86_64UnknownFuchsia => Arch::X86_64,
760 Target::X86_64UnknownLinuxGnux32 => Arch::X86_64,
761 Target::X86_64UnknownLinuxOhos => Arch::X86_64,
762 Target::X86_64UnknownNone => Arch::X86_64,
763 Target::X86_64UnknownRedox => Arch::X86_64,
764 Target::X86_64UnknownUefi => Arch::X86_64,
765 }
766 }
767 pub fn vender(&self) -> Vendor {
768 match self {
769 Target::Aarch64AppleDarwin => Vendor::Apple,
770 Target::Aarch64UnknownLinuxGnu => Vendor::Unknown,
771 Target::I686PcWindowsGnu => Vendor::Pc,
772 Target::I686PcWindowsMsvc => Vendor::Pc,
773 Target::I686UnknownLinuxGnu => Vendor::Unknown,
774 Target::X86_64AppleDarwin => Vendor::Apple,
775 Target::X86_64PcWindowsGnu => Vendor::Pc,
776 Target::X86_64PcWindowsMsvc => Vendor::Pc,
777 Target::X86_64UnknownLinuxGnu => Vendor::Unknown,
778 Target::Aarch64PcWindowsMsvc => Vendor::Pc,
779 Target::Aarch64UnknownLinuxMusl => Vendor::Unknown,
780 Target::ArmUnknownLinuxGnueabi => Vendor::Unknown,
781 Target::ArmUnknownLinuxGnueabihf => Vendor::Unknown,
782 Target::Armv7UnknownLinuxGnueabihf => Vendor::Unknown,
783 Target::Loongarch64UnknownLinuxGnu => Vendor::Unknown,
784 Target::Loongarch64UnknownLinuxMusl => Vendor::Unknown,
785 Target::PowerpcUnknownLinuxGnu => Vendor::Unknown,
786 Target::Powerpc64UnknownLinuxGnu => Vendor::Unknown,
787 Target::Powerpc64leUnknownLinuxGnu => Vendor::Unknown,
788 Target::Powerpc64leUnknownLinuxMusl => Vendor::Unknown,
789 Target::Riscv64gcUnknownLinuxGnu => Vendor::Unknown,
790 Target::Riscv64gcUnknownLinuxMusl => Vendor::Unknown,
791 Target::S390xUnknownLinuxGnu => Vendor::Unknown,
792 Target::X86_64UnknownFreebsd => Vendor::Unknown,
793 Target::X86_64UnknownIllumos => Vendor::Unknown,
794 Target::X86_64UnknownLinuxMusl => Vendor::Unknown,
795 Target::X86_64UnknownNetbsd => Vendor::Unknown,
796 Target::Aarch64AppleIos => Vendor::Apple,
797 Target::Aarch64AppleIosMacabi => Vendor::Apple,
798 Target::Aarch64AppleIosSim => Vendor::Apple,
799 Target::Aarch64LinuxAndroid => Vendor::Linux,
800 Target::Aarch64PcWindowsGnullvm => Vendor::Pc,
801 Target::Aarch64UnknownFuchsia => Vendor::Unknown,
802 Target::Aarch64UnknownLinuxOhos => Vendor::Unknown,
803 Target::Aarch64UnknownNone => Vendor::Unknown,
804 Target::Aarch64UnknownNoneSoftfloat => Vendor::Unknown,
805 Target::Aarch64UnknownUefi => Vendor::Unknown,
806 Target::ArmLinuxAndroideabi => Vendor::Linux,
807 Target::ArmUnknownLinuxMusleabi => Vendor::Unknown,
808 Target::ArmUnknownLinuxMusleabihf => Vendor::Unknown,
809 Target::Arm64ecPcWindowsMsvc => Vendor::Pc,
810 Target::Armebv7rNoneEabi => Vendor::None,
811 Target::Armebv7rNoneEabihf => Vendor::None,
812 Target::Armv5teUnknownLinuxGnueabi => Vendor::Unknown,
813 Target::Armv5teUnknownLinuxMusleabi => Vendor::Unknown,
814 Target::Armv7LinuxAndroideabi => Vendor::Linux,
815 Target::Armv7UnknownLinuxGnueabi => Vendor::Unknown,
816 Target::Armv7UnknownLinuxMusleabi => Vendor::Unknown,
817 Target::Armv7UnknownLinuxMusleabihf => Vendor::Unknown,
818 Target::Armv7UnknownLinuxOhos => Vendor::Unknown,
819 Target::Armv7aNoneEabi => Vendor::None,
820 Target::Armv7rNoneEabi => Vendor::None,
821 Target::Armv7rNoneEabihf => Vendor::None,
822 Target::I586PcWindowsMsvc => Vendor::Pc,
823 Target::I586UnknownLinuxGnu => Vendor::Unknown,
824 Target::I586UnknownLinuxMusl => Vendor::Unknown,
825 Target::I686LinuxAndroid => Vendor::Linux,
826 Target::I686PcWindowsGnullvm => Vendor::Pc,
827 Target::I686UnknownFreebsd => Vendor::Unknown,
828 Target::I686UnknownLinuxMusl => Vendor::Unknown,
829 Target::I686UnknownUefi => Vendor::Unknown,
830 Target::Loongarch64UnknownNone => Vendor::Unknown,
831 Target::Loongarch64UnknownNoneSoftfloat => Vendor::Unknown,
832 Target::Nvptx64NvidiaCuda => Vendor::Nvidia,
833 Target::Riscv32iUnknownNoneElf => Vendor::Unknown,
834 Target::Riscv32imUnknownNoneElf => Vendor::Unknown,
835 Target::Riscv32imacUnknownNoneElf => Vendor::Unknown,
836 Target::Riscv32imafcUnknownNoneElf => Vendor::Unknown,
837 Target::Riscv32imcUnknownNoneElf => Vendor::Unknown,
838 Target::Riscv64gcUnknownNoneElf => Vendor::Unknown,
839 Target::Riscv64imacUnknownNoneElf => Vendor::Unknown,
840 Target::Sparc64UnknownLinuxGnu => Vendor::Unknown,
841 Target::Sparcv9SunSolaris => Vendor::Sun,
842 Target::Thumbv6mNoneEabi => Vendor::None,
843 Target::Thumbv7emNoneEabi => Vendor::None,
844 Target::Thumbv7emNoneEabihf => Vendor::None,
845 Target::Thumbv7mNoneEabi => Vendor::None,
846 Target::Thumbv7neonLinuxAndroideabi => Vendor::Linux,
847 Target::Thumbv7neonUnknownLinuxGnueabihf => Vendor::Unknown,
848 Target::Thumbv8mBaseNoneEabi => Vendor::None,
849 Target::Thumbv8mMainNoneEabi => Vendor::None,
850 Target::Thumbv8mMainNoneEabihf => Vendor::None,
851 Target::Wasm32UnknownEmscripten => Vendor::Unknown,
852 Target::Wasm32UnknownUnknown => Vendor::Unknown,
853 Target::Wasm32Wasip1 => Vendor::Wasip1,
854 Target::Wasm32Wasip1Threads => Vendor::Wasip1,
855 Target::Wasm32Wasip2 => Vendor::Wasip2,
856 Target::Wasm32v1None => Vendor::None,
857 Target::X86_64AppleIos => Vendor::Apple,
858 Target::X86_64AppleIosMacabi => Vendor::Apple,
859 Target::X86_64FortanixUnknownSgx => Vendor::Fortanix,
860 Target::X86_64LinuxAndroid => Vendor::Linux,
861 Target::X86_64PcSolaris => Vendor::Pc,
862 Target::X86_64PcWindowsGnullvm => Vendor::Pc,
863 Target::X86_64UnknownFuchsia => Vendor::Unknown,
864 Target::X86_64UnknownLinuxGnux32 => Vendor::Unknown,
865 Target::X86_64UnknownLinuxOhos => Vendor::Unknown,
866 Target::X86_64UnknownNone => Vendor::Unknown,
867 Target::X86_64UnknownRedox => Vendor::Unknown,
868 Target::X86_64UnknownUefi => Vendor::Unknown,
869 }
870 }
871 pub fn os(&self) -> Os {
872 match self {
873 Target::Aarch64AppleDarwin => Os::Darwin,
874 Target::Aarch64UnknownLinuxGnu => Os::Linux,
875 Target::I686PcWindowsGnu => Os::Windows,
876 Target::I686PcWindowsMsvc => Os::Windows,
877 Target::I686UnknownLinuxGnu => Os::Linux,
878 Target::X86_64AppleDarwin => Os::Darwin,
879 Target::X86_64PcWindowsGnu => Os::Windows,
880 Target::X86_64PcWindowsMsvc => Os::Windows,
881 Target::X86_64UnknownLinuxGnu => Os::Linux,
882 Target::Aarch64PcWindowsMsvc => Os::Windows,
883 Target::Aarch64UnknownLinuxMusl => Os::Linux,
884 Target::ArmUnknownLinuxGnueabi => Os::Linux,
885 Target::ArmUnknownLinuxGnueabihf => Os::Linux,
886 Target::Armv7UnknownLinuxGnueabihf => Os::Linux,
887 Target::Loongarch64UnknownLinuxGnu => Os::Linux,
888 Target::Loongarch64UnknownLinuxMusl => Os::Linux,
889 Target::PowerpcUnknownLinuxGnu => Os::Linux,
890 Target::Powerpc64UnknownLinuxGnu => Os::Linux,
891 Target::Powerpc64leUnknownLinuxGnu => Os::Linux,
892 Target::Powerpc64leUnknownLinuxMusl => Os::Linux,
893 Target::Riscv64gcUnknownLinuxGnu => Os::Linux,
894 Target::Riscv64gcUnknownLinuxMusl => Os::Linux,
895 Target::S390xUnknownLinuxGnu => Os::Linux,
896 Target::X86_64UnknownFreebsd => Os::Freebsd,
897 Target::X86_64UnknownIllumos => Os::Illumos,
898 Target::X86_64UnknownLinuxMusl => Os::Linux,
899 Target::X86_64UnknownNetbsd => Os::Netbsd,
900 Target::Aarch64AppleIos => Os::Ios,
901 Target::Aarch64AppleIosMacabi => Os::Ios,
902 Target::Aarch64AppleIosSim => Os::Ios,
903 Target::Aarch64LinuxAndroid => Os::Android,
904 Target::Aarch64PcWindowsGnullvm => Os::Windows,
905 Target::Aarch64UnknownFuchsia => Os::Fuchsia,
906 Target::Aarch64UnknownLinuxOhos => Os::Linux,
907 Target::Aarch64UnknownNone => Os::None,
908 Target::Aarch64UnknownNoneSoftfloat => Os::None,
909 Target::Aarch64UnknownUefi => Os::Uefi,
910 Target::ArmLinuxAndroideabi => Os::Androideabi,
911 Target::ArmUnknownLinuxMusleabi => Os::Linux,
912 Target::ArmUnknownLinuxMusleabihf => Os::Linux,
913 Target::Arm64ecPcWindowsMsvc => Os::Windows,
914 Target::Armebv7rNoneEabi => Os::Eabi,
915 Target::Armebv7rNoneEabihf => Os::Eabihf,
916 Target::Armv5teUnknownLinuxGnueabi => Os::Linux,
917 Target::Armv5teUnknownLinuxMusleabi => Os::Linux,
918 Target::Armv7LinuxAndroideabi => Os::Androideabi,
919 Target::Armv7UnknownLinuxGnueabi => Os::Linux,
920 Target::Armv7UnknownLinuxMusleabi => Os::Linux,
921 Target::Armv7UnknownLinuxMusleabihf => Os::Linux,
922 Target::Armv7UnknownLinuxOhos => Os::Linux,
923 Target::Armv7aNoneEabi => Os::Eabi,
924 Target::Armv7rNoneEabi => Os::Eabi,
925 Target::Armv7rNoneEabihf => Os::Eabihf,
926 Target::I586PcWindowsMsvc => Os::Windows,
927 Target::I586UnknownLinuxGnu => Os::Linux,
928 Target::I586UnknownLinuxMusl => Os::Linux,
929 Target::I686LinuxAndroid => Os::Android,
930 Target::I686PcWindowsGnullvm => Os::Windows,
931 Target::I686UnknownFreebsd => Os::Freebsd,
932 Target::I686UnknownLinuxMusl => Os::Linux,
933 Target::I686UnknownUefi => Os::Uefi,
934 Target::Loongarch64UnknownNone => Os::None,
935 Target::Loongarch64UnknownNoneSoftfloat => Os::None,
936 Target::Nvptx64NvidiaCuda => Os::Cuda,
937 Target::Riscv32iUnknownNoneElf => Os::None,
938 Target::Riscv32imUnknownNoneElf => Os::None,
939 Target::Riscv32imacUnknownNoneElf => Os::None,
940 Target::Riscv32imafcUnknownNoneElf => Os::None,
941 Target::Riscv32imcUnknownNoneElf => Os::None,
942 Target::Riscv64gcUnknownNoneElf => Os::None,
943 Target::Riscv64imacUnknownNoneElf => Os::None,
944 Target::Sparc64UnknownLinuxGnu => Os::Linux,
945 Target::Sparcv9SunSolaris => Os::Solaris,
946 Target::Thumbv6mNoneEabi => Os::Eabi,
947 Target::Thumbv7emNoneEabi => Os::Eabi,
948 Target::Thumbv7emNoneEabihf => Os::Eabihf,
949 Target::Thumbv7mNoneEabi => Os::Eabi,
950 Target::Thumbv7neonLinuxAndroideabi => Os::Androideabi,
951 Target::Thumbv7neonUnknownLinuxGnueabihf => Os::Linux,
952 Target::Thumbv8mBaseNoneEabi => Os::Eabi,
953 Target::Thumbv8mMainNoneEabi => Os::Eabi,
954 Target::Thumbv8mMainNoneEabihf => Os::Eabihf,
955 Target::Wasm32UnknownEmscripten => Os::Emscripten,
956 Target::Wasm32UnknownUnknown => Os::Unknown,
957 Target::Wasm32Wasip1 => Os::Wasip1,
958 Target::Wasm32Wasip1Threads => Os::Threads,
959 Target::Wasm32Wasip2 => Os::Wasip2,
960 Target::Wasm32v1None => Os::None,
961 Target::X86_64AppleIos => Os::Ios,
962 Target::X86_64AppleIosMacabi => Os::Ios,
963 Target::X86_64FortanixUnknownSgx => Os::Unknown,
964 Target::X86_64LinuxAndroid => Os::Android,
965 Target::X86_64PcSolaris => Os::Solaris,
966 Target::X86_64PcWindowsGnullvm => Os::Windows,
967 Target::X86_64UnknownFuchsia => Os::Fuchsia,
968 Target::X86_64UnknownLinuxGnux32 => Os::Linux,
969 Target::X86_64UnknownLinuxOhos => Os::Linux,
970 Target::X86_64UnknownNone => Os::None,
971 Target::X86_64UnknownRedox => Os::Redox,
972 Target::X86_64UnknownUefi => Os::Uefi,
973 }
974 }
975 pub fn abi(&self) -> Option<Abi> {
976 match self {
977 Target::Aarch64AppleDarwin => None,
978 Target::Aarch64UnknownLinuxGnu => Some(Abi::Gnu),
979 Target::I686PcWindowsGnu => Some(Abi::Gnu),
980 Target::I686PcWindowsMsvc => Some(Abi::Msvc),
981 Target::I686UnknownLinuxGnu => Some(Abi::Gnu),
982 Target::X86_64AppleDarwin => None,
983 Target::X86_64PcWindowsGnu => Some(Abi::Gnu),
984 Target::X86_64PcWindowsMsvc => Some(Abi::Msvc),
985 Target::X86_64UnknownLinuxGnu => Some(Abi::Gnu),
986 Target::Aarch64PcWindowsMsvc => Some(Abi::Msvc),
987 Target::Aarch64UnknownLinuxMusl => Some(Abi::Musl),
988 Target::ArmUnknownLinuxGnueabi => Some(Abi::Gnueabi),
989 Target::ArmUnknownLinuxGnueabihf => Some(Abi::Gnueabihf),
990 Target::Armv7UnknownLinuxGnueabihf => Some(Abi::Gnueabihf),
991 Target::Loongarch64UnknownLinuxGnu => Some(Abi::Gnu),
992 Target::Loongarch64UnknownLinuxMusl => Some(Abi::Musl),
993 Target::PowerpcUnknownLinuxGnu => Some(Abi::Gnu),
994 Target::Powerpc64UnknownLinuxGnu => Some(Abi::Gnu),
995 Target::Powerpc64leUnknownLinuxGnu => Some(Abi::Gnu),
996 Target::Powerpc64leUnknownLinuxMusl => Some(Abi::Musl),
997 Target::Riscv64gcUnknownLinuxGnu => Some(Abi::Gnu),
998 Target::Riscv64gcUnknownLinuxMusl => Some(Abi::Musl),
999 Target::S390xUnknownLinuxGnu => Some(Abi::Gnu),
1000 Target::X86_64UnknownFreebsd => None,
1001 Target::X86_64UnknownIllumos => None,
1002 Target::X86_64UnknownLinuxMusl => Some(Abi::Musl),
1003 Target::X86_64UnknownNetbsd => None,
1004 Target::Aarch64AppleIos => None,
1005 Target::Aarch64AppleIosMacabi => Some(Abi::Macabi),
1006 Target::Aarch64AppleIosSim => Some(Abi::Sim),
1007 Target::Aarch64LinuxAndroid => None,
1008 Target::Aarch64PcWindowsGnullvm => Some(Abi::Gnullvm),
1009 Target::Aarch64UnknownFuchsia => None,
1010 Target::Aarch64UnknownLinuxOhos => Some(Abi::Ohos),
1011 Target::Aarch64UnknownNone => None,
1012 Target::Aarch64UnknownNoneSoftfloat => Some(Abi::Softfloat),
1013 Target::Aarch64UnknownUefi => None,
1014 Target::ArmLinuxAndroideabi => None,
1015 Target::ArmUnknownLinuxMusleabi => Some(Abi::Musleabi),
1016 Target::ArmUnknownLinuxMusleabihf => Some(Abi::Musleabihf),
1017 Target::Arm64ecPcWindowsMsvc => Some(Abi::Msvc),
1018 Target::Armebv7rNoneEabi => None,
1019 Target::Armebv7rNoneEabihf => None,
1020 Target::Armv5teUnknownLinuxGnueabi => Some(Abi::Gnueabi),
1021 Target::Armv5teUnknownLinuxMusleabi => Some(Abi::Musleabi),
1022 Target::Armv7LinuxAndroideabi => None,
1023 Target::Armv7UnknownLinuxGnueabi => Some(Abi::Gnueabi),
1024 Target::Armv7UnknownLinuxMusleabi => Some(Abi::Musleabi),
1025 Target::Armv7UnknownLinuxMusleabihf => Some(Abi::Musleabihf),
1026 Target::Armv7UnknownLinuxOhos => Some(Abi::Ohos),
1027 Target::Armv7aNoneEabi => None,
1028 Target::Armv7rNoneEabi => None,
1029 Target::Armv7rNoneEabihf => None,
1030 Target::I586PcWindowsMsvc => Some(Abi::Msvc),
1031 Target::I586UnknownLinuxGnu => Some(Abi::Gnu),
1032 Target::I586UnknownLinuxMusl => Some(Abi::Musl),
1033 Target::I686LinuxAndroid => None,
1034 Target::I686PcWindowsGnullvm => Some(Abi::Gnullvm),
1035 Target::I686UnknownFreebsd => None,
1036 Target::I686UnknownLinuxMusl => Some(Abi::Musl),
1037 Target::I686UnknownUefi => None,
1038 Target::Loongarch64UnknownNone => None,
1039 Target::Loongarch64UnknownNoneSoftfloat => Some(Abi::Softfloat),
1040 Target::Nvptx64NvidiaCuda => None,
1041 Target::Riscv32iUnknownNoneElf => Some(Abi::Elf),
1042 Target::Riscv32imUnknownNoneElf => Some(Abi::Elf),
1043 Target::Riscv32imacUnknownNoneElf => Some(Abi::Elf),
1044 Target::Riscv32imafcUnknownNoneElf => Some(Abi::Elf),
1045 Target::Riscv32imcUnknownNoneElf => Some(Abi::Elf),
1046 Target::Riscv64gcUnknownNoneElf => Some(Abi::Elf),
1047 Target::Riscv64imacUnknownNoneElf => Some(Abi::Elf),
1048 Target::Sparc64UnknownLinuxGnu => Some(Abi::Gnu),
1049 Target::Sparcv9SunSolaris => None,
1050 Target::Thumbv6mNoneEabi => None,
1051 Target::Thumbv7emNoneEabi => None,
1052 Target::Thumbv7emNoneEabihf => None,
1053 Target::Thumbv7mNoneEabi => None,
1054 Target::Thumbv7neonLinuxAndroideabi => None,
1055 Target::Thumbv7neonUnknownLinuxGnueabihf => Some(Abi::Gnueabihf),
1056 Target::Thumbv8mBaseNoneEabi => None,
1057 Target::Thumbv8mMainNoneEabi => None,
1058 Target::Thumbv8mMainNoneEabihf => None,
1059 Target::Wasm32UnknownEmscripten => None,
1060 Target::Wasm32UnknownUnknown => None,
1061 Target::Wasm32Wasip1 => None,
1062 Target::Wasm32Wasip1Threads => None,
1063 Target::Wasm32Wasip2 => None,
1064 Target::Wasm32v1None => None,
1065 Target::X86_64AppleIos => None,
1066 Target::X86_64AppleIosMacabi => Some(Abi::Macabi),
1067 Target::X86_64FortanixUnknownSgx => Some(Abi::Sgx),
1068 Target::X86_64LinuxAndroid => None,
1069 Target::X86_64PcSolaris => None,
1070 Target::X86_64PcWindowsGnullvm => Some(Abi::Gnullvm),
1071 Target::X86_64UnknownFuchsia => None,
1072 Target::X86_64UnknownLinuxGnux32 => Some(Abi::Gnux32),
1073 Target::X86_64UnknownLinuxOhos => Some(Abi::Ohos),
1074 Target::X86_64UnknownNone => None,
1075 Target::X86_64UnknownRedox => None,
1076 Target::X86_64UnknownUefi => None,
1077 }
1078 }
1079}