about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo>2019-01-11 13:37:08 +0100
committerMichael Woerister <michaelwoerister@posteo>2019-01-17 16:49:32 +0100
commitea4fb95dc9e234d35a7a94f6cdc37cb5103c35ed (patch)
tree89c224e14b67476141c8bb6a79287b0f81e5da7d /src/bootstrap
parent50b25105924a23f1070e916ce3bff4be5a7c9c58 (diff)
downloadrust-ea4fb95dc9e234d35a7a94f6cdc37cb5103c35ed.tar.gz
rust-ea4fb95dc9e234d35a7a94f6cdc37cb5103c35ed.zip
Support clang-based run-make tests in rustbuild.
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/test.rs35
1 files changed, 30 insertions, 5 deletions
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 2edc78ebaa9..ff66c75dc8c 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -1106,13 +1106,13 @@ impl Step for Compiletest {
                     }).to_string()
             })
         };
-        let lldb_exe = if builder.config.lldb_enabled && !target.contains("emscripten") {
+        let (lldb_exe, clang_exe) =
+            if builder.config.lldb_enabled && !target.contains("emscripten") {
             // Test against the lldb that was just built.
-            builder.llvm_out(target)
-                .join("bin")
-                .join("lldb")
+            (builder.llvm_out(target).join("bin").join("lldb"),
+             builder.llvm_out(target).join("bin").join("clang"))
         } else {
-            PathBuf::from("lldb")
+            (PathBuf::from("lldb"), PathBuf::from("clang"))
         };
         let lldb_version = Command::new(&lldb_exe)
             .arg("--version")
@@ -1127,6 +1127,31 @@ impl Step for Compiletest {
             }
         }
 
+        let clang_version = Command::new(&clang_exe)
+            .arg("--version")
+            .output()
+            .map(|output| { String::from_utf8_lossy(&output.stdout).to_string() })
+            .ok();
+        if let Some(ref vers) = clang_version {
+            cmd.arg("--clang-version").arg(vers);
+        }
+
+        if let Some(var) = env::var_os("RUSTBUILD_FORCE_CLANG_BASED_TESTS") {
+            match &var.to_string_lossy()[..] {
+                "1" | "yes" | "on" => {
+                    cmd.arg("--force-clang-based-tests");
+                }
+                "0" | "no" | "off" => {
+                    // Nothing to do.
+                }
+                other => {
+                    // Let's make sure typos don't get unnoticed
+                    panic!("Unrecognized option '{}' set in \
+                            RUSTBUILD_FORCE_CLANG_BASED_TESTS", other);
+                }
+            }
+        }
+
         // Get paths from cmd args
         let paths = match &builder.config.cmd {
             Subcommand::Test { ref paths, .. } => &paths[..],