Files
revive/crates/llvm-context/src/target_machine/target.rs
T
2024-11-29 15:56:10 +01:00

57 lines
1.2 KiB
Rust

//! The LLVM target.
use std::str::FromStr;
/// The LLVM target.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Target {
/// The PolkaVM target.
PVM,
}
impl Target {
/// Returns the target name.
pub fn name(&self) -> &str {
match self {
Self::PVM => "riscv64",
}
}
/// Returns the target triple.
pub fn triple(&self) -> &str {
match self {
Self::PVM => "riscv64-unknown-unknown-elf",
}
}
/// Returns the target production name.
pub fn production_name(&self) -> &str {
match self {
Self::PVM => "PVM",
}
}
}
impl FromStr for Target {
type Err = anyhow::Error;
fn from_str(string: &str) -> Result<Self, Self::Err> {
match string {
"riscv64" => Ok(Self::PVM),
_ => Err(anyhow::anyhow!(
"Unknown target `{}`. Supported targets: {:?}",
string,
Self::PVM
)),
}
}
}
impl std::fmt::Display for Target {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Target::PVM => write!(f, "riscv64"),
}
}
}