1353942Sdim//===--- Minix.h - Minix ToolChain Implementations --------------*- C++ -*-===// 2353942Sdim// 3353942Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353942Sdim// See https://llvm.org/LICENSE.txt for license information. 5353942Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6353942Sdim// 7353942Sdim//===----------------------------------------------------------------------===// 8353942Sdim 9353942Sdim#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H 10353942Sdim#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H 11353942Sdim 12353942Sdim#include "Gnu.h" 13353942Sdim#include "clang/Driver/Tool.h" 14353942Sdim#include "clang/Driver/ToolChain.h" 15353942Sdim 16353942Sdimnamespace clang { 17353942Sdimnamespace driver { 18353942Sdimnamespace tools { 19353942Sdim/// minix -- Directly call GNU Binutils assembler and linker 20353942Sdimnamespace minix { 21353942Sdimclass LLVM_LIBRARY_VISIBILITY Assembler : public GnuTool { 22353942Sdimpublic: 23353942Sdim Assembler(const ToolChain &TC) 24353942Sdim : GnuTool("minix::Assembler", "assembler", TC) {} 25353942Sdim 26353942Sdim bool hasIntegratedCPP() const override { return false; } 27353942Sdim 28353942Sdim void ConstructJob(Compilation &C, const JobAction &JA, 29353942Sdim const InputInfo &Output, const InputInfoList &Inputs, 30353942Sdim const llvm::opt::ArgList &TCArgs, 31353942Sdim const char *LinkingOutput) const override; 32353942Sdim}; 33353942Sdim 34353942Sdimclass LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { 35353942Sdimpublic: 36353942Sdim Linker(const ToolChain &TC) : GnuTool("minix::Linker", "linker", TC) {} 37 38 bool hasIntegratedCPP() const override { return false; } 39 bool isLinkJob() const override { return true; } 40 41 void ConstructJob(Compilation &C, const JobAction &JA, 42 const InputInfo &Output, const InputInfoList &Inputs, 43 const llvm::opt::ArgList &TCArgs, 44 const char *LinkingOutput) const override; 45}; 46} // end namespace minix 47} // end namespace tools 48 49namespace toolchains { 50 51class LLVM_LIBRARY_VISIBILITY Minix : public Generic_ELF { 52public: 53 Minix(const Driver &D, const llvm::Triple &Triple, 54 const llvm::opt::ArgList &Args); 55 56protected: 57 Tool *buildAssembler() const override; 58 Tool *buildLinker() const override; 59}; 60 61} // end namespace toolchains 62} // end namespace driver 63} // end namespace clang 64 65#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H 66