diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2012-03-13 00:02:21 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2012-03-13 00:02:21 +0000 |
commit | 8ce6d214aef65ea1421eb11e84980dfa4da429b8 (patch) | |
tree | 129e3ca7f37c203bc5251fd82c44d68ce4b4e8a6 /lib/Driver | |
parent | c38503b4c1cda42154700016d60c6467af438a15 (diff) |
[msvc] Honor %INCLUDE%. It should know essential search paths with vcvarsall.bat.
FYI,
On VS10, %INCLUDE% contains;
(VS10)\VC\INCLUDE
(VS10)\VC\ATLMFC\INCLUDE
(SDK70A)\include
On VS11,
(VS11)\VC\INCLUDE
(VS11)\VC\ATLMFC\INCLUDE
(SDK80)\include\shared
(SDK80)\include\um
(SDK80)\include\winrt
FIXME: It may be enabled also on mingw.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152589 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver')
-rw-r--r-- | lib/Driver/WindowsToolChain.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/Driver/WindowsToolChain.cpp b/lib/Driver/WindowsToolChain.cpp index 70bd4f1fc3..6827034ef4 100644 --- a/lib/Driver/WindowsToolChain.cpp +++ b/lib/Driver/WindowsToolChain.cpp @@ -318,10 +318,26 @@ void Windows::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (DriverArgs.hasArg(options::OPT_nostdlibinc)) return; +#ifdef _MSC_VER + // Honor %INCLUDE%. It should know essential search paths with vcvarsall.bat. + if (const char *cl_include_dir = getenv("INCLUDE")) { + SmallVector<StringRef, 8> Dirs; + StringRef(cl_include_dir).split(Dirs, ";"); + int n = 0; + for (SmallVectorImpl<StringRef>::iterator I = Dirs.begin(), E = Dirs.end(); + I != E; ++I) { + StringRef d = *I; + if (d.size() == 0) + continue; + ++n; + addSystemInclude(DriverArgs, CC1Args, d); + } + if (n) return; + } + std::string VSDir; std::string WindowsSDKDir; -#ifdef _MSC_VER // When built with access to the proper Windows APIs, try to actually find // the correct include paths first. if (getVisualStudioDir(VSDir)) { |