lasm/
target.rs

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}