Tools.h revision 9c073ff462eb75ccbb1c4446e21c148f3fc618e1
19c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//===--- Tools.h - Tool Implementations -------------------------*- C++ -*-===//
29c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//
39c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//                     The LLVM Compiler Infrastructure
49c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//
59c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar// This file is distributed under the University of Illinois Open Source
69c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar// License. See LICENSE.TXT for details.
79c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//
89c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar//===----------------------------------------------------------------------===//
99c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
109c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#ifndef CLANG_LIB_DRIVER_TOOLS_H_
119c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#define CLANG_LIB_DRIVER_TOOLS_H_
129c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
139c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "clang/Driver/Tool.h"
149c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
159c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "llvm/Support/Compiler.h"
169c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace clang {
189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace driver {
199c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace tools VISIBILITY_HIDDEN {
209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
219c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class Clang : public Tool {
229c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
239c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    Clang(const ToolChain &TC) : Tool(TC) {}
249c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
259c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return true; }
269c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return true; }
279c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return true; }
289c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
299c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
309c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class GCC_Preprocess : public Tool {
319c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
329c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    GCC_Preprocess(const ToolChain &TC) : Tool(TC) {}
339c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
349c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return true; }
359c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return true; }
369c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return false; }
379c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
389c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
399c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class GCC_Precompile : public Tool  {
409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    GCC_Precompile(const ToolChain &TC) : Tool(TC) {}
429c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
439c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return true; }
449c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return false; }
459c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return true; }
469c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
479c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
489c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class GCC_Compile : public Tool  {
499c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
509c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    GCC_Compile(const ToolChain &TC) : Tool(TC) {}
519c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
529c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return true; }
539c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return true; }
549c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return true; }
559c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
569c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
579c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class GCC_Assemble : public Tool  {
589c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
599c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    GCC_Assemble(const ToolChain &TC) : Tool(TC) {}
609c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
619c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return true; }
629c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return false; }
639c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return false; }
649c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
659c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
669c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  class GCC_Link : public Tool  {
679c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  public:
689c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    GCC_Link(const ToolChain &TC) : Tool(TC) {}
699c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
709c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool acceptsPipedInput() const { return false; }
719c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool canPipeOutput() const { return false; }
729c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar    virtual bool hasIntegratedCPP() const { return false; }
739c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar  };
749c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
759c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace toolchains
769c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace driver
779c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace clang
789c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar
799c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#endif
80