summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-10-20 19:25:43 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-10-20 19:25:43 +0000
commitf4534ee0a31784cfb504dd800a27b72b74348b1d (patch)
tree7628a715991f06c23f56f6e96657c276e9db740f /clang/lib/Driver/ToolChains.cpp
parente4f2b2a8ac82d023f6b4bf7a2752009955476132 (diff)
downloadbcm5719-llvm-f4534ee0a31784cfb504dd800a27b72b74348b1d.tar.gz
bcm5719-llvm-f4534ee0a31784cfb504dd800a27b72b74348b1d.zip
Driver: If unable to find the gcc tool chain, try the next OS rev.
llvm-svn: 84656
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 6acbc19beaa..a0fefcdfc12 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -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;
OpenPOWER on IntegriCloud