Skip to content

Commit e993142

Browse files
committed
Unify passing of flags to rustdoc
1 parent 65519f5 commit e993142

File tree

4 files changed

+29
-27
lines changed

4 files changed

+29
-27
lines changed

src/bootstrap/bin/rustdoc.rs

Lines changed: 0 additions & 10 deletions
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::{exit, Command};
98

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

src/bootstrap/builder.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ use crate::run;
2222
use crate::setup;
2323
use crate::test;
2424
use crate::tool::{self, SourceType};
25-
use crate::util::{self, add_dylib_path, add_link_lib_path, exe, libdir, output, t};
25+
use crate::util::{
26+
self, add_dylib_path, add_link_lib_path, add_rustdoc_lld_flags, exe, libdir, output, t,
27+
};
2628
use crate::EXTRA_CHECK_CFGS;
2729
use crate::{check, compile, Crate};
2830
use crate::{clean, dist};
@@ -1171,12 +1173,7 @@ impl<'a> Builder<'a> {
11711173
cmd.env_remove("MAKEFLAGS");
11721174
cmd.env_remove("MFLAGS");
11731175

1174-
if let Some(linker) = self.linker(compiler.host) {
1175-
cmd.env("RUSTDOC_LINKER", linker);
1176-
}
1177-
if self.is_fuse_ld_lld(compiler.host) {
1178-
cmd.env("RUSTDOC_FUSE_LD_LLD", "1");
1179-
}
1176+
add_rustdoc_lld_flags(&mut cmd, self, compiler.host, false);
11801177
cmd
11811178
}
11821179

src/bootstrap/test.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ use crate::render_tests::add_flags_and_try_run_tests;
2727
use crate::synthetic_targets::MirOptPanicAbortSyntheticTarget;
2828
use crate::tool::{self, SourceType, Tool};
2929
use crate::toolstate::ToolState;
30-
use crate::util::{self, add_link_lib_path, dylib_path, dylib_path_var, output, t, up_to_date};
30+
use crate::util::{
31+
self, add_link_lib_path, add_rustdoc_lld_flags, dylib_path, dylib_path_var, output, t,
32+
up_to_date,
33+
};
3134
use crate::{envify, CLang, DocTests, GitRepo, Mode};
3235

3336
const ADB_TEST_DIR: &str = "/data/local/tmp/work";
@@ -853,15 +856,8 @@ impl Step for RustdocTheme {
853856
.env("CFG_RELEASE_CHANNEL", &builder.config.channel)
854857
.env("RUSTDOC_REAL", builder.rustdoc(self.compiler))
855858
.env("RUSTC_BOOTSTRAP", "1");
856-
if let Some(linker) = builder.linker(self.compiler.host) {
857-
cmd.env("RUSTDOC_LINKER", linker);
858-
}
859-
if builder.is_fuse_ld_lld(self.compiler.host) {
860-
cmd.env(
861-
"RUSTDOC_LLD_NO_THREADS",
862-
util::lld_flag_no_threads(self.compiler.host.contains("windows")),
863-
);
864-
}
859+
add_rustdoc_lld_flags(&mut cmd, builder, self.compiler.host, true);
860+
865861
builder.run_delaying_failure(&mut cmd);
866862
}
867863
}

src/bootstrap/util.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,3 +495,22 @@ pub fn lld_flag_no_threads(is_windows: bool) -> &'static str {
495495
pub fn dir_is_empty(dir: &Path) -> bool {
496496
t!(std::fs::read_dir(dir)).next().is_none()
497497
}
498+
499+
pub fn add_rustdoc_lld_flags(
500+
cmd: &mut Command,
501+
builder: &Builder,
502+
target: TargetSelection,
503+
single_threaded: bool,
504+
) {
505+
if let Some(linker) = builder.linker(target) {
506+
let mut flag = std::ffi::OsString::from("-Clinker=");
507+
flag.push(linker);
508+
cmd.arg(flag);
509+
}
510+
if builder.is_fuse_ld_lld(target) {
511+
cmd.arg("-Clink-arg=-fuse-ld=lld");
512+
if single_threaded {
513+
cmd.arg(format!("-Clink-arg=-Wl,{}", lld_flag_no_threads(target.contains("windows"))));
514+
}
515+
}
516+
}

0 commit comments

Comments
 (0)