about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Finkel <finkel2804@gmail.com>2019-08-05 16:24:20 +0200
committerMartin Finkel <finkel2804@gmail.com>2019-08-05 16:24:20 +0200
commite3d8b6817ef0369915fb0dc5f2f519e942f8d67f (patch)
treef5d9a70e15dfcd4acda4e0fed4c11e237a4f866a
parent3c6f6f031600dce97d2fd61a51afb17ff7f453ec (diff)
downloadrust-e3d8b6817ef0369915fb0dc5f2f519e942f8d67f.tar.gz
rust-e3d8b6817ef0369915fb0dc5f2f519e942f8d67f.zip
review feedback: find lib root path from registry
-rw-r--r--Cargo.lock1
-rw-r--r--src/librustc_target/Cargo.toml1
-rw-r--r--src/librustc_target/spec/aarch64_uwp_windows_msvc.rs9
-rw-r--r--src/librustc_target/spec/i686_uwp_windows_msvc.rs9
-rw-r--r--src/librustc_target/spec/x86_64_uwp_windows_msvc.rs9
5 files changed, 20 insertions, 9 deletions
diff --git a/Cargo.lock b/Cargo.lock
index c08d7444d14..f2356a26152 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3126,6 +3126,7 @@ name = "rustc_target"
 version = "0.0.0"
 dependencies = [
  "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc_data_structures 0.0.0",
  "serialize 0.0.0",
diff --git a/src/librustc_target/Cargo.toml b/src/librustc_target/Cargo.toml
index cab1e0e0137..940acf232ad 100644
--- a/src/librustc_target/Cargo.toml
+++ b/src/librustc_target/Cargo.toml
@@ -11,6 +11,7 @@ path = "lib.rs"
 [dependencies]
 bitflags = "1.0"
 log = "0.4"
+cc = "1.0.1"
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_serialize = { path = "../libserialize", package = "serialize" }
 syntax_pos = { path = "../libsyntax_pos" }
diff --git a/src/librustc_target/spec/aarch64_uwp_windows_msvc.rs b/src/librustc_target/spec/aarch64_uwp_windows_msvc.rs
index 9309f287dc7..ab1b6705a1d 100644
--- a/src/librustc_target/spec/aarch64_uwp_windows_msvc.rs
+++ b/src/librustc_target/spec/aarch64_uwp_windows_msvc.rs
@@ -1,5 +1,5 @@
 use crate::spec::{LinkerFlavor, Target, TargetResult, PanicStrategy};
-use std::env;
+use cc::windows_registry;
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_uwp_msvc_base::opts();
@@ -9,8 +9,11 @@ pub fn target() -> TargetResult {
     // FIXME: this shouldn't be panic=abort, it should be panic=unwind
     base.panic_strategy = PanicStrategy::Abort;
 
-    let lib_root_path = env::var("VCToolsInstallDir")
-        .expect("VCToolsInstallDir not found in env");
+    let link_tool = windows_registry::find_tool("x86_64-pc-windows-msvc", "link.exe")
+        .expect("no path found for link.exe");
+
+    let original_path = link_tool.path();
+    let lib_root_path = original_path.ancestors().skip(4).next().unwrap().display();
 
     base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap()
         .push(format!("{}{}{}",
diff --git a/src/librustc_target/spec/i686_uwp_windows_msvc.rs b/src/librustc_target/spec/i686_uwp_windows_msvc.rs
index d05aee54759..bc5631439d1 100644
--- a/src/librustc_target/spec/i686_uwp_windows_msvc.rs
+++ b/src/librustc_target/spec/i686_uwp_windows_msvc.rs
@@ -1,5 +1,5 @@
 use crate::spec::{LinkerFlavor, Target, TargetResult};
-use std::env;
+use cc::windows_registry;
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_uwp_msvc_base::opts();
@@ -7,8 +7,11 @@ pub fn target() -> TargetResult {
     base.max_atomic_width = Some(64);
     base.has_elf_tls = true;
 
-    let lib_root_path = env::var("VCToolsInstallDir")
-        .expect("VCToolsInstallDir not found in env");
+    let link_tool = windows_registry::find_tool("x86_64-pc-windows-msvc", "link.exe")
+        .expect("no path found for link.exe");
+
+    let original_path = link_tool.path();
+    let lib_root_path = original_path.ancestors().skip(4).next().unwrap().display();
 
     base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap()
             .push(format!("{}{}{}",
diff --git a/src/librustc_target/spec/x86_64_uwp_windows_msvc.rs b/src/librustc_target/spec/x86_64_uwp_windows_msvc.rs
index 174d13327eb..8c15c7c22fc 100644
--- a/src/librustc_target/spec/x86_64_uwp_windows_msvc.rs
+++ b/src/librustc_target/spec/x86_64_uwp_windows_msvc.rs
@@ -1,5 +1,5 @@
 use crate::spec::{LinkerFlavor, Target, TargetResult};
-use std::env;
+use cc::windows_registry;
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_uwp_msvc_base::opts();
@@ -7,8 +7,11 @@ pub fn target() -> TargetResult {
     base.max_atomic_width = Some(64);
     base.has_elf_tls = true;
 
-    let lib_root_path = env::var("VCToolsInstallDir")
-        .expect("VCToolsInstallDir not found in env");
+    let link_tool = windows_registry::find_tool("x86_64-pc-windows-msvc", "link.exe")
+        .expect("no path found for link.exe");
+
+    let original_path = link_tool.path();
+    let lib_root_path = original_path.ancestors().skip(4).next().unwrap().display();
 
     base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap()
             .push(format!("{}{}{}",