r273016 - Driver: introduce and use `-isystem-after` for cross-windows

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 17 19:19:07 PDT 2016


On Fri, Jun 17, 2016 at 12:45 PM, Rafael EspĂ­ndola <
rafael.espindola at gmail.com> wrote:

> Looks like this broke a few bots:
>

Yeah, sorry about that.  It should all be cleared up by now (I had a couple
of follow ups to make the test more generic).


>
> http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/7311
>
> Cheers,
> Rafael
>
>
> On 17 June 2016 at 13:23, Saleem Abdulrasool via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
> > Author: compnerd
> > Date: Fri Jun 17 12:23:16 2016
> > New Revision: 273016
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=273016&view=rev
> > Log:
> > Driver: introduce and use `-isystem-after` for cross-windows
> >
> > This mirrors the many other -i*after options to insert a new system
> search
> > directory at the end of the search path.  This makes it possible to
> actually
> > inject a search path after the resource dir.  This option is similar in
> spirit
> > to the /imsvc option in the clang-cl driver.  This is needed to properly
> use the
> > driver for Windows targets where the clang headers wrap some of the
> system
> > headers.
> >
> > This concept is actually useful on other targets (e.g. Linux) and would
> be
> > really easy to support on the core toolchain.
> >
> > Modified:
> >     cfe/trunk/include/clang/Driver/Options.td
> >     cfe/trunk/lib/Driver/CrossWindowsToolChain.cpp
> >     cfe/trunk/lib/Driver/Tools.cpp
> >     cfe/trunk/test/Driver/windows-cross.c
> >
> > Modified: cfe/trunk/include/clang/Driver/Options.td
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=273016&r1=273015&r2=273016&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/include/clang/Driver/Options.td (original)
> > +++ cfe/trunk/include/clang/Driver/Options.td Fri Jun 17 12:23:16 2016
> > @@ -1277,6 +1277,9 @@ def isysroot : JoinedOrSeparate<["-"], "
> >  def isystem : JoinedOrSeparate<["-"], "isystem">, Group<clang_i_Group>,
> >    Flags<[CC1Option]>,
> >    HelpText<"Add directory to SYSTEM include search path">,
> MetaVarName<"<directory>">;
> > +def isystem_after : JoinedOrSeparate<["-"], "isystem-after">,
> > +  Group<clang_i_Group>, Flags<[DriverOption]>,
> MetaVarName<"<directory>">,
> > +  HelpText<"Add directory to end of the SYSTEM include search path">;
> >  def iwithprefixbefore : JoinedOrSeparate<["-"], "iwithprefixbefore">,
> Group<clang_i_Group>,
> >    HelpText<"Set directory to include search path with prefix">,
> MetaVarName<"<dir>">,
> >    Flags<[CC1Option]>;
> >
> > Modified: cfe/trunk/lib/Driver/CrossWindowsToolChain.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/CrossWindowsToolChain.cpp?rev=273016&r1=273015&r2=273016&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Driver/CrossWindowsToolChain.cpp (original)
> > +++ cfe/trunk/lib/Driver/CrossWindowsToolChain.cpp Fri Jun 17 12:23:16
> 2016
> > @@ -62,6 +62,8 @@ AddClangSystemIncludeArgs(const llvm::op
> >      llvm::sys::path::append(ResourceDir, "include");
> >      addSystemInclude(DriverArgs, CC1Args, ResourceDir);
> >    }
> > +  for (const auto &P :
> DriverArgs.getAllArgValues(options::OPT_isystem_after))
> > +    addSystemInclude(DriverArgs, CC1Args, P);
> >    addExternCSystemInclude(DriverArgs, CC1Args, SysRoot +
> "/usr/include");
> >  }
> >
> >
> > Modified: cfe/trunk/lib/Driver/Tools.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273016&r1=273015&r2=273016&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Driver/Tools.cpp (original)
> > +++ cfe/trunk/lib/Driver/Tools.cpp Fri Jun 17 12:23:16 2016
> > @@ -502,6 +502,13 @@ void Clang::AddPreprocessingOptions(Comp
> >                                                         <<
> A->getAsString(Args);
> >          }
> >        }
> > +    } else if (A->getOption().matches(options::OPT_isystem_after)) {
> > +      // Handling of paths which must come late.  These entries are
> handled by
> > +      // the toolchain itself after the resource dir is inserted in the
> right
> > +      // search order.
> > +      // Do not claim the argument so that the use of the argument does
> not
> > +      // silently go unnoticed on toolchains which do not honour the
> option.
> > +      continue;
> >      }
> >
> >      // Not translated, render as usual.
> >
> > Modified: cfe/trunk/test/Driver/windows-cross.c
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/windows-cross.c?rev=273016&r1=273015&r2=273016&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/test/Driver/windows-cross.c (original)
> > +++ cfe/trunk/test/Driver/windows-cross.c Fri Jun 17 12:23:16 2016
> > @@ -67,3 +67,10 @@
> >  // CHECK-SANITIZE-TSAN: error: unsupported argument 'tsan' to option
> 'fsanitize='
> >  // CHECK-SANITIZE-TSAN-NOT: "-fsanitize={{.*}}"
> >
> > +// RUN: %clang -### -target armv7-windows-itanium -isystem-after
> "Windows Kits/10/Include/10.0.10586.0/ucrt" -isystem-after "Windows
> Kits/10/Include/10.0.10586.0/um" -isystem-after "Windows
> Kits/10/Include/10.0.10586.0/shared" -c %s -o /dev/null 2>&1 \
> > +// RUN:     | FileCheck %s --check-prefix CHECK-ISYSTEM-AFTER
> > +// CHECK-ISYSTEM-AFTER: "-internal-isystem" "{{.*}}/clang/3.9.0/include"
> > +// CHECK-ISYSTEM-AFTER: "-internal-isystem" "Windows
> Kits/10/Include/10.0.10586.0/ucrt"
> > +// CHECK-ISYSTEM-AFTER: "-internal-isystem" "Windows
> Kits/10/Include/10.0.10586.0/um"
> > +// CHECK-ISYSTEM-AFTER: "-internal-isystem" "Windows
> Kits/10/Include/10.0.10586.0/shared"
> > +
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>



-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160617/3cf1ea62/attachment-0001.html>


More information about the cfe-commits mailing list