Rollup merge of #86113 - the8472:doctest-lld, r=Mark-Simulacrum
build doctests with lld if use-lld = true results when running `./x.py test library/core --doc --stage 0`: ``` # OLD test result: FAILED. 2844 passed; 6 failed; 28 ignored; 0 measured; 0 filtered out; finished in 21.13s # NEW test result: FAILED. 2844 passed; 6 failed; 28 ignored; 0 measured; 0 filtered out; finished in 11.92s ```
This commit is contained in:
commit
f7aea23bd2
@ -41,7 +41,12 @@ fn main() {
|
||||
cmd.arg(arg);
|
||||
}
|
||||
if env::var_os("RUSTDOC_FUSE_LD_LLD").is_some() {
|
||||
cmd.arg("-Clink-args=-fuse-ld=lld");
|
||||
cmd.arg("-Clink-arg=-fuse-ld=lld");
|
||||
if cfg!(windows) {
|
||||
cmd.arg("-Clink-arg=-Wl,/threads:1");
|
||||
} else {
|
||||
cmd.arg("-Clink-arg=-Wl,--threads=1");
|
||||
}
|
||||
}
|
||||
|
||||
// Needed to be able to run all rustdoc tests.
|
||||
|
@ -1142,6 +1142,7 @@ pub fn cargo(
|
||||
}
|
||||
if self.is_fuse_ld_lld(compiler.host) {
|
||||
cargo.env("RUSTC_HOST_FUSE_LD_LLD", "1");
|
||||
cargo.env("RUSTDOC_FUSE_LD_LLD", "1");
|
||||
}
|
||||
|
||||
if let Some(target_linker) = self.linker(target) {
|
||||
@ -1151,6 +1152,9 @@ pub fn cargo(
|
||||
if self.is_fuse_ld_lld(target) {
|
||||
rustflags.arg("-Clink-args=-fuse-ld=lld");
|
||||
}
|
||||
self.lld_flags(target).for_each(|flag| {
|
||||
rustdocflags.arg(&flag);
|
||||
});
|
||||
|
||||
if !(["build", "check", "clippy", "fix", "rustc"].contains(&cmd)) && want_rustdoc {
|
||||
cargo.env("RUSTDOC_LIBDIR", self.rustc_libdir(compiler));
|
||||
|
@ -923,6 +923,21 @@ fn is_fuse_ld_lld(&self, target: TargetSelection) -> bool {
|
||||
self.config.use_lld && !target.contains("msvc")
|
||||
}
|
||||
|
||||
fn lld_flags(&self, target: TargetSelection) -> impl Iterator<Item = String> {
|
||||
let mut options = [None, None];
|
||||
|
||||
if self.config.use_lld {
|
||||
if self.is_fuse_ld_lld(target) {
|
||||
options[0] = Some("-Clink-arg=-fuse-ld=lld".to_string());
|
||||
}
|
||||
|
||||
let threads = if target.contains("windows") { "/threads:1" } else { "--threads=1" };
|
||||
options[1] = Some(format!("-Clink-arg=-Wl,{}", threads));
|
||||
}
|
||||
|
||||
std::array::IntoIter::new(options).flatten()
|
||||
}
|
||||
|
||||
/// Returns if this target should statically link the C runtime, if specified
|
||||
fn crt_static(&self, target: TargetSelection) -> Option<bool> {
|
||||
if target.contains("pc-windows-msvc") {
|
||||
|
@ -1131,19 +1131,6 @@ struct Compiletest {
|
||||
compare_mode: Option<&'static str>,
|
||||
}
|
||||
|
||||
impl Compiletest {
|
||||
fn add_lld_flags(builder: &Builder<'_>, target: TargetSelection, flags: &mut Vec<String>) {
|
||||
if builder.config.use_lld {
|
||||
if builder.is_fuse_ld_lld(target) {
|
||||
flags.push("-Clink-arg=-fuse-ld=lld".to_string());
|
||||
}
|
||||
|
||||
let threads = if target.contains("windows") { "/threads:1" } else { "--threads=1" };
|
||||
flags.push(format!("-Clink-arg=-Wl,{}", threads));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Step for Compiletest {
|
||||
type Output = ();
|
||||
|
||||
@ -1289,12 +1276,12 @@ fn run(self, builder: &Builder<'_>) {
|
||||
|
||||
let mut hostflags = flags.clone();
|
||||
hostflags.push(format!("-Lnative={}", builder.test_helpers_out(compiler.host).display()));
|
||||
Self::add_lld_flags(builder, compiler.host, &mut hostflags);
|
||||
hostflags.extend(builder.lld_flags(compiler.host));
|
||||
cmd.arg("--host-rustcflags").arg(hostflags.join(" "));
|
||||
|
||||
let mut targetflags = flags;
|
||||
targetflags.push(format!("-Lnative={}", builder.test_helpers_out(target).display()));
|
||||
Self::add_lld_flags(builder, target, &mut targetflags);
|
||||
targetflags.extend(builder.lld_flags(target));
|
||||
cmd.arg("--target-rustcflags").arg(targetflags.join(" "));
|
||||
|
||||
cmd.arg("--docck-python").arg(builder.python());
|
||||
|
Loading…
Reference in New Issue
Block a user