Minix.h revision 341825
10SN/A//===--- Minix.h - Minix ToolChain Implementations --------------*- C++ -*-===//
212857Spsandoz//
30SN/A//                     The LLVM Compiler Infrastructure
40SN/A//
50SN/A// This file is distributed under the University of Illinois Open Source
60SN/A// License. See LICENSE.TXT for details.
72362SN/A//
80SN/A//===----------------------------------------------------------------------===//
92362SN/A
100SN/A#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H
110SN/A#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H
120SN/A
130SN/A#include "Gnu.h"
140SN/A#include "clang/Driver/Tool.h"
150SN/A#include "clang/Driver/ToolChain.h"
160SN/A
170SN/Anamespace clang {
180SN/Anamespace driver {
190SN/Anamespace tools {
200SN/A/// minix -- Directly call GNU Binutils assembler and linker
212362SN/Anamespace minix {
222362SN/Aclass LLVM_LIBRARY_VISIBILITY Assembler : public GnuTool {
232362SN/Apublic:
240SN/A  Assembler(const ToolChain &TC)
250SN/A      : GnuTool("minix::Assembler", "assembler", TC) {}
260SN/A
270SN/A  bool hasIntegratedCPP() const override { return false; }
280SN/A
290SN/A  void ConstructJob(Compilation &C, const JobAction &JA,
300SN/A                    const InputInfo &Output, const InputInfoList &Inputs,
310SN/A                    const llvm::opt::ArgList &TCArgs,
320SN/A                    const char *LinkingOutput) const override;
330SN/A};
3412857Spsandoz
3512857Spsandozclass LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
360SN/Apublic:
3712857Spsandoz  Linker(const ToolChain &TC) : GnuTool("minix::Linker", "linker", TC) {}
38644SN/A
39644SN/A  bool hasIntegratedCPP() const override { return false; }
400SN/A  bool isLinkJob() const override { return true; }
4112857Spsandoz
420SN/A  void ConstructJob(Compilation &C, const JobAction &JA,
430SN/A                    const InputInfo &Output, const InputInfoList &Inputs,
440SN/A                    const llvm::opt::ArgList &TCArgs,
450SN/A                    const char *LinkingOutput) const override;
460SN/A};
470SN/A} // end namespace minix
4812857Spsandoz} // end namespace tools
4912857Spsandoz
500SN/Anamespace toolchains {
5112857Spsandoz
520SN/Aclass LLVM_LIBRARY_VISIBILITY Minix : public Generic_ELF {
530SN/Apublic:
540SN/A  Minix(const Driver &D, const llvm::Triple &Triple,
550SN/A        const llvm::opt::ArgList &Args);
5612857Spsandoz
5712857Spsandozprotected:
5812857Spsandoz  Tool *buildAssembler() const override;
5912857Spsandoz  Tool *buildLinker() const override;
6012857Spsandoz};
6112857Spsandoz
6212857Spsandoz} // end namespace toolchains
6312857Spsandoz} // end namespace driver
6412857Spsandoz} // end namespace clang
6512857Spsandoz
6612857Spsandoz#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MINIX_H
6712857Spsandoz