use camino::Utf8PathBuf;
use cabin_core::{LanguageStandard, OptLevel};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum BuildAction {
Compile(CompileAction),
Archive(ArchiveAction),
Link(LinkAction),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CompileMode {
Object,
SyntaxOnly {
stamp: Utf8PathBuf,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CompileAction {
pub standard: LanguageStandard,
pub source: Utf8PathBuf,
pub object: Utf8PathBuf,
pub mode: CompileMode,
pub implicit_inputs: Vec<Utf8PathBuf>,
pub depfile: Option<Utf8PathBuf>,
pub compiler: Utf8PathBuf,
pub compiler_wrapper: Option<Utf8PathBuf>,
pub arguments: CompileArguments,
pub description: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CompileArguments {
pub opt_level: OptLevel,
pub debug_info: bool,
pub define_ndebug: bool,
pub include_dirs: Vec<Utf8PathBuf>,
pub system_include_dirs: Vec<Utf8PathBuf>,
pub defines: Vec<String>,
pub extra_flags: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ArchiveAction {
pub archiver: Utf8PathBuf,
pub output: Utf8PathBuf,
pub inputs: Vec<Utf8PathBuf>,
pub description: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LinkAction {
pub linker: Utf8PathBuf,
pub output: Utf8PathBuf,
pub inputs: Vec<Utf8PathBuf>,
pub implicit_inputs: Vec<Utf8PathBuf>,
pub arguments: Vec<String>,
pub link_libs: Vec<String>,
pub description: String,
}