Tools.h revision 47ac7d27c44bd64a7d0fc03d4babc196cf2b8230
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 InputInfo &Output, InputInfoList &Inputs, 31 const ArgList &TCArgs, 32 const char *LinkingOutput) const; 33 }; 34 35 /// gcc - Generic GCC tool implementations. 36namespace gcc { 37 class VISIBILITY_HIDDEN Preprocess : public Tool { 38 public: 39 Preprocess(const ToolChain &TC) : Tool("gcc::Preprocess", TC) {} 40 41 virtual bool acceptsPipedInput() const { return true; } 42 virtual bool canPipeOutput() const { return true; } 43 virtual bool hasIntegratedCPP() const { return false; } 44 45 virtual void ConstructJob(Compilation &C, const JobAction &JA, 46 InputInfo &Output, InputInfoList &Inputs, 47 const ArgList &TCArgs, 48 const char *LinkingOutput) const; 49 }; 50 51 class VISIBILITY_HIDDEN Precompile : public Tool { 52 public: 53 Precompile(const ToolChain &TC) : Tool("gcc::Precompile", TC) {} 54 55 virtual bool acceptsPipedInput() const { return true; } 56 virtual bool canPipeOutput() const { return false; } 57 virtual bool hasIntegratedCPP() const { return true; } 58 59 virtual void ConstructJob(Compilation &C, const JobAction &JA, 60 InputInfo &Output, InputInfoList &Inputs, 61 const ArgList &TCArgs, 62 const char *LinkingOutput) const; 63 }; 64 65 class VISIBILITY_HIDDEN Compile : public Tool { 66 public: 67 Compile(const ToolChain &TC) : Tool("gcc::Compile", TC) {} 68 69 virtual bool acceptsPipedInput() const { return true; } 70 virtual bool canPipeOutput() const { return true; } 71 virtual bool hasIntegratedCPP() const { return true; } 72 73 virtual void ConstructJob(Compilation &C, const JobAction &JA, 74 InputInfo &Output, InputInfoList &Inputs, 75 const ArgList &TCArgs, 76 const char *LinkingOutput) const; 77 }; 78 79 class VISIBILITY_HIDDEN Assemble : public Tool { 80 public: 81 Assemble(const ToolChain &TC) : Tool("gcc::Assemble", TC) {} 82 83 virtual bool acceptsPipedInput() const { return true; } 84 virtual bool canPipeOutput() const { return false; } 85 virtual bool hasIntegratedCPP() const { return false; } 86 87 virtual void ConstructJob(Compilation &C, const JobAction &JA, 88 InputInfo &Output, InputInfoList &Inputs, 89 const ArgList &TCArgs, 90 const char *LinkingOutput) const; 91 }; 92 93 class VISIBILITY_HIDDEN Link : public Tool { 94 public: 95 Link(const ToolChain &TC) : Tool("gcc::Link", TC) {} 96 97 virtual bool acceptsPipedInput() const { return false; } 98 virtual bool canPipeOutput() const { return false; } 99 virtual bool hasIntegratedCPP() const { return false; } 100 101 virtual void ConstructJob(Compilation &C, const JobAction &JA, 102 InputInfo &Output, InputInfoList &Inputs, 103 const ArgList &TCArgs, 104 const char *LinkingOutput) const; 105 }; 106} // end namespace gcc 107 108} // end namespace toolchains 109} // end namespace driver 110} // end namespace clang 111 112#endif 113