Skip to content
10 changes: 5 additions & 5 deletions src/bootstrap/src/core/build_steps/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1425,13 +1425,13 @@ fn rustc_llvm_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelect
if builder.config.llvm_enzyme {
cargo.env("LLVM_ENZYME", "1");
}
let llvm::LlvmResult { host_llvm_config, .. } = builder.ensure(llvm::Llvm { target });
let llvm_output = builder.ensure(llvm::Llvm { target });
if builder.config.llvm_offload {
builder.ensure(llvm::OmpOffload { target });
cargo.env("LLVM_OFFLOAD", "1");
}

cargo.env("LLVM_CONFIG", &host_llvm_config);
cargo.env("LLVM_CONFIG", &llvm_output.host_llvm_config);

// Some LLVM linker flags (-L and -l) may be needed to link `rustc_llvm`. Its build script
// expects these to be passed via the `LLVM_LINKER_FLAGS` env variable, separated by
Expand Down Expand Up @@ -2122,11 +2122,11 @@ impl CommandLineStep for Assemble {
trace!("target_compiler.host" = ?target_compiler.host, "LLVM enabled");

let target = target_compiler.host;
let llvm::LlvmResult { host_llvm_config, .. } = builder.ensure(llvm::Llvm { target });
let llvm_output = builder.ensure(llvm::Llvm { target });
if !builder.config.dry_run() && builder.config.llvm_tools_enabled {
trace!("LLVM tools enabled");

let host_llvm_bin_dir = command(&host_llvm_config)
let host_llvm_bin_dir = command(&llvm_output.host_llvm_config)
.arg("--bindir")
.cached()
.run_capture_stdout(builder)
Expand All @@ -2153,7 +2153,7 @@ impl CommandLineStep for Assemble {
// relative to its output build directory, and then apply it to the target
// LLVM output build directory.
let host_llvm_out = builder.llvm_out(builder.host_target);
let target_llvm_out = builder.llvm_out(target);
let target_llvm_out = llvm_output.root_dir();
if let Ok(relative_path) =
Path::new(&host_llvm_bin_dir).strip_prefix(host_llvm_out)
{
Expand Down
15 changes: 8 additions & 7 deletions src/bootstrap/src/core/build_steps/dist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2527,7 +2527,7 @@ fn maybe_install_llvm(
}
}
!builder.config.dry_run()
} else if let llvm::LlvmBuildStatus::AlreadyBuilt(llvm::LlvmResult {
} else if let llvm::LlvmBuildStatus::AlreadyBuilt(llvm::LlvmOutput {
host_llvm_config, ..
}) = llvm::prebuilt_llvm_config(builder, target, true)
{
Expand Down Expand Up @@ -2678,15 +2678,15 @@ impl CommandLineStep for LlvmTools {
builder.require_submodule("src/llvm-project", None);
}

builder.ensure(crate::core::build_steps::llvm::Llvm { target });
let llvm_output = builder.ensure(crate::core::build_steps::llvm::Llvm { target });

let mut tarball = Tarball::new(builder, "llvm-tools", &target.triple);
tarball.set_overlay(OverlayKind::Llvm);
tarball.is_preview(true);

if builder.config.llvm_tools_enabled {
// Prepare the image directory
let src_bindir = builder.llvm_out(target).join("bin");
let src_bindir = llvm_output.root_dir().join("bin");
let dst_bindir = format!("lib/rustlib/{}/bin", target.triple);
for tool in tools_to_install(&builder.paths) {
let exe = src_bindir.join(exe(tool, target));
Expand Down Expand Up @@ -2859,9 +2859,9 @@ impl CommandLineStep for RustDev {
// LLVM requires a shared object symlink to exist on some platforms.
tarball.permit_symlinks(true);

builder.ensure(crate::core::build_steps::llvm::Llvm { target });
let llvm_output = builder.ensure(crate::core::build_steps::llvm::Llvm { target });

let src_bindir = builder.llvm_out(target).join("bin");
let src_bindir = llvm_output.root_dir().join("bin");
// If updating this, you likely want to change
// src/bootstrap/download-ci-llvm-stamp as well, otherwise local users
// will not pick up the extra file until LLVM gets bumped.
Expand All @@ -2888,12 +2888,13 @@ impl CommandLineStep for RustDev {
}
}

tarball.add_file(builder.llvm_filecheck(target), "bin", FileType::Executable);
let filecheck = builder.ensure(llvm::FileCheck { target });
tarball.add_file(filecheck, "bin", FileType::Executable);

// Copy the include directory as well; needed mostly to build
// librustc_llvm properly (e.g., llvm-config.h is in here). But also
// just broadly useful to be able to link against the bundled LLVM.
tarball.add_dir(builder.llvm_out(target).join("include"), "include");
tarball.add_dir(llvm_output.root_dir().join("include"), "include");

// Copy libLLVM.so to the target lib dir as well, so the RPATH like
// `$ORIGIN/../lib` can find it. It may also be used as a dependency
Expand Down
Loading
Loading