]> git.lizzy.rs Git - rust.git/commitdiff
rustbuild: Sanity-check cmake for sanitizers too
authorJosh Stone <jistone@redhat.com>
Tue, 2 May 2017 17:58:47 +0000 (10:58 -0700)
committerJosh Stone <jistone@redhat.com>
Tue, 2 May 2017 17:58:47 +0000 (10:58 -0700)
It's possible to build the sanitizers when using an external LLVM, but
we still need cmake for this.  Extend the sanity check to look for cmake
whenever sanitizers are enabled too.

src/bootstrap/sanity.rs

index d1b235f4691dca7e476e4f862849b1f93bfe2c88..df6378a970bd4363a0a0065713ab1987adfdadd2 100644 (file)
@@ -69,22 +69,21 @@ pub fn check(build: &mut Build) {
         need_cmd("git".as_ref());
     }
 
-    // We need cmake, but only if we're actually building LLVM
-    for host in build.config.host.iter() {
-        if let Some(config) = build.config.target_config.get(host) {
-            if config.llvm_config.is_some() {
-                continue
-            }
-        }
+    // We need cmake, but only if we're actually building LLVM or sanitizers.
+    let building_llvm = build.config.host.iter()
+        .filter_map(|host| build.config.target_config.get(host))
+        .any(|config| config.llvm_config.is_none());
+    if building_llvm || build.config.sanitizers {
         need_cmd("cmake".as_ref());
-        if build.config.ninja {
-            // Some Linux distros rename `ninja` to `ninja-build`.
-            // CMake can work with either binary name.
-            if have_cmd("ninja-build".as_ref()).is_none() {
-                need_cmd("ninja".as_ref());
-            }
+    }
+
+    // Ninja is currently only used for LLVM itself.
+    if building_llvm && build.config.ninja {
+        // Some Linux distros rename `ninja` to `ninja-build`.
+        // CMake can work with either binary name.
+        if have_cmd("ninja-build".as_ref()).is_none() {
+            need_cmd("ninja".as_ref());
         }
-        break
     }
 
     if build.config.python.is_none() {