1use target_lexicon::{Architecture, OperatingSystem, Triple};
2
3#[derive(Clone, Debug, PartialEq, Eq, Hash)]
6pub enum Target {
7 Native,
9 X86_64,
11 AArch64,
13}
14
15impl Target {
16 pub fn to_triple(&self) -> Triple {
18 match self {
19 Target::Native => Triple::host(),
20 Target::X86_64 => Triple {
21 architecture: Architecture::X86_64,
22 vendor: target_lexicon::Vendor::Unknown,
23 operating_system: OperatingSystem::Linux,
24 environment: target_lexicon::Environment::Unknown,
25 binary_format: target_lexicon::BinaryFormat::Elf,
26 },
27 Target::AArch64 => Triple {
28 architecture: Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64),
29 vendor: target_lexicon::Vendor::Unknown,
30 operating_system: OperatingSystem::Linux,
31 environment: target_lexicon::Environment::Unknown,
32 binary_format: target_lexicon::BinaryFormat::Elf,
33 },
34 }
35 }
36}
37
38impl Default for Target {
39 fn default() -> Self {
40 Target::Native
41 }
42}