From f4534ee0a31784cfb504dd800a27b72b74348b1d Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 20 Oct 2009 19:25:43 +0000 Subject: Driver: If unable to find the gcc tool chain, try the next OS rev. llvm-svn: 84656 --- clang/lib/Driver/ToolChains.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'clang/lib/Driver/ToolChains.cpp') 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; -- cgit v1.2.3