Author: rafael Date: Wed Sep 9 08:36:00 2015 New Revision: 247144 URL: http://llvm.org/viewvc/llvm-project?rev=247144&view=rev Log: [Solaris] Use the GCC Installation detector to add the C++ include paths.
Patch by Xan López! Added: cfe/trunk/test/Driver/solaris-header-search.cpp 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=247144&r1=247143&r2=247144&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Sep 9 08:36:00 2015 @@ -2962,6 +2962,31 @@ Tool *Solaris::buildAssembler() const { Tool *Solaris::buildLinker() const { return new tools::solaris::Linker(*this); } +void Solaris::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, + ArgStringList &CC1Args) const { + if (DriverArgs.hasArg(options::OPT_nostdlibinc) || + DriverArgs.hasArg(options::OPT_nostdincxx)) + return; + + // Include the support directory for things like xlocale and fudged system + // headers. + addSystemInclude(DriverArgs, CC1Args, "/usr/include/c++/v1/support/solaris"); + + if (GCCInstallation.isValid()) { + GCCVersion Version = GCCInstallation.getVersion(); + addSystemInclude(DriverArgs, CC1Args, + getDriver().SysRoot + "/usr/gcc/" + + Version.MajorStr + "." + + Version.MinorStr + + "/include/c++/" + Version.Text); + addSystemInclude(DriverArgs, CC1Args, + getDriver().SysRoot + "/usr/gcc/" + Version.MajorStr + + "." + Version.MinorStr + "/include/c++/" + + Version.Text + "/" + + GCCInstallation.getTriple().str()); + } +} + /// Distribution (very bare-bones at the moment). enum Distro { Modified: cfe/trunk/lib/Driver/ToolChains.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247144&r1=247143&r2=247144&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.h (original) +++ cfe/trunk/lib/Driver/ToolChains.h Wed Sep 9 08:36:00 2015 @@ -527,6 +527,10 @@ public: bool IsIntegratedAssemblerDefault() const override { return true; } + void AddClangCXXStdlibIncludeArgs( + const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override; + protected: Tool *buildAssembler() const override; Tool *buildLinker() const override; Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=247144&r1=247143&r2=247144&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original) +++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Wed Sep 9 08:36:00 2015 @@ -404,10 +404,6 @@ AddDefaultCPlusPlusIncludePaths(const ll AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3", "", "", "", triple); break; - case llvm::Triple::Solaris: - AddGnuCPlusPlusIncludePaths("/usr/gcc/4.5/include/c++/4.5.2/", - "i386-pc-solaris2.11", "", "", triple); - break; default: break; } @@ -453,11 +449,6 @@ void InitHeaderSearch::AddDefaultInclude AddUnmappedPath(P, CXXSystem, false); } } - // On Solaris, include the support directory for things like xlocale and - // fudged system headers. - if (triple.getOS() == llvm::Triple::Solaris) - AddPath("/usr/include/c++/v1/support/solaris", CXXSystem, false); - AddPath("/usr/include/c++/v1", CXXSystem, false); } else { AddDefaultCPlusPlusIncludePaths(triple, HSOpts); Added: cfe/trunk/test/Driver/solaris-header-search.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-header-search.cpp?rev=247144&view=auto ============================================================================== --- cfe/trunk/test/Driver/solaris-header-search.cpp (added) +++ cfe/trunk/test/Driver/solaris-header-search.cpp Wed Sep 9 08:36:00 2015 @@ -0,0 +1,11 @@ +// Test that the C++ headers are found. +// +// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \ +// RUN: --target=sparc-sun-solaris2.11 \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \ +// RUN: | FileCheck %s +// CHECK: "{{[^"]*}}clang{{[^"]*}}" "-cc1" +// CHECK: "-internal-isystem" "{{.*}}/usr/include/c++/v1/support/solaris" +// CHECK: "-internal-isystem" "{{.*}}/usr/gcc/4.8/include/c++/4.8.2" +// CHECK: "-internal-isystem" "{{.*}}/usr/gcc/4.8/include/c++/4.8.2/sparc-sun-solaris2.11" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits