run-make: enable msvc for link-dedup
This commit is contained in:
parent
b389b0ab72
commit
d8c2b767c6
@ -5,20 +5,37 @@
|
|||||||
// Without the --cfg flag, there should be a single -ltesta, no more, no less.
|
// Without the --cfg flag, there should be a single -ltesta, no more, no less.
|
||||||
// See https://github.com/rust-lang/rust/pull/84794
|
// See https://github.com/rust-lang/rust/pull/84794
|
||||||
|
|
||||||
//@ ignore-msvc
|
use std::fmt::Write;
|
||||||
|
|
||||||
use run_make_support::rustc;
|
use run_make_support::{is_msvc, rustc};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
rustc().input("depa.rs").run();
|
rustc().input("depa.rs").run();
|
||||||
rustc().input("depb.rs").run();
|
rustc().input("depb.rs").run();
|
||||||
rustc().input("depc.rs").run();
|
rustc().input("depc.rs").run();
|
||||||
|
|
||||||
let output = rustc().input("empty.rs").cfg("bar").run_fail();
|
let output = rustc().input("empty.rs").cfg("bar").run_fail();
|
||||||
output.assert_stderr_contains(r#""-ltesta" "-ltestb" "-ltesta""#);
|
output.assert_stderr_contains(needle_from_libs(&["testa", "testb", "testa"]));
|
||||||
|
|
||||||
let output = rustc().input("empty.rs").run_fail();
|
let output = rustc().input("empty.rs").run_fail();
|
||||||
output.assert_stderr_contains(r#""-ltesta""#);
|
output.assert_stderr_contains(needle_from_libs(&["testa"]));
|
||||||
let output = rustc().input("empty.rs").run_fail();
|
output.assert_stderr_not_contains(needle_from_libs(&["testb"]));
|
||||||
output.assert_stderr_not_contains(r#""-ltestb""#);
|
output.assert_stderr_not_contains(needle_from_libs(&["testa", "testa", "testa"]));
|
||||||
let output = rustc().input("empty.rs").run_fail();
|
// Adjacent identical native libraries are no longer deduplicated if
|
||||||
output.assert_stderr_not_contains(r#""-ltesta" "-ltesta" "-ltesta""#);
|
// they come from different crates (https://github.com/rust-lang/rust/pull/103311)
|
||||||
|
// so the following will fail:
|
||||||
|
//output.assert_stderr_not_contains(needle_from_libs(&["testa", "testa"]));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn needle_from_libs(libs: &[&str]) -> String {
|
||||||
|
let mut needle = String::new();
|
||||||
|
for lib in libs {
|
||||||
|
if is_msvc() {
|
||||||
|
let _ = needle.write_fmt(format_args!(r#""{lib}.lib" "#));
|
||||||
|
} else {
|
||||||
|
let _ = needle.write_fmt(format_args!(r#""-l{lib}" "#));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
needle.pop(); // remove trailing space
|
||||||
|
needle
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user