Tools.h revision 47ac7d27c44bd64a7d0fc03d4babc196cf2b8230
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 { 19985b825eea7387be10478de0430815ed6a673326Daniel Dunbarnamespace tools { 209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 21985b825eea7387be10478de0430815ed6a673326Daniel Dunbar class VISIBILITY_HIDDEN Clang : public Tool { 229c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 2331b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Clang(const ToolChain &TC) : Tool("clang", 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; } 2847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 2947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 3147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 3247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 339c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 349c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 3531b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar /// gcc - Generic GCC tool implementations. 3631b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbarnamespace gcc { 3731b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar class VISIBILITY_HIDDEN Preprocess : public Tool { 389c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 3931b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Preprocess(const ToolChain &TC) : Tool("gcc::Preprocess", TC) {} 409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool acceptsPipedInput() const { return true; } 429c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool canPipeOutput() const { return true; } 439c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 4447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 4547ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 4747ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 4847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 499c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 509c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 5131b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar class VISIBILITY_HIDDEN Precompile : public Tool { 529c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 5331b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Precompile(const ToolChain &TC) : Tool("gcc::Precompile", TC) {} 549c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 559c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool acceptsPipedInput() const { return true; } 569c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool canPipeOutput() const { return false; } 579c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 5847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 5947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 6047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 6147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 6247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 639c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 649c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 6531b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar class VISIBILITY_HIDDEN Compile : public Tool { 669c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 6731b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Compile(const ToolChain &TC) : Tool("gcc::Compile", TC) {} 689c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 699c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool acceptsPipedInput() const { return true; } 709c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool canPipeOutput() const { return true; } 719c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 7247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 7347ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 7447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 7547ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 7647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 779c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 789c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 7931b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar class VISIBILITY_HIDDEN Assemble : public Tool { 809c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 8131b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Assemble(const ToolChain &TC) : Tool("gcc::Assemble", TC) {} 829c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 839c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool acceptsPipedInput() const { return true; } 849c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool canPipeOutput() const { return false; } 859c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 8647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 8747ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 8847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 8947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 9047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 919c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 929c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 9331b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar class VISIBILITY_HIDDEN Link : public Tool { 949c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 9531b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar Link(const ToolChain &TC) : Tool("gcc::Link", TC) {} 969c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 979c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool acceptsPipedInput() const { return false; } 989c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool canPipeOutput() const { return false; } 999c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 10047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 10147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 10247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar InputInfo &Output, InputInfoList &Inputs, 10347ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const ArgList &TCArgs, 10447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 1059c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 10631b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar} // end namespace gcc 1079c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1089c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace toolchains 1099c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace driver 1109c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace clang 1119c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1129c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#endif 113