Unify passing of flags to rustdoc
This commit is contained in:
parent
a04d56b36d
commit
e5038f3e2a
4 changed files with 26 additions and 24 deletions
|
|
@ -3,7 +3,6 @@
|
|||
//! See comments in `src/bootstrap/rustc.rs` for more information.
|
||||
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::path::PathBuf;
|
||||
use std::process::Command;
|
||||
|
||||
|
|
@ -52,15 +51,6 @@ fn main() {
|
|||
if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() {
|
||||
cmd.arg("-Z").arg("force-unstable-if-unmarked");
|
||||
}
|
||||
if let Some(linker) = env::var_os("RUSTDOC_LINKER") {
|
||||
let mut arg = OsString::from("-Clinker=");
|
||||
arg.push(&linker);
|
||||
cmd.arg(arg);
|
||||
}
|
||||
if let Ok(no_threads) = env::var("RUSTDOC_LLD_NO_THREADS") {
|
||||
cmd.arg("-Clink-arg=-fuse-ld=lld");
|
||||
cmd.arg(format!("-Clink-arg=-Wl,{no_threads}"));
|
||||
}
|
||||
// Cargo doesn't pass RUSTDOCFLAGS to proc_macros:
|
||||
// https://github.com/rust-lang/cargo/issues/4423
|
||||
// Thus, if we are on stage 0, we explicitly set `--cfg=bootstrap`.
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ use crate::utils;
|
|||
use crate::utils::cache::{Interned, INTERNER};
|
||||
use crate::utils::exec::BootstrapCommand;
|
||||
use crate::utils::helpers::{
|
||||
self, add_link_lib_path, dylib_path, dylib_path_var, output, t,
|
||||
self, add_link_lib_path, add_rustdoc_lld_flags, dylib_path, dylib_path_var, output, t,
|
||||
target_supports_cranelift_backend, up_to_date,
|
||||
};
|
||||
use crate::utils::render_tests::{add_flags_and_try_run_tests, try_run_tests};
|
||||
|
|
@ -862,15 +862,8 @@ impl Step for RustdocTheme {
|
|||
.env("CFG_RELEASE_CHANNEL", &builder.config.channel)
|
||||
.env("RUSTDOC_REAL", builder.rustdoc(self.compiler))
|
||||
.env("RUSTC_BOOTSTRAP", "1");
|
||||
if let Some(linker) = builder.linker(self.compiler.host) {
|
||||
cmd.env("RUSTDOC_LINKER", linker);
|
||||
}
|
||||
if builder.is_fuse_ld_lld(self.compiler.host) {
|
||||
cmd.env(
|
||||
"RUSTDOC_LLD_NO_THREADS",
|
||||
helpers::lld_flag_no_threads(self.compiler.host.contains("windows")),
|
||||
);
|
||||
}
|
||||
add_rustdoc_lld_flags(&mut cmd, builder, self.compiler.host, true);
|
||||
|
||||
builder.run_delaying_failure(&mut cmd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ use crate::core::build_steps::{check, clean, compile, dist, doc, install, run, s
|
|||
use crate::core::config::flags::{Color, Subcommand};
|
||||
use crate::core::config::{DryRun, SplitDebuginfo, TargetSelection};
|
||||
use crate::utils::cache::{Cache, Interned, INTERNER};
|
||||
use crate::utils::helpers::{self, add_dylib_path, add_link_lib_path, exe, libdir, output, t};
|
||||
use crate::utils::helpers::{
|
||||
self, add_dylib_path, add_link_lib_path, add_rustdoc_lld_flags, exe, libdir, output, t,
|
||||
};
|
||||
use crate::Crate;
|
||||
use crate::EXTRA_CHECK_CFGS;
|
||||
use crate::{Build, CLang, DocTests, GitRepo, Mode};
|
||||
|
|
@ -1173,9 +1175,7 @@ impl<'a> Builder<'a> {
|
|||
cmd.env_remove("MAKEFLAGS");
|
||||
cmd.env_remove("MFLAGS");
|
||||
|
||||
if let Some(linker) = self.linker(compiler.host) {
|
||||
cmd.env("RUSTDOC_LINKER", linker);
|
||||
}
|
||||
add_rustdoc_lld_flags(&mut cmd, self, compiler.host, false);
|
||||
cmd
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -470,3 +470,22 @@ pub fn extract_beta_rev(version: &str) -> Option<String> {
|
|||
|
||||
count
|
||||
}
|
||||
|
||||
pub fn add_rustdoc_lld_flags(
|
||||
cmd: &mut Command,
|
||||
builder: &Builder<'_>,
|
||||
target: TargetSelection,
|
||||
single_threaded: bool,
|
||||
) {
|
||||
if let Some(linker) = builder.linker(target) {
|
||||
let mut flag = std::ffi::OsString::from("-Clinker=");
|
||||
flag.push(linker);
|
||||
cmd.arg(flag);
|
||||
}
|
||||
if builder.is_fuse_ld_lld(target) {
|
||||
cmd.arg("-Clink-arg=-fuse-ld=lld");
|
||||
if single_threaded {
|
||||
cmd.arg(format!("-Clink-arg=-Wl,{}", lld_flag_no_threads(target.contains("windows"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue