summaryrefslogtreecommitdiffstats
path: root/build/build-clang/loosen-msvc-detection.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/loosen-msvc-detection.patch')
-rw-r--r--build/build-clang/loosen-msvc-detection.patch22
1 files changed, 22 insertions, 0 deletions
diff --git a/build/build-clang/loosen-msvc-detection.patch b/build/build-clang/loosen-msvc-detection.patch
new file mode 100644
index 0000000000..03cd72e929
--- /dev/null
+++ b/build/build-clang/loosen-msvc-detection.patch
@@ -0,0 +1,22 @@
+In a proper VS install, the path to cl.exe looks like:
+...\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe
+
+In our automation, the path is just:
+...\VC\bin\HostX64\x64\cl.exe
+
+Clang tries to do some sanity-checking to make sure that the cl.exe it finds is the Microsoft compiler and not some other program. But the checks are a little too strict for us, so just look for "bin\Host*\*\cl.exe".
+
+diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp
+index 7978a6941cb..0159e89fa27 100644
+--- a/clang/lib/Driver/ToolChains/MSVC.cpp
++++ b/clang/lib/Driver/ToolChains/MSVC.cpp
+@@ -152,8 +152,7 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
+ // path components with these prefixes when walking backwards through
+ // the path.
+ // Note: empty strings match anything.
+- llvm::StringRef ExpectedPrefixes[] = {"", "Host", "bin", "",
+- "MSVC", "Tools", "VC"};
++ llvm::StringRef ExpectedPrefixes[] = {"", "Host", "bin"};
+
+ auto It = llvm::sys::path::rbegin(PathEntry);
+ auto End = llvm::sys::path::rend(PathEntry);