Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/toolchain_info/target_triple.rs')
| -rw-r--r-- | crates/project-model/src/toolchain_info/target_triple.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/project-model/src/toolchain_info/target_triple.rs b/crates/project-model/src/toolchain_info/target_triple.rs index 6b68cc6765..2d0d4a7c50 100644 --- a/crates/project-model/src/toolchain_info/target_triple.rs +++ b/crates/project-model/src/toolchain_info/target_triple.rs @@ -1,3 +1,5 @@ +use std::path::Path; + use anyhow::Context; use rustc_hash::FxHashMap; use toolchain::Tool; @@ -16,23 +18,24 @@ pub fn get( return Ok(vec![target.to_owned()]); } - let sysroot = match config { + let (sysroot, current_dir) = match config { QueryConfig::Cargo(sysroot, cargo_toml) => { match cargo_config_build_target(cargo_toml, extra_env, sysroot) { Some(it) => return Ok(it), - None => sysroot, + None => (sysroot, cargo_toml.parent().as_ref()), } } - QueryConfig::Rustc(sysroot) => sysroot, + QueryConfig::Rustc(sysroot, current_dir) => (sysroot, current_dir), }; - rustc_discover_host_triple(extra_env, sysroot).map(|it| vec![it]) + rustc_discover_host_triple(extra_env, sysroot, current_dir).map(|it| vec![it]) } fn rustc_discover_host_triple( extra_env: &FxHashMap<String, String>, sysroot: &Sysroot, + current_dir: &Path, ) -> anyhow::Result<String> { - let mut cmd = sysroot.tool(Tool::Rustc, &std::env::current_dir()?); + let mut cmd = sysroot.tool(Tool::Rustc, current_dir); cmd.envs(extra_env); cmd.arg("-vV"); let stdout = utf8_stdout(&mut cmd) |