diff options
-rw-r--r-- | clang/include/clang/Driver/CLCompatOptions.td | 3 | ||||
-rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | clang/lib/Driver/MSVCToolChain.cpp | 4 | ||||
-rw-r--r-- | clang/test/Driver/cl-options.c | 7 | ||||
-rw-r--r-- | clang/test/Driver/cl-pch-search.cpp | 4 |
5 files changed, 14 insertions, 6 deletions
diff --git a/clang/include/clang/Driver/CLCompatOptions.td b/clang/include/clang/Driver/CLCompatOptions.td index b2f12c94059..a91a3fbbd84 100644 --- a/clang/include/clang/Driver/CLCompatOptions.td +++ b/clang/include/clang/Driver/CLCompatOptions.td @@ -210,6 +210,9 @@ def _SLASH_GX : CLFlag<"GX">, HelpText<"Enable exception handling">; def _SLASH_GX_ : CLFlag<"GX-">, HelpText<"Enable exception handling">; +def _SLASH_imsvc : CLJoinedOrSeparate<"imsvc">, + HelpText<"Add directory to system include search path, as if part of %INCLUDE%">, + MetaVarName<"<dir>">; def _SLASH_LD : CLFlag<"LD">, HelpText<"Create DLL">; def _SLASH_LDd : CLFlag<"LDd">, HelpText<"Create debug DLL">; def _SLASH_link : CLRemainingArgs<"link">, diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index dadb475f43e..20c2677254e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1254,7 +1254,7 @@ def iquote : JoinedOrSeparate<["-"], "iquote">, Group<clang_i_Group>, Flags<[CC1 def isysroot : JoinedOrSeparate<["-"], "isysroot">, Group<clang_i_Group>, Flags<[CC1Option]>, HelpText<"Set the system root directory (usually /)">, MetaVarName<"<dir>">; def isystem : JoinedOrSeparate<["-"], "isystem">, Group<clang_i_Group>, - Flags<[CC1Option, CoreOption]>, + Flags<[CC1Option]>, HelpText<"Add directory to SYSTEM include search path">, MetaVarName<"<directory>">; def iwithprefixbefore : JoinedOrSeparate<["-"], "iwithprefixbefore">, Group<clang_i_Group>, HelpText<"Set directory to include search path with prefix">, MetaVarName<"<dir>">, diff --git a/clang/lib/Driver/MSVCToolChain.cpp b/clang/lib/Driver/MSVCToolChain.cpp index e0552903aee..7f84d1f9d94 100644 --- a/clang/lib/Driver/MSVCToolChain.cpp +++ b/clang/lib/Driver/MSVCToolChain.cpp @@ -527,6 +527,10 @@ void MSVCToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, "include"); } + // Add %INCLUDE%-like directories from the -imsvc flag. + for (const auto &Path : DriverArgs.getAllArgValues(options::OPT__SLASH_imsvc)) + addSystemInclude(DriverArgs, CC1Args, Path); + if (DriverArgs.hasArg(options::OPT_nostdlibinc)) return; diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index c9e857332d7..4f82c5ade17 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -82,6 +82,12 @@ // RUN: %clang_cl /I myincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_I %s // SLASH_I: "-I" "myincludedir" +// RUN: %clang_cl /imsvcmyincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_imsvc %s +// RUN: %clang_cl /imsvc myincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_imsvc %s +// Clang's resource header directory should be first: +// SLASH_imsvc: "-internal-isystem" "{{[^"]*}}lib{{.}}clang{{[^"]*}}include" +// SLASH_imsvc: "-internal-isystem" "myincludedir" + // RUN: %clang_cl /J -### -- %s 2>&1 | FileCheck -check-prefix=J %s // J: -fno-signed-char @@ -452,7 +458,6 @@ // RUN: -fno-ms-compatibility \ // RUN: -fms-extensions \ // RUN: -fno-ms-extensions \ -// RUN: -isystem=some/path \ // RUN: -mllvm -disable-llvm-optzns \ // RUN: -Wunused-variable \ // RUN: -fmacro-backtrace-limit=0 \ diff --git a/clang/test/Driver/cl-pch-search.cpp b/clang/test/Driver/cl-pch-search.cpp index fd503f1f801..118cf19efbd 100644 --- a/clang/test/Driver/cl-pch-search.cpp +++ b/clang/test/Driver/cl-pch-search.cpp @@ -4,7 +4,3 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. // RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp - -// Check that i_group flags other than -include aren't skipped (e.g. -isystem). -#include "header0.h" -// RUN: %clang_cl -Werror -isystem%S/Inputs /Yupchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %s |