diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs index d1b235f4691..df6378a970b 100644 --- a/src/bootstrap/sanity.rs +++ b/src/bootstrap/sanity.rs @@ -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() {