Ananas.h revision 320376
1320376Sdim//===--- Ananas.h - Ananas ToolChain Implementations --------*- C++ -*-===// 2320376Sdim// 3320376Sdim// The LLVM Compiler Infrastructure 4320376Sdim// 5320376Sdim// This file is distributed under the University of Illinois Open Source 6320376Sdim// License. See LICENSE.TXT for details. 7320376Sdim// 8320376Sdim//===----------------------------------------------------------------------===// 9320376Sdim 10320376Sdim#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ANANAS_H 11320376Sdim#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ANANAS_H 12320376Sdim 13320376Sdim#include "Gnu.h" 14320376Sdim#include "clang/Driver/Tool.h" 15320376Sdim#include "clang/Driver/ToolChain.h" 16320376Sdim 17320376Sdimnamespace clang { 18320376Sdimnamespace driver { 19320376Sdimnamespace tools { 20320376Sdim 21320376Sdim/// ananas -- Directly call GNU Binutils assembler and linker 22320376Sdimnamespace ananas { 23320376Sdimclass LLVM_LIBRARY_VISIBILITY Assembler : public GnuTool { 24320376Sdimpublic: 25320376Sdim Assembler(const ToolChain &TC) 26320376Sdim : GnuTool("ananas::Assembler", "assembler", TC) {} 27320376Sdim 28320376Sdim bool hasIntegratedCPP() const override { return false; } 29320376Sdim 30320376Sdim void ConstructJob(Compilation &C, const JobAction &JA, 31320376Sdim const InputInfo &Output, const InputInfoList &Inputs, 32320376Sdim const llvm::opt::ArgList &TCArgs, 33320376Sdim const char *LinkingOutput) const override; 34320376Sdim}; 35320376Sdim 36320376Sdimclass LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { 37320376Sdimpublic: 38320376Sdim Linker(const ToolChain &TC) : GnuTool("ananas::Linker", "linker", TC) {} 39320376Sdim 40320376Sdim bool hasIntegratedCPP() const override { return false; } 41320376Sdim bool isLinkJob() const override { return true; } 42320376Sdim 43320376Sdim void ConstructJob(Compilation &C, const JobAction &JA, 44320376Sdim const InputInfo &Output, const InputInfoList &Inputs, 45320376Sdim const llvm::opt::ArgList &TCArgs, 46320376Sdim const char *LinkingOutput) const override; 47320376Sdim}; 48320376Sdim} // end namespace ananas 49320376Sdim} // end namespace tools 50320376Sdim 51320376Sdimnamespace toolchains { 52320376Sdim 53320376Sdimclass LLVM_LIBRARY_VISIBILITY Ananas : public Generic_ELF { 54320376Sdimpublic: 55320376Sdim Ananas(const Driver &D, const llvm::Triple &Triple, 56320376Sdim const llvm::opt::ArgList &Args); 57320376Sdim 58320376Sdimprotected: 59320376Sdim Tool *buildAssembler() const override; 60320376Sdim Tool *buildLinker() const override; 61320376Sdim}; 62320376Sdim 63320376Sdim} // end namespace toolchains 64320376Sdim} // end namespace driver 65320376Sdim} // end namespace clang 66320376Sdim 67320376Sdim#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ANANAS_H 68