Skip to content

Commit e5038f3

Browse files
committed
Unify passing of flags to rustdoc
1 parent a04d56b commit e5038f3

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

src/bootstrap/src/bin/rustdoc.rs

-10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
//! See comments in `src/bootstrap/rustc.rs` for more information.
44
55
use std::env;
6-
use std::ffi::OsString;
76
use std::path::PathBuf;
87
use std::process::Command;
98

@@ -52,15 +51,6 @@ fn main() {
5251
if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() {
5352
cmd.arg("-Z").arg("force-unstable-if-unmarked");
5453
}
55-
if let Some(linker) = env::var_os("RUSTDOC_LINKER") {
56-
let mut arg = OsString::from("-Clinker=");
57-
arg.push(&linker);
58-
cmd.arg(arg);
59-
}
60-
if let Ok(no_threads) = env::var("RUSTDOC_LLD_NO_THREADS") {
61-
cmd.arg("-Clink-arg=-fuse-ld=lld");
62-
cmd.arg(format!("-Clink-arg=-Wl,{no_threads}"));
63-
}
6454
// Cargo doesn't pass RUSTDOCFLAGS to proc_macros:
6555
// https://github.com/rust-lang/cargo/issues/4423
6656
// Thus, if we are on stage 0, we explicitly set `--cfg=bootstrap`.

src/bootstrap/src/core/build_steps/test.rs

+3-10
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::utils;
2929
use crate::utils::cache::{Interned, INTERNER};
3030
use crate::utils::exec::BootstrapCommand;
3131
use crate::utils::helpers::{
32-
self, add_link_lib_path, dylib_path, dylib_path_var, output, t,
32+
self, add_link_lib_path, add_rustdoc_lld_flags, dylib_path, dylib_path_var, output, t,
3333
target_supports_cranelift_backend, up_to_date,
3434
};
3535
use crate::utils::render_tests::{add_flags_and_try_run_tests, try_run_tests};
@@ -862,15 +862,8 @@ impl Step for RustdocTheme {
862862
.env("CFG_RELEASE_CHANNEL", &builder.config.channel)
863863
.env("RUSTDOC_REAL", builder.rustdoc(self.compiler))
864864
.env("RUSTC_BOOTSTRAP", "1");
865-
if let Some(linker) = builder.linker(self.compiler.host) {
866-
cmd.env("RUSTDOC_LINKER", linker);
867-
}
868-
if builder.is_fuse_ld_lld(self.compiler.host) {
869-
cmd.env(
870-
"RUSTDOC_LLD_NO_THREADS",
871-
helpers::lld_flag_no_threads(self.compiler.host.contains("windows")),
872-
);
873-
}
865+
add_rustdoc_lld_flags(&mut cmd, builder, self.compiler.host, true);
866+
874867
builder.run_delaying_failure(&mut cmd);
875868
}
876869
}

src/bootstrap/src/core/builder.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ use crate::core::build_steps::{check, clean, compile, dist, doc, install, run, s
1818
use crate::core::config::flags::{Color, Subcommand};
1919
use crate::core::config::{DryRun, SplitDebuginfo, TargetSelection};
2020
use crate::utils::cache::{Cache, Interned, INTERNER};
21-
use crate::utils::helpers::{self, add_dylib_path, add_link_lib_path, exe, libdir, output, t};
21+
use crate::utils::helpers::{
22+
self, add_dylib_path, add_link_lib_path, add_rustdoc_lld_flags, exe, libdir, output, t,
23+
};
2224
use crate::Crate;
2325
use crate::EXTRA_CHECK_CFGS;
2426
use crate::{Build, CLang, DocTests, GitRepo, Mode};
@@ -1173,9 +1175,7 @@ impl<'a> Builder<'a> {
11731175
cmd.env_remove("MAKEFLAGS");
11741176
cmd.env_remove("MFLAGS");
11751177

1176-
if let Some(linker) = self.linker(compiler.host) {
1177-
cmd.env("RUSTDOC_LINKER", linker);
1178-
}
1178+
add_rustdoc_lld_flags(&mut cmd, self, compiler.host, false);
11791179
cmd
11801180
}
11811181

src/bootstrap/src/utils/helpers.rs

+19
Original file line numberDiff line numberDiff line change
@@ -470,3 +470,22 @@ pub fn extract_beta_rev(version: &str) -> Option<String> {
470470

471471
count
472472
}
473+
474+
pub fn add_rustdoc_lld_flags(
475+
cmd: &mut Command,
476+
builder: &Builder<'_>,
477+
target: TargetSelection,
478+
single_threaded: bool,
479+
) {
480+
if let Some(linker) = builder.linker(target) {
481+
let mut flag = std::ffi::OsString::from("-Clinker=");
482+
flag.push(linker);
483+
cmd.arg(flag);
484+
}
485+
if builder.is_fuse_ld_lld(target) {
486+
cmd.arg("-Clink-arg=-fuse-ld=lld");
487+
if single_threaded {
488+
cmd.arg(format!("-Clink-arg=-Wl,{}", lld_flag_no_threads(target.contains("windows"))));
489+
}
490+
}
491+
}

0 commit comments

Comments
 (0)