Skip to main content

cup_cli/config/languages/
mod.rs

1mod c;
2mod cuda;
3mod cxx;
4mod hip;
5mod objc;
6mod objcxx;
7
8use std::path::Path;
9
10pub use c::CStandard;
11pub use cuda::CUDAStandard;
12pub use cxx::CXXStandard;
13pub use hip::HIPStandard;
14pub use objc::OBJCStandard;
15pub use objcxx::OBJCXXStandard;
16
17use crate::config::Shelling;
18
19#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
20pub struct LanguageConfig {
21    pub c: Option<CStandard>,
22    pub cxx: Option<CXXStandard>,
23    pub csharp: Option<String>,
24    pub cuda: Option<CUDAStandard>,
25    pub objc: Option<OBJCStandard>,
26    pub objcxx: Option<OBJCXXStandard>,
27    pub fortran: Option<String>,
28    pub hip: Option<HIPStandard>,
29    pub ispc: Option<String>,
30    pub swift: Option<String>,
31    pub asm: Option<String>,
32    pub asm_nasm: Option<String>,
33    pub asm_marmasm: Option<String>,
34    pub asm_masm: Option<String>,
35    pub asm_att: Option<String>,
36}
37
38impl<P: AsRef<Path>> Shelling<Language, P> for LanguageConfig {
39    fn shelling(self, _base: P) -> Language {
40        Language {
41            c: self.c.unwrap_or_default(),
42            cxx: self.cxx.unwrap_or_default(),
43            csharp: self.csharp.is_some(),
44            cuda: self.cuda,
45            objc: self.objc,
46            objcxx: self.objcxx,
47            fortran: self.fortran.is_some(),
48            hip: self.hip,
49            ispc: self.ispc.is_some(),
50            swift: self.swift.is_some(),
51            asm: self.asm.is_some(),
52            asm_nasm: self.asm_nasm.is_some(),
53            asm_marmasm: self.asm_marmasm.is_some(),
54            asm_masm: self.asm_masm.is_some(),
55            asm_att: self.asm_att.is_some(),
56        }
57    }
58}
59
60#[derive(Debug, Clone)]
61pub struct Language {
62    pub c: CStandard,
63    pub cxx: CXXStandard,
64    pub cuda: Option<CUDAStandard>,
65    pub objc: Option<OBJCStandard>,
66    pub objcxx: Option<OBJCXXStandard>,
67    pub hip: Option<HIPStandard>,
68    pub csharp: bool,
69    pub fortran: bool,
70    pub ispc: bool,
71    pub swift: bool,
72    pub asm: bool,
73    pub asm_nasm: bool,
74    pub asm_marmasm: bool,
75    pub asm_masm: bool,
76    pub asm_att: bool,
77}