DragonFly.h revision 360660
1145683Sharti//===--- DragonFly.h - DragonFly ToolChain Implementations ------*- C++ -*-===// 2145683Sharti// 3145683Sharti// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4177102Sobrien// See https://llvm.org/LICENSE.txt for license information. 5145683Sharti// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6145683Sharti// 7145683Sharti//===----------------------------------------------------------------------===// 8145683Sharti 9145683Sharti#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 10145683Sharti#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 11145683Sharti 12145683Sharti#include "Gnu.h" 13150595Sphk#include "clang/Driver/Tool.h" 14150595Sphk#include "clang/Driver/ToolChain.h" 15145683Sharti 16145683Shartinamespace clang { 17145683Shartinamespace driver { 18145683Shartinamespace tools { 19145683Sharti/// dragonfly -- Directly call GNU Binutils assembler and linker 20145683Shartinamespace dragonfly { 21145683Sharticlass LLVM_LIBRARY_VISIBILITY Assembler : public GnuTool { 22150595Sphkpublic: 23145683Sharti Assembler(const ToolChain &TC) 24145683Sharti : GnuTool("dragonfly::Assembler", "assembler", TC) {} 25145683Sharti 26145683Sharti bool hasIntegratedCPP() const override { return false; } 27150595Sphk 28150595Sphk void ConstructJob(Compilation &C, const JobAction &JA, 29150595Sphk const InputInfo &Output, const InputInfoList &Inputs, 30150595Sphk const llvm::opt::ArgList &TCArgs, 31145683Sharti const char *LinkingOutput) const override; 32145683Sharti}; 33145683Sharti 34150595Sphkclass LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { 35150595Sphkpublic: 36150595Sphk Linker(const ToolChain &TC) : GnuTool("dragonfly::Linker", "linker", TC) {} 37145683Sharti 38145683Sharti bool hasIntegratedCPP() const override { return false; } 39145683Sharti bool isLinkJob() const override { return true; } 40150595Sphk 41150595Sphk void ConstructJob(Compilation &C, const JobAction &JA, 42150595Sphk const InputInfo &Output, const InputInfoList &Inputs, 43145683Sharti const llvm::opt::ArgList &TCArgs, 44145683Sharti const char *LinkingOutput) const override; 45145683Sharti}; 46145683Sharti} // end namespace dragonfly 47145683Sharti} // end namespace tools 48145683Sharti 49145683Shartinamespace toolchains { 50145683Sharti 51145683Sharticlass LLVM_LIBRARY_VISIBILITY DragonFly : public Generic_ELF { 52145683Shartipublic: 53145683Sharti DragonFly(const Driver &D, const llvm::Triple &Triple, 54145683Sharti const llvm::opt::ArgList &Args); 55145683Sharti 56145683Sharti bool IsMathErrnoDefault() const override { return false; } 57145683Sharti 58145683Shartiprotected: 59145683Sharti Tool *buildAssembler() const override; 60145683Sharti Tool *buildLinker() const override; 61145683Sharti}; 62150595Sphk 63150595Sphk} // end namespace toolchains 64145683Sharti} // end namespace driver 65150595Sphk} // end namespace clang 66145683Sharti 67145683Sharti#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DRAGONFLY_H 68145683Sharti