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