revive_llvm_builder/
target_env.rs

1//! The target environments to build LLVM.
2
3/// The list of target environments used as constants.
4#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum TargetEnv {
6    /// The GNU target environment.
7    #[default]
8    GNU,
9    /// The MUSL target environment.
10    MUSL,
11    /// The wasm32 Emscripten environment.
12    Emscripten,
13}
14
15impl std::str::FromStr for TargetEnv {
16    type Err = String;
17
18    fn from_str(value: &str) -> Result<Self, Self::Err> {
19        match value {
20            "gnu" => Ok(Self::GNU),
21            "musl" => Ok(Self::MUSL),
22            "emscripten" => Ok(Self::Emscripten),
23            value => Err(format!("Unsupported target environment: `{value}`")),
24        }
25    }
26}
27
28impl std::fmt::Display for TargetEnv {
29    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30        match self {
31            Self::GNU => write!(f, "gnu"),
32            Self::MUSL => write!(f, "musl"),
33            Self::Emscripten => write!(f, "emscripten"),
34        }
35    }
36}