summaryrefslogtreecommitdiff
blob: a1f7ce2a98fb316045bfc2c249366360faf4c259 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
diff -upNr a/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp
--- a/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-23 15:39:01.070411000 -0400
+++ b/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-23 15:39:22.371785000 -0400
@@ -1382,6 +1382,7 @@ enum LinuxDistro {
   DebianSqueeze,
   DebianWheezy,
   Exherbo,
+  Gentoo,
   RHEL4,
   RHEL5,
   RHEL6,
@@ -1403,6 +1404,10 @@ enum LinuxDistro {
   UnknownDistro
 };
 
+static bool IsGentoo(enum LinuxDistro Distro) {
+  return Distro == Gentoo;
+}
+
 static bool IsRedhat(enum LinuxDistro Distro) {
   return Distro == Fedora13 || Distro == Fedora14 ||
          Distro == Fedora15 || Distro == FedoraRawhide ||
@@ -1433,7 +1438,9 @@ static LinuxDistro DetectLinuxDistro(llv
     SmallVector<StringRef, 8> Lines;
     Data.split(Lines, "\n");
     for (unsigned int i = 0, s = Lines.size(); i < s; ++ i) {
-      if (Lines[i] == "DISTRIB_CODENAME=hardy")
+      if (Lines[i] == "DISTRIB_ID=\"Gentoo\"")
+        return Gentoo;
+      else if (Lines[i] == "DISTRIB_CODENAME=hardy")
         return UbuntuHardy;
       else if (Lines[i] == "DISTRIB_CODENAME=intrepid")
         return UbuntuIntrepid;
@@ -1597,6 +1604,9 @@ Linux::GCCInstallationDetector::GCCInsta
     GccInstallPath.append("/");
     GccInstallPath.append(CXX_INCLUDE_ARCH);
     GccInstallPath.append("/");
+    llvm::OwningPtr<llvm::MemoryBuffer> File;
+    if (!llvm::MemoryBuffer::getFile("/etc/env.d/gcc/config-" + D.DefaultHostTriple, File))
+      Version = File.get()->getBuffer().rsplit('-').second.substr(0,5);
     GccInstallPath.append(Version);
     GccParentLibPath = GccInstallPath + "/../../..";
     IsValid = true;