diff options
author | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-22 01:06:46 +0000 |
---|---|---|
committer | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-22 01:06:46 +0000 |
commit | 856e4ff78d3f5edd969a6bc4d422998a9a7bfca7 (patch) | |
tree | 72f551c5deba17048dc91218989b3a87392e08f3 /clang/lib/Driver/ToolChains.cpp | |
parent | f09250f1b15cab86ed66a65315c18847de72ee5f (diff) | |
download | bcm5719-llvm-856e4ff78d3f5edd969a6bc4d422998a9a7bfca7.tar.gz bcm5719-llvm-856e4ff78d3f5edd969a6bc4d422998a9a7bfca7.zip |
Second half of, clang, AuroraUX toolchain support.
llvm-svn: 79713
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index eb304958c2d..9dac779a5f7 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -449,6 +449,48 @@ Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA) const { return *T; } +/// AuroraUX - AuroraUX tool chain which can call as(1) and ld(1) directly. + +AuroraUX::AuroraUX(const HostInfo &Host, const llvm::Triple& Triple) + : Generic_GCC(Host, Triple) { + + // Path mangling to find libexec + std::string Path(getHost().getDriver().Dir); + + Path += "/../libexec"; + getProgramPaths().push_back(Path); + getProgramPaths().push_back(getHost().getDriver().Dir); + + getFilePaths().push_back(getHost().getDriver().Dir + "/../lib"); + getFilePaths().push_back("/usr/lib"); + getFilePaths().push_back("/usr/sfw/lib"); + getFilePaths().push_back("/opt/gcc4/lib"); + +} + +Tool &AuroraUX::SelectTool(const Compilation &C, const JobAction &JA) const { + Action::ActionClass Key; + if (getHost().getDriver().ShouldUseClangCompiler(C, JA, getArchName())) + Key = Action::AnalyzeJobClass; + else + Key = JA.getKind(); + + Tool *&T = Tools[Key]; + if (!T) { + switch (Key) { + case Action::AssembleJobClass: + T = new tools::auroraux::Assemble(*this); break; + case Action::LinkJobClass: + T = new tools::auroraux::Link(*this); break; + default: + T = &Generic_GCC::SelectTool(C, JA); + } + } + + return *T; +} + + /// Linux toolchain (very bare-bones at the moment). Linux::Linux(const HostInfo &Host, const llvm::Triple& Triple) |