r180766 - Add support for -stdlib=libc++ in the NetBSD toolchain.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Mon Apr 29 18:41:11 PDT 2013


please add a test.

On 29 April 2013 21:21, Joerg Sonnenberger <joerg at bec.de> wrote:
> Author: joerg
> Date: Mon Apr 29 20:21:43 2013
> New Revision: 180766
>
> URL: http://llvm.org/viewvc/llvm-project?rev=180766&view=rev
> Log:
> Add support for -stdlib=libc++ in the NetBSD toolchain.
>
> Modified:
>     cfe/trunk/lib/Driver/ToolChains.cpp
>     cfe/trunk/lib/Driver/ToolChains.h
>     cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
>
> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=180766&r1=180765&r2=180766&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Apr 29 20:21:43 2013
> @@ -1861,6 +1861,42 @@ Tool *NetBSD::buildLinker() const {
>    return new tools::netbsd::Link(*this);
>  }
>
> +ToolChain::CXXStdlibType
> +NetBSD::GetCXXStdlibType(const ArgList &Args) const {
> +  if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) {
> +    StringRef Value = A->getValue();
> +    if (Value == "libstdc++")
> +      return ToolChain::CST_Libstdcxx;
> +    if (Value == "libc++")
> +      return ToolChain::CST_Libcxx;
> +
> +    getDriver().Diag(diag::err_drv_invalid_stdlib_name)
> +      << A->getAsString(Args);
> +  }
> +
> +  return ToolChain::CST_Libstdcxx;
> +}
> +
> +void NetBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
> +                                          ArgStringList &CC1Args) const {
> +  if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
> +      DriverArgs.hasArg(options::OPT_nostdincxx))
> +    return;
> +
> +  switch (GetCXXStdlibType(DriverArgs)) {
> +  case ToolChain::CST_Libcxx:
> +    addSystemInclude(DriverArgs, CC1Args,
> +                     getDriver().SysRoot + "/usr/include/c++/");
> +    break;
> +  case ToolChain::CST_Libstdcxx:
> +    addSystemInclude(DriverArgs, CC1Args,
> +                     getDriver().SysRoot + "/usr/include/g++");
> +    addSystemInclude(DriverArgs, CC1Args,
> +                     getDriver().SysRoot + "/usr/include/g++/backward");
> +    break;
> +  }
> +}
> +
>  /// Minix - Minix tool chain which can call as(1) and ld(1) directly.
>
>  Minix::Minix(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
>
> Modified: cfe/trunk/lib/Driver/ToolChains.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=180766&r1=180765&r2=180766&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.h (original)
> +++ cfe/trunk/lib/Driver/ToolChains.h Mon Apr 29 20:21:43 2013
> @@ -474,6 +474,11 @@ public:
>    virtual bool IsMathErrnoDefault() const { return false; }
>    virtual bool IsObjCNonFragileABIDefault() const { return true; }
>
> +  virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const;
> +
> +  virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
> +                                            ArgStringList &CC1Args) const;
> +
>  protected:
>    virtual Tool *buildAssembler() const;
>    virtual Tool *buildLinker() const;
>
> Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=180766&r1=180765&r2=180766&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Mon Apr 29 20:21:43 2013
> @@ -421,9 +421,6 @@ AddDefaultCPlusPlusIncludePaths(const ll
>      // FreeBSD 7.3
>      AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple);
>      break;
> -  case llvm::Triple::NetBSD:
> -    AddGnuCPlusPlusIncludePaths("/usr/include/g++", "", "", "", triple);
> -    break;
>    case llvm::Triple::OpenBSD: {
>      std::string t = triple.getTriple();
>      if (t.substr(0, 6) == "x86_64")
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list