1use target_lexicon::{Architecture, Triple};
2
3pub trait TripleExt {
5 fn is_pulley(&self) -> bool;
8
9 fn pulley_host() -> Self;
11}
12
13impl TripleExt for Triple {
14 fn is_pulley(&self) -> bool {
15 match self.architecture {
16 Architecture::Pulley32 | Architecture::Pulley32be => true,
17 Architecture::Pulley64 | Architecture::Pulley64be => true,
18 _ => false,
19 }
20 }
21
22 fn pulley_host() -> Self {
23 if cfg!(target_endian = "little") {
24 if cfg!(target_pointer_width = "32") {
25 return "pulley32".parse().unwrap();
26 } else if cfg!(target_pointer_width = "64") {
27 return "pulley64".parse().unwrap();
28 }
29 }
30 if cfg!(target_endian = "big") {
31 if cfg!(target_pointer_width = "32") {
32 return "pulley32be".parse().unwrap();
33 } else if cfg!(target_pointer_width = "64") {
34 return "pulley64be".parse().unwrap();
35 }
36 }
37
38 unreachable!()
39 }
40}