From a373c9209ed3933278e5caf3a6476e8aac2abc97 Mon Sep 17 00:00:00 2001 From: wyvernbw Date: Thu, 29 Oct 2026 22:18:45 +0200 Subject: [PATCH 1/2] honor target dir config in cargo-gpu-install --- crates/cargo-gpu-install/src/install.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/cargo-gpu-install/src/install.rs b/crates/cargo-gpu-install/src/install.rs index bb72e088a4c..e2dc1a9a2a8 100644 --- a/crates/cargo-gpu-install/src/install.rs +++ b/crates/cargo-gpu-install/src/install.rs @@ -265,9 +265,18 @@ package = "rustc_codegen_spirv" } let mut _file_lock = None; + + let target_dir = &metadata.target_directory; + let install_dir_target = install_dir.join("target"); + let install_dir_target = match Path::exists(&install_dir_target) { + true => install_dir_target, + // if artifacts are missing, fall back to the global target dir + false => target_dir.clone().into_std_path_buf(), + }; + let (dest_dylib_path, do_build) = if source.is_path() { ( - install_dir.join("target/release").join(&dylib_filename), + install_dir_target.join("release").join(&dylib_filename), // if `source` is a path, always rebuild and rely on incremental builds true, ) @@ -353,7 +362,7 @@ package = "rustc_codegen_spirv" }) .context("running build command")?; - let target = install_dir.join("target"); + let target = install_dir_target; let dylib_path = target.join("release").join(&dylib_filename); if dylib_path.is_file() { log::info!("successfully built {}", dylib_path.display()); From e81c09b04fee62738b8bd3dda9e033e587ba3e04 Mon Sep 17 00:00:00 2001 From: wyvernbw Date: Fri, 30 Oct 2026 11:58:06 +0200 Subject: [PATCH 2/2] cargo-gpu-install: pass --target-dir to cargo when building --- crates/cargo-gpu-install/src/install.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/crates/cargo-gpu-install/src/install.rs b/crates/cargo-gpu-install/src/install.rs index e2dc1a9a2a8..ab2290601d2 100644 --- a/crates/cargo-gpu-install/src/install.rs +++ b/crates/cargo-gpu-install/src/install.rs @@ -266,13 +266,7 @@ package = "rustc_codegen_spirv" let mut _file_lock = None; - let target_dir = &metadata.target_directory; let install_dir_target = install_dir.join("target"); - let install_dir_target = match Path::exists(&install_dir_target) { - true => install_dir_target, - // if artifacts are missing, fall back to the global target dir - false => target_dir.clone().into_std_path_buf(), - }; let (dest_dylib_path, do_build) = if source.is_path() { ( @@ -342,7 +336,9 @@ package = "rustc_codegen_spirv" cargo .current_dir(&install_dir) .arg(format!("+{toolchain_channel}")) - .args(["build", "--release"]); + .args(["build", "--release"]) + .arg("--target-dir") + .arg(&install_dir_target); if source.is_path() { cargo.args(["-p", "rustc_codegen_spirv", "--lib"]); }