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/HostInfo.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/HostInfo.cpp')
-rw-r--r-- | clang/lib/Driver/HostInfo.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/clang/lib/Driver/HostInfo.cpp b/clang/lib/Driver/HostInfo.cpp index 602a9771350..1b64212d887 100644 --- a/clang/lib/Driver/HostInfo.cpp +++ b/clang/lib/Driver/HostInfo.cpp @@ -285,6 +285,55 @@ ToolChain *OpenBSDHostInfo::getToolChain(const ArgList &Args, return TC; } +// AuroraUX Host Info + +/// AuroraUXHostInfo - AuroraUX host information implementation. +class AuroraUXHostInfo : public HostInfo { + /// Cache of tool chains we have created. + mutable llvm::StringMap<ToolChain*> ToolChains; + +public: + AuroraUXHostInfo(const Driver &D, const llvm::Triple& Triple) + : HostInfo(D, Triple) {} + ~AuroraUXHostInfo(); + + virtual bool useDriverDriver() const; + + virtual types::ID lookupTypeForExtension(const char *Ext) const { + return types::lookupTypeForExtension(Ext); + } + + virtual ToolChain *getToolChain(const ArgList &Args, + const char *ArchName) const; +}; + +AuroraUXHostInfo::~AuroraUXHostInfo() { + for (llvm::StringMap<ToolChain*>::iterator + it = ToolChains.begin(), ie = ToolChains.end(); it != ie; ++it) + delete it->second; +} + +bool AuroraUXHostInfo::useDriverDriver() const { + return false; +} + +ToolChain *AuroraUXHostInfo::getToolChain(const ArgList &Args, + const char *ArchName) const { + assert(!ArchName && + "Unexpected arch name on platform without driver driver support."); + + ToolChain *&TC = ToolChains[getArchName()]; + + if (!TC) { + llvm::Triple TCTriple(getTriple()); + TCTriple.setArchName(getArchName()); + + TC = new toolchains::AuroraUX(*this, TCTriple); + } + + return TC; +} + // FreeBSD Host Info /// FreeBSDHostInfo - FreeBSD host information implementation. @@ -462,6 +511,12 @@ ToolChain *LinuxHostInfo::getToolChain(const ArgList &Args, } const HostInfo * +clang::driver::createAuroraUXHostInfo(const Driver &D, + const llvm::Triple& Triple){ + return new AuroraUXHostInfo(D, Triple); +} + +const HostInfo * clang::driver::createDarwinHostInfo(const Driver &D, const llvm::Triple& Triple){ return new DarwinHostInfo(D, Triple); |