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