]> granicus.if.org Git - clang/commitdiff
Driver: If unable to find the gcc tool chain, try the next OS rev.
authorDaniel Dunbar <daniel@zuster.org>
Tue, 20 Oct 2009 19:25:43 +0000 (19:25 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 20 Oct 2009 19:25:43 +0000 (19:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84656 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp

index 6acbc19beaa74e7713bb50309f52bf666e64b1ef..a0fefcdfc12a19166e28f93b8f01a35f2bf30c2c 100644 (file)
@@ -54,7 +54,6 @@ DarwinGCC::DarwinGCC(const HostInfo &Host, const llvm::Triple& Triple,
   GCCVersion[2] = _GCCVersion[2];
 
   // Set up the tool chain paths to match gcc.
-
   ToolChainDir = "i686-apple-darwin";
   ToolChainDir += llvm::utostr(DarwinVersion[0]);
   ToolChainDir += "/";
@@ -64,6 +63,24 @@ DarwinGCC::DarwinGCC(const HostInfo &Host, const llvm::Triple& Triple,
   ToolChainDir += '.';
   ToolChainDir += llvm::utostr(GCCVersion[2]);
 
+  // Try the next major version if that tool chain dir is invalid.
+  if (!llvm::sys::Path(ToolChainDir).exists()) {
+    std::string Next = "i686-apple-darwin";
+    Next += llvm::utostr(DarwinVersion[0] + 1);
+    Next += "/";
+    Next += llvm::utostr(GCCVersion[0]);
+    Next += '.';
+    Next += llvm::utostr(GCCVersion[1]);
+    Next += '.';
+    Next += llvm::utostr(GCCVersion[2]);
+
+    // Use that if it exists, otherwise hope the user isn't linking.
+    //
+    // FIXME: Drop dependency on gcc's tool chain.
+    if (llvm::sys::Path(Next).exists())
+      ToolChainDir = Next;
+  }
+
   std::string Path;
   if (getArchName() == "x86_64") {
     Path = getHost().getDriver().Dir;