[PATCH] D45422: [Driver] Allow drivers to add multiple libc++ include paths
This revision was automatically updated to reflect the committed changes. Closed by commit rL329748: [Driver] Allow drivers to add multiple libc++ include paths (authored by phosek, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D45422?vs=141579=141892#toc Repository: rL LLVM https://reviews.llvm.org/D45422 Files: cfe/trunk/lib/Driver/ToolChains/BareMetal.cpp cfe/trunk/lib/Driver/ToolChains/BareMetal.h cfe/trunk/lib/Driver/ToolChains/CloudABI.cpp cfe/trunk/lib/Driver/ToolChains/CloudABI.h cfe/trunk/lib/Driver/ToolChains/Contiki.h cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/lib/Driver/ToolChains/Gnu.h cfe/trunk/lib/Driver/ToolChains/Haiku.cpp cfe/trunk/lib/Driver/ToolChains/Haiku.h cfe/trunk/lib/Driver/ToolChains/Lanai.h cfe/trunk/lib/Driver/ToolChains/Linux.cpp cfe/trunk/lib/Driver/ToolChains/Linux.h cfe/trunk/lib/Driver/ToolChains/MipsLinux.cpp cfe/trunk/lib/Driver/ToolChains/MipsLinux.h cfe/trunk/lib/Driver/ToolChains/Myriad.cpp cfe/trunk/lib/Driver/ToolChains/Myriad.h cfe/trunk/lib/Driver/ToolChains/NaCl.cpp cfe/trunk/lib/Driver/ToolChains/NaCl.h cfe/trunk/lib/Driver/ToolChains/NetBSD.cpp cfe/trunk/lib/Driver/ToolChains/NetBSD.h cfe/trunk/lib/Driver/ToolChains/PS4CPU.h Index: cfe/trunk/lib/Driver/ToolChains/BareMetal.h === --- cfe/trunk/lib/Driver/ToolChains/BareMetal.h +++ cfe/trunk/lib/Driver/ToolChains/BareMetal.h @@ -53,7 +53,6 @@ void addClangTargetOptions(const llvm::opt::ArgList , llvm::opt::ArgStringList , Action::OffloadKind DeviceOffloadKind) const override; - std::string findLibCxxIncludePath(ToolChain::CXXStdlibType LibType) const; void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; Index: cfe/trunk/lib/Driver/ToolChains/Linux.cpp === --- cfe/trunk/lib/Driver/ToolChains/Linux.cpp +++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp @@ -775,7 +775,8 @@ return MaxVersion ? (base + "/" + MaxVersionString).str() : ""; } -std::string Linux::findLibCxxIncludePath() const { +void Linux::addLibCxxIncludePaths(const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const { const std::string LibCXXIncludePathCandidates[] = { DetectLibcxxIncludePath(getDriver().Dir + "/../include/c++"), // If this is a development, non-installed, clang, libcxx will @@ -787,9 +788,9 @@ if (IncludePath.empty() || !getVFS().exists(IncludePath)) continue; // Use the first candidate that exists. -return IncludePath; +addSystemInclude(DriverArgs, CC1Args, IncludePath); +return; } - return ""; } void Linux::addLibStdCxxIncludePaths(const llvm::opt::ArgList , Index: cfe/trunk/lib/Driver/ToolChains/Gnu.h === --- cfe/trunk/lib/Driver/ToolChains/Gnu.h +++ cfe/trunk/lib/Driver/ToolChains/Gnu.h @@ -316,7 +316,9 @@ const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; - virtual std::string findLibCxxIncludePath() const; + virtual void + addLibCxxIncludePaths(const llvm::opt::ArgList , +llvm::opt::ArgStringList ) const; virtual void addLibStdCxxIncludePaths(const llvm::opt::ArgList , llvm::opt::ArgStringList ) const; Index: cfe/trunk/lib/Driver/ToolChains/MipsLinux.h === --- cfe/trunk/lib/Driver/ToolChains/MipsLinux.h +++ cfe/trunk/lib/Driver/ToolChains/MipsLinux.h @@ -31,7 +31,9 @@ CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList ) const override; - std::string findLibCxxIncludePath() const override; + void addLibCxxIncludePaths( + const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const override; void AddCXXStdlibLibArgs(const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; Index: cfe/trunk/lib/Driver/ToolChains/Myriad.h === --- cfe/trunk/lib/Driver/ToolChains/Myriad.h +++ cfe/trunk/lib/Driver/ToolChains/Myriad.h @@ -76,7 +76,9 @@ void AddClangSystemIncludeArgs(const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; - std::string findLibCxxIncludePath() const override; + void addLibCxxIncludePaths( + const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const override; void addLibStdCxxIncludePaths( const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; Index: cfe/trunk/lib/Driver/ToolChains/Lanai.h === --- cfe/trunk/lib/Driver/ToolChains/Lanai.h +++
[PATCH] D45422: [Driver] Allow drivers to add multiple libc++ include paths
rnk accepted this revision. rnk added a comment. This revision is now accepted and ready to land. lgtm Repository: rC Clang https://reviews.llvm.org/D45422 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D45422: [Driver] Allow drivers to add multiple libc++ include paths
phosek created this revision. phosek added reviewers: rsmith, dlj, rnk. Herald added subscribers: cfe-commits, sdardis, dschuff. Herald added a reviewer: EricWF. This allows toolchain drivers to add multiple libc++ include paths akin to libstdc++. This is useful in multiarch setup when some headers might be in target specific include directory. There should be no functional change. Repository: rC Clang https://reviews.llvm.org/D45422 Files: clang/lib/Driver/ToolChains/BareMetal.cpp clang/lib/Driver/ToolChains/BareMetal.h clang/lib/Driver/ToolChains/CloudABI.cpp clang/lib/Driver/ToolChains/CloudABI.h clang/lib/Driver/ToolChains/Contiki.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Gnu.h clang/lib/Driver/ToolChains/Haiku.cpp clang/lib/Driver/ToolChains/Haiku.h clang/lib/Driver/ToolChains/Lanai.h clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/MipsLinux.cpp clang/lib/Driver/ToolChains/MipsLinux.h clang/lib/Driver/ToolChains/Myriad.cpp clang/lib/Driver/ToolChains/Myriad.h clang/lib/Driver/ToolChains/NaCl.cpp clang/lib/Driver/ToolChains/NaCl.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/NetBSD.h clang/lib/Driver/ToolChains/PS4CPU.h Index: clang/lib/Driver/ToolChains/PS4CPU.h === --- clang/lib/Driver/ToolChains/PS4CPU.h +++ clang/lib/Driver/ToolChains/PS4CPU.h @@ -61,7 +61,9 @@ const llvm::opt::ArgList ); // No support for finding a C++ standard library yet. - std::string findLibCxxIncludePath() const override { return ""; } + void addLibCxxIncludePaths( + const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const override {} void addLibStdCxxIncludePaths( const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override {} Index: clang/lib/Driver/ToolChains/NetBSD.h === --- clang/lib/Driver/ToolChains/NetBSD.h +++ clang/lib/Driver/ToolChains/NetBSD.h @@ -60,7 +60,9 @@ CXXStdlibType GetDefaultCXXStdlibType() const override; - std::string findLibCxxIncludePath() const override; + void addLibCxxIncludePaths( + const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const override; void addLibStdCxxIncludePaths( const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; Index: clang/lib/Driver/ToolChains/NetBSD.cpp === --- clang/lib/Driver/ToolChains/NetBSD.cpp +++ clang/lib/Driver/ToolChains/NetBSD.cpp @@ -406,8 +406,10 @@ return ToolChain::CST_Libstdcxx; } -std::string NetBSD::findLibCxxIncludePath() const { - return getDriver().SysRoot + "/usr/include/c++/"; +void NetBSD::addLibCxxIncludePaths(const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const { + addSystemInclude(DriverArgs, CC1Args, + getDriver().SysRoot + "/usr/include/c++/"); } void NetBSD::addLibStdCxxIncludePaths(const llvm::opt::ArgList , Index: clang/lib/Driver/ToolChains/NaCl.h === --- clang/lib/Driver/ToolChains/NaCl.h +++ clang/lib/Driver/ToolChains/NaCl.h @@ -53,7 +53,9 @@ void AddClangSystemIncludeArgs(const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; - std::string findLibCxxIncludePath() const override; + void addLibCxxIncludePaths( + const llvm::opt::ArgList , + llvm::opt::ArgStringList ) const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList ) const override; Index: clang/lib/Driver/ToolChains/NaCl.cpp === --- clang/lib/Driver/ToolChains/NaCl.cpp +++ clang/lib/Driver/ToolChains/NaCl.cpp @@ -309,25 +309,29 @@ CmdArgs.push_back("-lc++"); } -std::string NaClToolChain::findLibCxxIncludePath() const { +void NaClToolChain::addLibCxxIncludePaths( +const llvm::opt::ArgList , +llvm::opt::ArgStringList ) const { const Driver = getDriver(); SmallString<128> P(D.Dir + "/../"); switch (getTriple().getArch()) { case llvm::Triple::arm: llvm::sys::path::append(P, "arm-nacl/include/c++/v1"); -return P.str(); +addSystemInclude(DriverArgs, CC1Args, P.str()); +break; case llvm::Triple::x86: llvm::sys::path::append(P, "x86_64-nacl/include/c++/v1"); -return P.str(); +addSystemInclude(DriverArgs, CC1Args, P.str()); +break; case llvm::Triple::x86_64: llvm::sys::path::append(P, "x86_64-nacl/include/c++/v1"); -return P.str(); +addSystemInclude(DriverArgs, CC1Args, P.str()); +break; case llvm::Triple::mipsel: llvm::sys::path::append(P, "mipsel-nacl/include/c++/v1"); -return P.str(); - default: -return ""; +addSystemInclude(DriverArgs, CC1Args,