use super::{collect_from_prefix, run, BuildOutput, DepBuilder};
use crate::error::Result;
use std::path::Path;
use std::process::Command;
pub struct MesonBuilder;
impl DepBuilder for MesonBuilder {
fn detect(src_dir: &Path) -> bool {
src_dir.join("meson.build").exists()
}
fn name(&self) -> &'static str {
"meson"
}
fn build(&self, src_dir: &Path, prefix: &Path) -> Result<BuildOutput> {
run(Command::new("meson")
.args(["setup", "build"])
.arg(format!("--prefix={}", prefix.display()))
.arg("--buildtype=release")
.current_dir(src_dir))?;
run(Command::new("meson")
.args(["compile", "-C", "build"])
.current_dir(src_dir))?;
run(Command::new("meson")
.args(["install", "-C", "build"])
.current_dir(src_dir))?;
Ok(collect_from_prefix(prefix))
}
}