diff --git a/Cargo.lock b/Cargo.lock index f5e59849d51..e8ff0776ed6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,23 +13,23 @@ dependencies = [ "flate2 0.2.13 (registry+/~https://github.com/rust-lang/crates.io-index)", "git2 0.4.2 (registry+/~https://github.com/rust-lang/crates.io-index)", "git2-curl 0.4.0 (registry+/~https://github.com/rust-lang/crates.io-index)", - "glob 0.2.10 (registry+/~https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+/~https://github.com/rust-lang/crates.io-index)", "hamcrest 0.1.0 (registry+/~https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libgit2-sys 0.4.0 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.4.1 (registry+/~https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+/~https://github.com/rust-lang/crates.io-index)", - "num_cpus 0.2.10 (registry+/~https://github.com/rust-lang/crates.io-index)", - "regex 0.1.48 (registry+/~https://github.com/rust-lang/crates.io-index)", + "num_cpus 0.2.11 (registry+/~https://github.com/rust-lang/crates.io-index)", + "regex 0.1.58 (registry+/~https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.18 (registry+/~https://github.com/rust-lang/crates.io-index)", - "semver 0.2.2 (registry+/~https://github.com/rust-lang/crates.io-index)", - "tar 0.4.3 (registry+/~https://github.com/rust-lang/crates.io-index)", + "semver 0.2.3 (registry+/~https://github.com/rust-lang/crates.io-index)", + "tar 0.4.4 (registry+/~https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.4 (registry+/~https://github.com/rust-lang/crates.io-index)", "term 0.4.4 (registry+/~https://github.com/rust-lang/crates.io-index)", "time 0.1.34 (registry+/~https://github.com/rust-lang/crates.io-index)", - "toml 0.1.27 (registry+/~https://github.com/rust-lang/crates.io-index)", + "toml 0.1.28 (registry+/~https://github.com/rust-lang/crates.io-index)", "url 0.2.38 (registry+/~https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -37,16 +37,16 @@ name = "advapi32-sys" version = "0.1.2" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aho-corasick" -version = "0.4.1" +version = "0.5.1" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 0.1.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "memchr 0.1.10 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -61,10 +61,10 @@ source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "cmake" -version = "0.1.13" +version = "0.1.16" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.23 (registry+/~https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.25 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -87,10 +87,10 @@ version = "0.2.17" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "curl-sys 0.1.32 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+/~https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.6 (registry+/~https://github.com/rust-lang/crates.io-index)", - "url 0.5.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "url 0.5.7 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -98,11 +98,11 @@ name = "curl-sys" version = "0.1.32" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.23 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.25 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.1 (registry+/~https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.6 (registry+/~https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.6 (registry+/~https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -110,7 +110,7 @@ name = "docopt" version = "0.6.78" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "regex 0.1.48 (registry+/~https://github.com/rust-lang/crates.io-index)", + "regex 0.1.58 (registry+/~https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.18 (registry+/~https://github.com/rust-lang/crates.io-index)", "strsim 0.3.0 (registry+/~https://github.com/rust-lang/crates.io-index)", ] @@ -121,7 +121,7 @@ version = "0.3.2" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.5 (registry+/~https://github.com/rust-lang/crates.io-index)", - "regex 0.1.48 (registry+/~https://github.com/rust-lang/crates.io-index)", + "regex 0.1.58 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -129,7 +129,7 @@ name = "filetime" version = "0.1.10" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -137,13 +137,13 @@ name = "flate2" version = "0.2.13" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.7 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gcc" -version = "0.3.23" +version = "0.3.25" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] @@ -151,7 +151,7 @@ name = "gdi32-sys" version = "0.1.1" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -160,9 +160,9 @@ version = "0.4.2" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.1.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libgit2-sys 0.4.0 (registry+/~https://github.com/rust-lang/crates.io-index)", - "url 0.5.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.4.1 (registry+/~https://github.com/rust-lang/crates.io-index)", + "url 0.5.7 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -173,12 +173,12 @@ dependencies = [ "curl 0.2.17 (registry+/~https://github.com/rust-lang/crates.io-index)", "git2 0.4.2 (registry+/~https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+/~https://github.com/rust-lang/crates.io-index)", - "url 0.5.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "url 0.5.7 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glob" -version = "0.2.10" +version = "0.2.11" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] @@ -186,7 +186,7 @@ name = "hamcrest" version = "0.1.0" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "num 0.1.30 (registry+/~https://github.com/rust-lang/crates.io-index)", + "num 0.1.31 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -194,27 +194,27 @@ name = "kernel32-sys" version = "0.2.1" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libc" -version = "0.2.7" +version = "0.2.8" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "libgit2-sys" -version = "0.4.0" +version = "0.4.1" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.13 (registry+/~https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.23 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.16 (registry+/~https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.25 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "libssh2-sys 0.1.36 (registry+/~https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.1 (registry+/~https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.6 (registry+/~https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.6 (registry+/~https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -230,11 +230,11 @@ name = "libssh2-sys" version = "0.1.36" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.13 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.16 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.1 (registry+/~https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.6 (registry+/~https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.6 (registry+/~https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -242,9 +242,9 @@ name = "libz-sys" version = "1.0.1" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.23 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.6 (registry+/~https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.25 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -252,7 +252,7 @@ name = "log" version = "0.3.5" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -262,10 +262,10 @@ source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "0.1.7" +version = "0.1.10" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -273,18 +273,18 @@ name = "miniz-sys" version = "0.1.7" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.23 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.25 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "nom" -version = "1.2.0" +version = "1.2.2" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "num" -version = "0.1.30" +version = "0.1.31" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "rand 0.3.14 (registry+/~https://github.com/rust-lang/crates.io-index)", @@ -293,12 +293,10 @@ dependencies = [ [[package]] name = "num_cpus" -version = "0.2.10" +version = "0.2.11" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -307,15 +305,15 @@ version = "0.7.6" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "gdi32-sys 0.1.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "libressl-pnacl-sys 2.1.6 (registry+/~https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.6 (registry+/~https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+/~https://github.com/rust-lang/crates.io-index)", "user32-sys 0.1.2 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pkg-config" -version = "0.3.6" +version = "0.3.8" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] @@ -331,22 +329,23 @@ name = "rand" version = "0.3.14" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "0.1.48" +version = "0.1.58" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.4.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "memchr 0.1.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.2.2 (registry+/~https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.5.1 (registry+/~https://github.com/rust-lang/crates.io-index)", + "memchr 0.1.10 (registry+/~https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.3.0 (registry+/~https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 0.1.3 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.2.2" +version = "0.3.0" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] @@ -356,10 +355,10 @@ source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "semver" -version = "0.2.2" +version = "0.2.3" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 1.2.0 (registry+/~https://github.com/rust-lang/crates.io-index)", + "nom 1.2.2 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -369,11 +368,11 @@ source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] name = "tar" -version = "0.4.3" +version = "0.4.4" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "filetime 0.1.10 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -390,7 +389,7 @@ version = "0.4.4" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -399,13 +398,13 @@ version = "0.1.34" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.1 (registry+/~https://github.com/rust-lang/crates.io-index)", - "libc 0.2.7 (registry+/~https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "libc 0.2.8 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" -version = "0.1.27" +version = "0.1.28" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "rustc-serialize 0.3.18 (registry+/~https://github.com/rust-lang/crates.io-index)", @@ -436,7 +435,7 @@ dependencies = [ [[package]] name = "url" -version = "0.5.5" +version = "0.5.7" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.2 (registry+/~https://github.com/rust-lang/crates.io-index)", @@ -451,10 +450,15 @@ name = "user32-sys" version = "0.1.2" source = "registry+/~https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.5 (registry+/~https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.6 (registry+/~https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+/~https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "utf8-ranges" +version = "0.1.3" +source = "registry+/~https://github.com/rust-lang/crates.io-index" + [[package]] name = "uuid" version = "0.1.18" @@ -466,7 +470,7 @@ dependencies = [ [[package]] name = "winapi" -version = "0.2.5" +version = "0.2.6" source = "registry+/~https://github.com/rust-lang/crates.io-index" [[package]] diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index ad82d4f773e..fa0ff05818b 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -469,7 +469,7 @@ fn scrape_target_config(config: &Config, triple: &str) None => return Ok(ret), }; for (lib_name, _) in table.into_iter() { - if lib_name == "ar" || lib_name == "linker" { + if lib_name == "ar" || lib_name == "linker" || lib_name == "rustflags" { continue } diff --git a/src/cargo/ops/cargo_rustc/context.rs b/src/cargo/ops/cargo_rustc/context.rs index b350ba6efad..b400745644c 100644 --- a/src/cargo/ops/cargo_rustc/context.rs +++ b/src/cargo/ops/cargo_rustc/context.rs @@ -1,4 +1,5 @@ use std::collections::{HashSet, HashMap}; +use std::env; use std::path::{Path, PathBuf}; use std::str::{self, FromStr}; use std::sync::Arc; @@ -616,4 +617,54 @@ impl<'a, 'cfg> Context<'a, 'cfg> { // profile? How is this controlled at the CLI layer? &self.profiles.dev } + + // Acquire extra flags to pass to the compiler from the + // RUSTFLAGS environment variable and similar config values + pub fn rustflags_args(&self, unit: &Unit) -> CargoResult> { + // We *want* to apply RUSTFLAGS only to builds for the + // requested target architecture, and not to things like build + // scripts and plugins, which may be for an entirely different + // architecture. Cargo's present architecture makes it quite + // hard to only apply flags to things that are not build + // scripts and plugins though, so we do something more hacky + // instead to avoid applying the same RUSTFLAGS to multiple targets + // arches: + // + // 1) If --target is not specified we just apply RUSTFLAGS to + // all builds; they are all going to have the same target. + // + // 2) If --target *is* specified then we only apply RUSTFLAGS + // to compilation units with the Target kind, which indicates + // it was chosen by the --target flag. + // + // This means that, e.g. even if the specified --target is the + // same as the host, build scripts in plugins won't get + // RUSTFLAGS. + let compiling_with_target = self.build_config.requested_target.is_some(); + let is_target_kind = unit.kind == Kind::Target; + + if compiling_with_target && ! is_target_kind { + // This is probably a build script or plugin and we're + // compiling with --target. In this scenario there are + // no rustflags we can apply. + return Ok(Vec::new()); + } + + // First try RUSTFLAGS from the environment + if let Some(a) = env::var("RUSTFLAGS").ok() { + let args = a.split(" ") + .map(str::trim) + .filter(|s| !s.is_empty()) + .map(str::to_string); + return Ok(args.collect()); + } + + // Then the build.rustflags value + if let Some(args) = try!(self.config.get_list("build.rustflags")) { + let args = args.val.into_iter().map(|a| a.0); + return Ok(args.collect()); + } + + Ok(Vec::new()) + } } diff --git a/src/cargo/ops/cargo_rustc/fingerprint.rs b/src/cargo/ops/cargo_rustc/fingerprint.rs index 837b14bc113..042e223b3cb 100644 --- a/src/cargo/ops/cargo_rustc/fingerprint.rs +++ b/src/cargo/ops/cargo_rustc/fingerprint.rs @@ -111,6 +111,7 @@ pub struct Fingerprint { deps: Vec<(String, Arc)>, local: LocalFingerprint, memoized_hash: Mutex>, + rustflags: Vec, } #[derive(RustcEncodable, RustcDecodable, Hash)] @@ -160,6 +161,9 @@ impl Fingerprint { if self.profile != old.profile { bail!("profile configuration has changed") } + if self.rustflags != old.rustflags { + return Err(internal("RUSTFLAGS has changed")) + } match (&self.local, &old.local) { (&LocalFingerprint::Precalculated(ref a), &LocalFingerprint::Precalculated(ref b)) => { @@ -202,8 +206,9 @@ impl hash::Hash for Fingerprint { ref deps, ref local, memoized_hash: _, + ref rustflags, } = *self; - (rustc, features, target, profile, deps, local).hash(h) + (rustc, features, target, profile, deps, local, rustflags).hash(h) } } @@ -222,6 +227,7 @@ impl Encodable for Fingerprint { (a, b.hash()) }).collect::>().encode(e) })); + try!(e.emit_struct_field("rustflags", 6, |e| self.rustflags.encode(e))); Ok(()) }) } @@ -252,9 +258,11 @@ impl Decodable for Fingerprint { features: String::new(), deps: Vec::new(), memoized_hash: Mutex::new(Some(hash)), + rustflags: Vec::new(), })) }).collect() - } + }, + rustflags: try!(d.read_struct_field("rustflags", 6, decode)), }) }) } @@ -346,6 +354,7 @@ fn calculate<'a, 'cfg>(cx: &mut Context<'a, 'cfg>, unit: &Unit<'a>) deps: deps, local: local, memoized_hash: Mutex::new(None), + rustflags: try!(cx.rustflags_args(unit)), }); cx.fingerprints.insert(*unit, fingerprint.clone()); Ok(fingerprint) @@ -425,6 +434,7 @@ pub fn prepare_build_cmd<'a, 'cfg>(cx: &mut Context<'a, 'cfg>, unit: &Unit<'a>) deps: Vec::new(), local: local, memoized_hash: Mutex::new(None), + rustflags: Vec::new(), }; let compare = compare_old_fingerprint(&loc, &fingerprint); log_compare(unit, &compare); diff --git a/src/cargo/ops/cargo_rustc/mod.rs b/src/cargo/ops/cargo_rustc/mod.rs index dad110c208e..250870f4159 100644 --- a/src/cargo/ops/cargo_rustc/mod.rs +++ b/src/cargo/ops/cargo_rustc/mod.rs @@ -243,9 +243,9 @@ fn rustc(cx: &mut Context, unit: &Unit) -> CargoResult { let dep_info_loc = fingerprint::dep_info_loc(cx, unit); let cwd = cx.config.cwd().to_path_buf(); - return Ok(Work::new(move |desc_tx| { - debug!("about to run: {}", rustc); + let rustflags = try!(cx.rustflags_args(unit)); + return Ok(Work::new(move |desc_tx| { // Only at runtime have we discovered what the extra -L and -l // arguments are for native libraries, so we process those here. We // also need to be sure to add any -L paths for our plugins to the @@ -267,6 +267,9 @@ fn rustc(cx: &mut Context, unit: &Unit) -> CargoResult { } } + // Add the arguments from RUSTFLAGS + rustc.args(&rustflags); + desc_tx.send(rustc.to_string()).ok(); try!(exec_engine.exec(rustc).chain_error(|| { human(format!("Could not compile `{}`.", name)) diff --git a/tests/test_cargo_compile_rustflags.rs b/tests/test_cargo_compile_rustflags.rs new file mode 100644 index 00000000000..a95184cadfd --- /dev/null +++ b/tests/test_cargo_compile_rustflags.rs @@ -0,0 +1,826 @@ +use std::io::Write; +use std::fs::{self, File}; +use support::{project, execs, paths}; +use hamcrest::assert_that; + +fn setup() { +} + +test!(env_rustflags_normal_source { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .file("src/bin/a.rs", "fn main() {}") + .file("examples/b.rs", "fn main() {}") + .file("tests/c.rs", "#[test] fn f() { }") + .file("benches/d.rs", r#" + #![feature(test)] + extern crate test; + #[bench] fn run1(_ben: &mut test::Bencher) { }"#); + p.build(); + + // Use RUSTFLAGS to pass an argument that will generate an error + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--lib"), + execs().with_status(101)); + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--bin=a"), + execs().with_status(101)); + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--example=b"), + execs().with_status(101)); + assert_that(p.cargo("test").env("RUSTFLAGS", "-Z bogus"), + execs().with_status(101)); + assert_that(p.cargo("bench").env("RUSTFLAGS", "-Z bogus"), + execs().with_status(101)); +}); + +test!(env_rustflags_build_script { + // RUSTFLAGS should be passed to rustc for build scripts + // when --target is not specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + #[cfg(not(foo))] + fn main() { } + "#); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); +}); + +test!(env_rustflags_build_script_dep { + // RUSTFLAGS should be passed to rustc for build scripts + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + + [build-dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(not(foo))] + fn bar() { } + "#); + foo.build(); + bar.build(); + + assert_that(foo.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); +}); + +test!(env_rustflags_plugin { + // RUSTFLAGS should be passed to rustc for plugins + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + "#) + .file("src/lib.rs", r#" + fn main() { } + #[cfg(not(foo))] + fn main() { } + "#); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); +}); + +test!(env_rustflags_plugin_dep { + // RUSTFLAGS should be passed to rustc for plugins + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + + [dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", r#" + fn foo() { } + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + + [lib] + name = "bar" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(not(foo))] + fn bar() { } + "#); + foo.build(); + bar.build(); + + assert_that(foo.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); +}); + +test!(env_rustflags_normal_source_with_target { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .file("src/bin/a.rs", "fn main() {}") + .file("examples/b.rs", "fn main() {}") + .file("tests/c.rs", "#[test] fn f() { }") + .file("benches/d.rs", r#" + #![feature(test)] + extern crate test; + #[bench] fn run1(_ben: &mut test::Bencher) { }"#); + p.build(); + + let ref host = ::rustc_host(); + + // Use RUSTFLAGS to pass an argument that will generate an error + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--lib").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--bin=a").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus") + .arg("--example=b").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("test").env("RUSTFLAGS", "-Z bogus") + .arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("bench").env("RUSTFLAGS", "-Z bogus") + .arg("--target").arg(host), + execs().with_status(101)); +}); + +test!(env_rustflags_build_script_with_target { + // RUSTFLAGS should not be passed to rustc for build scripts + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + #[cfg(foo)] + fn main() { } + "#); + p.build(); + + let host = ::rustc_host(); + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(env_rustflags_build_script_dep_with_target { + // RUSTFLAGS should not be passed to rustc for build scripts + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + + [build-dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(foo)] + fn bar() { } + "#); + foo.build(); + bar.build(); + + let host = ::rustc_host(); + assert_that(foo.cargo("build").env("RUSTFLAGS", "--cfg foo") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(env_rustflags_plugin_with_target { + // RUSTFLAGS should not be passed to rustc for plugins + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + "#) + .file("src/lib.rs", r#" + fn main() { } + #[cfg(foo)] + fn main() { } + "#); + p.build(); + + let host = ::rustc_host(); + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(env_rustflags_plugin_dep_with_target { + // RUSTFLAGS should not be passed to rustc for plugins + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + + [dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", r#" + fn foo() { } + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + + [lib] + name = "bar" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(foo)] + fn bar() { } + "#); + foo.build(); + bar.build(); + + let host = ::rustc_host(); + assert_that(foo.cargo("build").env("RUSTFLAGS", "--cfg foo") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(env_rustflags_recompile { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build"), + execs().with_status(0)); + // Setting RUSTFLAGS forces a recompile + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus"), + execs().with_status(101)); +}); + +test!(env_rustflags_recompile2 { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); + // Setting RUSTFLAGS forces a recompile + assert_that(p.cargo("build").env("RUSTFLAGS", "-Z bogus"), + execs().with_status(101)); +}); + +test!(env_rustflags_no_recompile { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_stdout("").with_status(0)); +}); + +test!(build_rustflags_normal_source { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .file("src/bin/a.rs", "fn main() {}") + .file("examples/b.rs", "fn main() {}") + .file("tests/c.rs", "#[test] fn f() { }") + .file("benches/d.rs", r#" + #![feature(test)] + extern crate test; + #[bench] fn run1(_ben: &mut test::Bencher) { }"#) + .file(".cargo/config", r#" + [build] + rustflags = ["-Z", "bogus"] + "#); + p.build(); + + assert_that(p.cargo("build") + .arg("--lib"), + execs().with_status(101)); + assert_that(p.cargo("build") + .arg("--bin=a"), + execs().with_status(101)); + assert_that(p.cargo("build") + .arg("--example=b"), + execs().with_status(101)); + assert_that(p.cargo("test"), + execs().with_status(101)); + assert_that(p.cargo("bench"), + execs().with_status(101)); +}); + +test!(build_rustflags_build_script { + // RUSTFLAGS should be passed to rustc for build scripts + // when --target is not specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + #[cfg(not(foo))] + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + p.build(); + + assert_that(p.cargo("build"), + execs().with_status(0)); +}); + +test!(build_rustflags_build_script_dep { + // RUSTFLAGS should be passed to rustc for build scripts + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + + [build-dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(not(foo))] + fn bar() { } + "#); + foo.build(); + bar.build(); + + assert_that(foo.cargo("build"), + execs().with_status(0)); +}); + +test!(build_rustflags_plugin { + // RUSTFLAGS should be passed to rustc for plugins + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + "#) + .file("src/lib.rs", r#" + fn main() { } + #[cfg(not(foo))] + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + p.build(); + + assert_that(p.cargo("build"), + execs().with_status(0)); +}); + +test!(build_rustflags_plugin_dep { + // RUSTFLAGS should be passed to rustc for plugins + // when --target is not specified. + // In this test if --cfg foo is not passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + + [dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", r#" + fn foo() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + + [lib] + name = "bar" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(not(foo))] + fn bar() { } + "#); + foo.build(); + bar.build(); + + assert_that(foo.cargo("build"), + execs().with_status(0)); +}); + +test!(build_rustflags_normal_source_with_target { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .file("src/bin/a.rs", "fn main() {}") + .file("examples/b.rs", "fn main() {}") + .file("tests/c.rs", "#[test] fn f() { }") + .file("benches/d.rs", r#" + #![feature(test)] + extern crate test; + #[bench] fn run1(_ben: &mut test::Bencher) { }"#) + .file(".cargo/config", r#" + [build] + rustflags = ["-Z", "bogus"] + "#); + p.build(); + + let ref host = ::rustc_host(); + + // Use RUSTFLAGS to pass an argument that will generate an error + assert_that(p.cargo("build") + .arg("--lib").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("build") + .arg("--bin=a").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("build") + .arg("--example=b").arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("test") + .arg("--target").arg(host), + execs().with_status(101)); + assert_that(p.cargo("bench") + .arg("--target").arg(host), + execs().with_status(101)); +}); + +test!(build_rustflags_build_script_with_target { + // RUSTFLAGS should not be passed to rustc for build scripts + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + #[cfg(foo)] + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + p.build(); + + let host = ::rustc_host(); + assert_that(p.cargo("build") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(build_rustflags_build_script_dep_with_target { + // RUSTFLAGS should not be passed to rustc for build scripts + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + build = "build.rs" + + [build-dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", "") + .file("build.rs", r#" + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(foo)] + fn bar() { } + "#); + foo.build(); + bar.build(); + + let host = ::rustc_host(); + assert_that(foo.cargo("build") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(build_rustflags_plugin_with_target { + // RUSTFLAGS should not be passed to rustc for plugins + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + "#) + .file("src/lib.rs", r#" + fn main() { } + #[cfg(foo)] + fn main() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + p.build(); + + let host = ::rustc_host(); + assert_that(p.cargo("build") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(build_rustflags_plugin_dep_with_target { + // RUSTFLAGS should not be passed to rustc for plugins + // when --target is specified. + // In this test if --cfg foo is passed the build will fail. + let foo = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + + [lib] + name = "foo" + plugin = true + + [dependencies.bar] + path = "../bar" + "#) + .file("src/lib.rs", r#" + fn foo() { } + "#) + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + let bar = project("bar") + .file("Cargo.toml", r#" + [package] + name = "bar" + version = "0.0.1" + + [lib] + name = "bar" + "#) + .file("src/lib.rs", r#" + fn bar() { } + #[cfg(foo)] + fn bar() { } + "#); + foo.build(); + bar.build(); + + let host = ::rustc_host(); + assert_that(foo.cargo("build") + .arg("--target").arg(host), + execs().with_status(0)); +}); + +test!(build_rustflags_recompile { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build"), + execs().with_status(0)); + + // Setting RUSTFLAGS forces a recompile + let config = r#" + [build] + rustflags = ["-Z", "bogus"] + "#; + let config_file = paths::root().join("foo/.cargo/config"); + fs::create_dir_all(config_file.parent().unwrap()).unwrap(); + let mut config_file = File::create(config_file).unwrap(); + config_file.write_all(config.as_bytes()).unwrap(); + + assert_that(p.cargo("build"), + execs().with_status(101)); +}); + +test!(build_rustflags_recompile2 { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); + + // Setting RUSTFLAGS forces a recompile + let config = r#" + [build] + rustflags = ["-Z", "bogus"] + "#; + let config_file = paths::root().join("foo/.cargo/config"); + fs::create_dir_all(config_file.parent().unwrap()).unwrap(); + let mut config_file = File::create(config_file).unwrap(); + config_file.write_all(config.as_bytes()).unwrap(); + + assert_that(p.cargo("build"), + execs().with_status(101)); +}); + +test!(build_rustflags_no_recompile { + let p = project("foo") + .file("Cargo.toml", r#" + [package] + name = "foo" + version = "0.0.1" + "#) + .file("src/lib.rs", "") + .file(".cargo/config", r#" + [build] + rustflags = ["--cfg", "foo"] + "#); + p.build(); + + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_status(0)); + assert_that(p.cargo("build").env("RUSTFLAGS", "--cfg foo"), + execs().with_stdout("").with_status(0)); +}); diff --git a/tests/tests.rs b/tests/tests.rs index 6b252a3e2e7..c163e1aea25 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -45,6 +45,7 @@ mod test_cargo_compile_custom_build; mod test_cargo_compile_git_deps; mod test_cargo_compile_path_deps; mod test_cargo_compile_plugins; +mod test_cargo_compile_rustflags; mod test_cargo_cross_compile; mod test_cargo_doc; mod test_cargo_features;