Tools.h revision 62cf601812e03dd9bc5df42b8ef06a0cdedc38bf
1//===--- Tools.h - Tool Implementations -------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef CLANG_LIB_DRIVER_TOOLS_H_ 11#define CLANG_LIB_DRIVER_TOOLS_H_ 12 13#include "clang/Driver/Tool.h" 14 15#include "llvm/Support/Compiler.h" 16 17namespace clang { 18namespace driver { 19namespace tools { 20 21 class VISIBILITY_HIDDEN Clang : public Tool { 22 public: 23 Clang(const ToolChain &TC) : Tool("clang", TC) {} 24 25 virtual bool acceptsPipedInput() const { return true; } 26 virtual bool canPipeOutput() const { return true; } 27 virtual bool hasIntegratedCPP() const { return true; } 28 29 virtual void ConstructJob(Compilation &C, const JobAction &JA, 30 const InputInfo &Output, 31 const InputInfoList &Inputs, 32 const ArgList &TCArgs, 33 const char *LinkingOutput) const; 34 }; 35 36 /// gcc - Generic GCC tool implementations. 37namespace gcc { 38 class VISIBILITY_HIDDEN Preprocess : public Tool { 39 public: 40 Preprocess(const ToolChain &TC) : Tool("gcc::Preprocess", TC) {} 41 42 virtual bool acceptsPipedInput() const { return true; } 43 virtual bool canPipeOutput() const { return true; } 44 virtual bool hasIntegratedCPP() const { return false; } 45 46 virtual void ConstructJob(Compilation &C, const JobAction &JA, 47 const InputInfo &Output, 48 const InputInfoList &Inputs, 49 const ArgList &TCArgs, 50 const char *LinkingOutput) const; 51 }; 52 53 class VISIBILITY_HIDDEN Precompile : public Tool { 54 public: 55 Precompile(const ToolChain &TC) : Tool("gcc::Precompile", TC) {} 56 57 virtual bool acceptsPipedInput() const { return true; } 58 virtual bool canPipeOutput() const { return false; } 59 virtual bool hasIntegratedCPP() const { return true; } 60 61 virtual void ConstructJob(Compilation &C, const JobAction &JA, 62 const InputInfo &Output, 63 const InputInfoList &Inputs, 64 const ArgList &TCArgs, 65 const char *LinkingOutput) const; 66 }; 67 68 class VISIBILITY_HIDDEN Compile : public Tool { 69 public: 70 Compile(const ToolChain &TC) : Tool("gcc::Compile", TC) {} 71 72 virtual bool acceptsPipedInput() const { return true; } 73 virtual bool canPipeOutput() const { return true; } 74 virtual bool hasIntegratedCPP() const { return true; } 75 76 virtual void ConstructJob(Compilation &C, const JobAction &JA, 77 const InputInfo &Output, 78 const InputInfoList &Inputs, 79 const ArgList &TCArgs, 80 const char *LinkingOutput) const; 81 }; 82 83 class VISIBILITY_HIDDEN Assemble : public Tool { 84 public: 85 Assemble(const ToolChain &TC) : Tool("gcc::Assemble", TC) {} 86 87 virtual bool acceptsPipedInput() const { return true; } 88 virtual bool canPipeOutput() const { return false; } 89 virtual bool hasIntegratedCPP() const { return false; } 90 91 virtual void ConstructJob(Compilation &C, const JobAction &JA, 92 const InputInfo &Output, 93 const InputInfoList &Inputs, 94 const ArgList &TCArgs, 95 const char *LinkingOutput) const; 96 }; 97 98 class VISIBILITY_HIDDEN Link : public Tool { 99 public: 100 Link(const ToolChain &TC) : Tool("gcc::Link", TC) {} 101 102 virtual bool acceptsPipedInput() const { return false; } 103 virtual bool canPipeOutput() const { return false; } 104 virtual bool hasIntegratedCPP() const { return false; } 105 106 virtual void ConstructJob(Compilation &C, const JobAction &JA, 107 const InputInfo &Output, 108 const InputInfoList &Inputs, 109 const ArgList &TCArgs, 110 const char *LinkingOutput) const; 111 }; 112} // end namespace gcc 113 114} // end namespace toolchains 115} // end namespace driver 116} // end namespace clang 117 118#endif 119