Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit f17dbfc

Browse files
committed
Add rustdoc-clif wrapper
1 parent ddc66ff commit f17dbfc

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

build_system/build_sysroot.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub(crate) fn build_sysroot(
3535
try_hard_link(cg_clif_dylib_src, &cg_clif_dylib_path);
3636

3737
// Build and copy rustc and cargo wrappers
38-
for wrapper in ["rustc-clif", "cargo-clif"] {
38+
for wrapper in ["rustc-clif", "rustdoc-clif", "cargo-clif"] {
3939
let wrapper_name = get_wrapper_file_name(wrapper, "bin");
4040

4141
let mut build_cargo_wrapper_cmd = Command::new("rustc");

scripts/rustdoc-clif.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use std::env;
2+
use std::ffi::OsString;
3+
#[cfg(unix)]
4+
use std::os::unix::process::CommandExt;
5+
use std::path::PathBuf;
6+
use std::process::Command;
7+
8+
fn main() {
9+
let sysroot = PathBuf::from(env::current_exe().unwrap().parent().unwrap());
10+
11+
let cg_clif_dylib_path = sysroot.join(if cfg!(windows) { "bin" } else { "lib" }).join(
12+
env::consts::DLL_PREFIX.to_string() + "rustc_codegen_cranelift" + env::consts::DLL_SUFFIX,
13+
);
14+
15+
let mut args = std::env::args_os().skip(1).collect::<Vec<_>>();
16+
args.push(OsString::from("-Cpanic=abort"));
17+
args.push(OsString::from("-Zpanic-abort-tests"));
18+
let mut codegen_backend_arg = OsString::from("-Zcodegen-backend=");
19+
codegen_backend_arg.push(cg_clif_dylib_path);
20+
args.push(codegen_backend_arg);
21+
if !args.contains(&OsString::from("--sysroot")) {
22+
args.push(OsString::from("--sysroot"));
23+
args.push(OsString::from(sysroot.to_str().unwrap()));
24+
}
25+
26+
// Ensure that the right toolchain is used
27+
env::set_var("RUSTUP_TOOLCHAIN", env!("RUSTUP_TOOLCHAIN"));
28+
29+
#[cfg(unix)]
30+
Command::new("rustdoc").args(args).exec();
31+
32+
#[cfg(not(unix))]
33+
std::process::exit(
34+
Command::new("rustdoc").args(args).spawn().unwrap().wait().unwrap().code().unwrap_or(1),
35+
);
36+
}

0 commit comments

Comments
 (0)