diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-23 16:15:50 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-23 16:15:50 +0000 |
commit | 76ce7416ae11bd5e5d4f84f8e38efda00aef1b81 (patch) | |
tree | 4c62e817d228d9288566129e5d47f48ee803ed35 /clang/lib/Driver/ToolChains.cpp | |
parent | 52c278e54d45646a2224a7c45a6f2f9b8275cc9c (diff) | |
download | bcm5719-llvm-76ce7416ae11bd5e5d4f84f8e38efda00aef1b81.tar.gz bcm5719-llvm-76ce7416ae11bd5e5d4f84f8e38efda00aef1b81.zip |
Driver: Setup file and program search paths in tool chains.
llvm-svn: 67529
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 3165a8f395e..eac72ee65a7 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -9,11 +9,74 @@ #include "ToolChains.h" +#include "clang/Driver/Driver.h" +#include "clang/Driver/HostInfo.h" + +#include "llvm/ADT/StringExtras.h" +#include "llvm/System/Path.h" + using namespace clang::driver; using namespace clang::driver::toolchains; /// Darwin_X86 - Darwin tool chain for i386 and x86_64. +Darwin_X86::Darwin_X86(const HostInfo &Host, const char *Arch, + const char *Platform, const char *OS, + const unsigned (&_DarwinVersion)[3], + const unsigned (&_GCCVersion)[3]) + : ToolChain(Host, Arch, Platform, OS) +{ + DarwinVersion[0] = _DarwinVersion[0]; + DarwinVersion[1] = _DarwinVersion[1]; + DarwinVersion[2] = _DarwinVersion[2]; + GCCVersion[0] = _GCCVersion[0]; + GCCVersion[1] = _GCCVersion[1]; + GCCVersion[2] = _GCCVersion[2]; + + ToolChainDir = "i686-apple-darwin"; + ToolChainDir += llvm::utostr(DarwinVersion[0]); + ToolChainDir += "/"; + ToolChainDir += llvm::utostr(GCCVersion[0]); + ToolChainDir += '.'; + ToolChainDir += llvm::utostr(GCCVersion[1]); + ToolChainDir += '.'; + ToolChainDir += llvm::utostr(GCCVersion[2]); + + std::string Path; + if (getArchName() == "x86_64") { + Path = getHost().getDriver().Dir; + Path += "/../lib/gcc/"; + Path += getToolChainDir(); + Path += "/x86_64"; + getFilePaths().push_back(Path); + + Path = "/usr/lib/gcc/"; + Path += getToolChainDir(); + Path += "/x86_64"; + getFilePaths().push_back(Path); + } + + Path = getHost().getDriver().Dir; + Path += "/../lib/gcc/"; + Path += getToolChainDir(); + getFilePaths().push_back(Path); + + Path = "/usr/lib/gcc/"; + Path += getToolChainDir(); + getFilePaths().push_back(Path); + + Path = getHost().getDriver().Dir; + Path += "/../libexec/gcc/"; + Path += getToolChainDir(); + getProgramPaths().push_back(Path); + + Path = "/usr/libexec/gcc/"; + Path += getToolChainDir(); + getProgramPaths().push_back(Path); + + getProgramPaths().push_back(getHost().getDriver().Dir); +} + Darwin_X86::~Darwin_X86() { // Free tool implementations. for (llvm::DenseMap<unsigned, Tool*>::iterator @@ -84,6 +147,13 @@ const char *Darwin_X86::GetForcedPicModel() const { /// all subcommands; this relies on gcc translating the majority of /// command line options. +Generic_GCC::Generic_GCC(const HostInfo &Host, const char *Arch, + const char *Platform, const char *OS) + : ToolChain(Host, Arch, Platform, OS) +{ + getProgramPaths().push_back(getHost().getDriver().Dir); +} + Generic_GCC::~Generic_GCC() { // Free tool implementations. for (llvm::DenseMap<unsigned, Tool*>::iterator |