use std::{collections::HashMap, path::PathBuf};
use serde::Serialize;
#[cfg(not(target_env = "msvc"))]
const MAKEFILE: &str = "Makefile";
#[cfg(target_env = "msvc")]
const MAKEFILE: &str = "Makefile.win";
#[derive(Debug, PartialEq, Clone, Serialize)]
pub struct MakeBuildSpec {
pub makefile: PathBuf,
pub build_target: Option<String>,
pub build_pass: bool,
pub install_target: String,
pub install_pass: bool,
pub build_variables: HashMap<String, String>,
pub install_variables: HashMap<String, String>,
pub variables: HashMap<String, String>,
}
impl Default for MakeBuildSpec {
fn default() -> Self {
Self {
makefile: default_makefile_name(),
build_target: Option::default(),
build_pass: default_pass(),
install_target: default_install_target(),
install_pass: default_pass(),
build_variables: HashMap::default(),
install_variables: HashMap::default(),
variables: HashMap::default(),
}
}
}
fn default_makefile_name() -> PathBuf {
PathBuf::from(MAKEFILE)
}
fn default_pass() -> bool {
true
}
fn default_install_target() -> String {
"install".into()
}