DragonFly.h revision 321369
119304Speter//===--- DragonFly.h - DragonFly ToolChain Implementations ------*- C++ -*-===// 219304Speter// 319304Speter// The LLVM Compiler Infrastructure 419304Speter// 519304Speter// This file is distributed under the University of Illinois Open Source 619304Speter// License. See LICENSE.TXT for details. 719304Speter// 819304Speter//===----------------------------------------------------------------------===// 919304Speter 1019304Speter#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 1119304Speter#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 1219304Speter 13254225Speter#include "Gnu.h" 1419304Speter#include "clang/Driver/Tool.h" 1519304Speter#include "clang/Driver/ToolChain.h" 1619304Speter 1719304Speternamespace clang { 1819304Speternamespace driver { 1919304Speternamespace tools { 2019304Speter/// dragonfly -- Directly call GNU Binutils assembler and linker 2119304Speternamespace dragonfly { 2219304Speterclass LLVM_LIBRARY_VISIBILITY Assembler : public GnuTool { 2319304Speterpublic: 2419304Speter Assembler(const ToolChain &TC) 2519304Speter : GnuTool("dragonfly::Assembler", "assembler", TC) {} 2619304Speter 2719304Speter bool hasIntegratedCPP() const override { return false; } 2819304Speter 2919304Speter void ConstructJob(Compilation &C, const JobAction &JA, 3019304Speter const InputInfo &Output, const InputInfoList &Inputs, 3119304Speter const llvm::opt::ArgList &TCArgs, 3219304Speter const char *LinkingOutput) const override; 3319304Speter}; 3419304Speter 3519304Speterclass LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { 3619304Speterpublic: 3719304Speter Linker(const ToolChain &TC) : GnuTool("dragonfly::Linker", "linker", TC) {} 3819304Speter 3919304Speter bool hasIntegratedCPP() const override { return false; } 4019304Speter bool isLinkJob() const override { return true; } 4119304Speter 42254225Speter void ConstructJob(Compilation &C, const JobAction &JA, 4319304Speter const InputInfo &Output, const InputInfoList &Inputs, 4419304Speter const llvm::opt::ArgList &TCArgs, 4519304Speter const char *LinkingOutput) const override; 46254225Speter}; 47254225Speter} // end namespace dragonfly 48254225Speter} // end namespace tools 4919304Speter 5019304Speternamespace toolchains { 5119304Speter 5219304Speterclass LLVM_LIBRARY_VISIBILITY DragonFly : public Generic_ELF { 5319304Speterpublic: 5419304Speter DragonFly(const Driver &D, const llvm::Triple &Triple, 55254225Speter const llvm::opt::ArgList &Args); 5619304Speter 5719304Speter bool IsMathErrnoDefault() const override { return false; } 5819304Speter 5919304Speterprotected: 6019304Speter Tool *buildAssembler() const override; 6119304Speter Tool *buildLinker() const override; 6219304Speter}; 6319304Speter 6419304Speter} // end namespace toolchains 6519304Speter} // end namespace driver 6619304Speter} // end namespace clang 6719304Speter 6819304Speter#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 6919304Speter