Don't require full Context to build a TargetInfo
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Fri, 13 Apr 2018 17:58:00 +0000 (19:58 +0200)
committerDirkjan Ochtman <dirkjan@ochtman.nl>
Fri, 13 Apr 2018 18:03:20 +0000 (20:03 +0200)
src/cargo/core/compiler/context/mod.rs
src/cargo/core/compiler/context/target_info.rs

index 33dbb01a1f8d8e43a53d753f523b8cadae4a3211..77ca4cc5f11cf6d8f5d9eaf09ce0eb7ef9de29d2 100644 (file)
@@ -351,11 +351,11 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
             _ => true,
         };
 
-        self.host_info = TargetInfo::new(self, Kind::Host)?;
+        self.host_info = TargetInfo::new(self.config, &self.build_config, Kind::Host)?;
         self.target_info = if host_target_same {
             self.host_info.clone()
         } else {
-            TargetInfo::new(self, Kind::Target)?
+            TargetInfo::new(self.config, &self.build_config, Kind::Target)?
         };
         self.compilation.host_dylib_path = self.host_info.sysroot_libdir.clone();
         self.compilation.target_dylib_path = self.target_info.sysroot_libdir.clone();
index c22ab42324472bf7bc14b492eff9df4837c52079..1d1061259b9e9b54d0b68d394682c85c0a559c03 100644 (file)
@@ -3,8 +3,8 @@ use std::collections::hash_map::{Entry, HashMap};
 use std::path::PathBuf;
 use std::str::{self, FromStr};
 
-use super::{env_args, Context};
-use util::{CargoResult, CargoResultExt, Cfg, ProcessBuilder};
+use super::{env_args, BuildConfig};
+use util::{CargoResult, CargoResultExt, Cfg, Config, ProcessBuilder};
 use core::TargetKind;
 use super::Kind;
 
@@ -51,9 +51,9 @@ impl FileType {
 }
 
 impl TargetInfo {
-    pub fn new(cx: &Context, kind: Kind) -> CargoResult<TargetInfo> {
-        let rustflags = env_args(cx.config, &cx.build_config, None, kind, "RUSTFLAGS")?;
-        let mut process = cx.config.rustc()?.process();
+    pub fn new(config: &Config, build_config: &BuildConfig, kind: Kind) -> CargoResult<TargetInfo> {
+        let rustflags = env_args(config, build_config, None, kind, "RUSTFLAGS")?;
+        let mut process = config.rustc()?.process();
         process
             .arg("-")
             .arg("--crate-name")
@@ -63,7 +63,7 @@ impl TargetInfo {
             .env_remove("RUST_LOG");
 
         if kind == Kind::Target {
-            process.arg("--target").arg(&cx.build_config.target_triple());
+            process.arg("--target").arg(&build_config.target_triple());
         }
 
         let crate_type_process = process.clone();
@@ -115,7 +115,7 @@ impl TargetInfo {
             } else {
                 rustlib.push("lib");
                 rustlib.push("rustlib");
-                rustlib.push(cx.build_config.target_triple());
+                rustlib.push(build_config.target_triple());
                 rustlib.push("lib");
                 sysroot_libdir = Some(rustlib);
             }