]> granicus.if.org Git - clang/commitdiff
[Myriad] Find libc++ headers next to clang binary
authorDouglas Katzman <dougk@google.com>
Wed, 19 Oct 2016 17:30:40 +0000 (17:30 +0000)
committerDouglas Katzman <dougk@google.com>
Wed, 19 Oct 2016 17:30:40 +0000 (17:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284617 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp
test/Driver/myriad-toolchain.c

index 1afe6e45255ff13b7a213031755d26347f21b4d3..558f47306bf1b4270ff2137cfdf115bc16467cad 100644 (file)
@@ -5130,15 +5130,19 @@ void MyriadToolChain::AddClangCXXStdlibIncludeArgs(
       DriverArgs.hasArg(options::OPT_nostdincxx))
     return;
 
-  // Only libstdc++, for now.
-  StringRef LibDir = GCCInstallation.getParentLibPath();
-  const GCCVersion &Version = GCCInstallation.getVersion();
-  StringRef TripleStr = GCCInstallation.getTriple().str();
-  const Multilib &Multilib = GCCInstallation.getMultilib();
-
-  addLibStdCXXIncludePaths(
-      LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
-      "", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, CC1Args);
+  if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) {
+    std::string Path(getDriver().getInstalledDir());
+    Path += "/../include/c++/v1";
+    addSystemInclude(DriverArgs, CC1Args, Path);
+  } else {
+    StringRef LibDir = GCCInstallation.getParentLibPath();
+    const GCCVersion &Version = GCCInstallation.getVersion();
+    StringRef TripleStr = GCCInstallation.getTriple().str();
+    const Multilib &Multilib = GCCInstallation.getMultilib();
+    addLibStdCXXIncludePaths(
+        LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
+        "", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, CC1Args);
+  }
 }
 
 // MyriadToolChain handles several triples:
index f4361070154632e977040a61d7131e931def3268..e7de6a8fe5ae6cb9481455c4e3b0fbe4e013b725 100644 (file)
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
 // PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
-// RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck %s --check-prefix=STDLIBCXX
-// STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
+// RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck %s --check-prefix=LIBSTDCXX
+// LIBSTDCXX: "-lstdc++" "-lc" "-lgcc"
+
+// RUN: %clang -stdlib=libc++ -### -target sparcel-myriad -S -x c++ %s 2>&1 | FileCheck %s -check-prefix=LIBCXX
+// LIBCXX: "-internal-isystem" "{{.*}}/../include/c++/v1"
 
 // RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s --check-prefix=NOSTDLIB
 // NOSTDLIB-NOT: crtbegin.o