feat: update depot version to 0.12.2 and add support for custom linker and preprocessor flags

This commit is contained in:
2026-03-09 03:24:56 -05:00
parent 6f263aa6a6
commit 242d9a7384
6 changed files with 92 additions and 3 deletions
+40
View File
@@ -156,6 +156,11 @@ fn has_option(configure: &[String], long: &str) -> bool {
false
}
fn has_builtin_option(configure: &[String], key: &str) -> bool {
let prefix = format!("-D{key}=");
configure.iter().any(|arg| arg.starts_with(&prefix))
}
fn meson_setup_args(
flags: &crate::package::BuildFlags,
cross_file: Option<&Path>,
@@ -191,6 +196,14 @@ fn meson_setup_args(
if let Some(cf) = cross_file {
args.push(format!("--cross-file={}", cf.display()));
}
if !flags.ld.trim().is_empty() {
if !has_builtin_option(&flags.configure, "c_ld") {
args.push(format!("-Dc_ld={}", flags.ld));
}
if !has_builtin_option(&flags.configure, "cpp_ld") {
args.push(format!("-Dcpp_ld={}", flags.ld));
}
}
// Append user flags last so they can override defaults when Meson allows it.
for arg in &flags.configure {
@@ -354,6 +367,33 @@ mod tests {
assert!(args.iter().any(|a| a == "--bindir=/usr/bin"));
}
#[test]
fn test_meson_setup_args_include_linker_override() {
let flags = BuildFlags {
ld: "ld.lld".to_string(),
..BuildFlags::default()
};
let args = meson_setup_args(&flags, None, &[]);
assert!(args.iter().any(|a| a == "-Dc_ld=ld.lld"));
assert!(args.iter().any(|a| a == "-Dcpp_ld=ld.lld"));
}
#[test]
fn test_meson_setup_args_honor_explicit_linker_override() {
let flags = BuildFlags {
ld: "ld.lld".to_string(),
configure: vec!["-Dc_ld=gold".to_string(), "-Dcpp_ld=gold".to_string()],
..BuildFlags::default()
};
let args = meson_setup_args(&flags, None, &[]);
assert_eq!(args.iter().filter(|a| *a == "-Dc_ld=gold").count(), 1);
assert_eq!(args.iter().filter(|a| *a == "-Dcpp_ld=gold").count(), 1);
assert!(!args.iter().any(|a| a == "-Dc_ld=ld.lld"));
assert!(!args.iter().any(|a| a == "-Dcpp_ld=ld.lld"));
}
#[test]
fn test_resolve_build_dir_uses_flag() {
let flags = BuildFlags {