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