Tools.h revision ba30bbe4e36a30a274da809a11a42f9cdc168e92
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" 1440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar#include "clang/Driver/Types.h" 15b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar#include "clang/Driver/Util.h" 169c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "llvm/Support/Compiler.h" 189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 199c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace clang { 209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace driver { 21df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor class Driver; 22df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor 2302633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbarnamespace toolchains { 24f395528158379e7ea9f6ff4bbb791abadca15aabDaniel Dunbar class Darwin; 2502633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar} 2602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 27985b825eea7387be10478de0430815ed6a673326Daniel Dunbarnamespace tools { 289c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 2920a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar /// \brief Clang compiler tool. 3092dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Clang : public Tool { 31df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor void AddPreprocessingOptions(const Driver &D, 32df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor const ArgList &Args, 33c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar ArgStringList &CmdArgs, 34c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar const InputInfo &Output, 35c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar const InputInfoList &Inputs) const; 36c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar 37b163ef7e7a5d904ef0962a7c38c460be083c4d63Daniel Dunbar void AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 38ed734737d5af31906e30e537d4a41c760ddcfc59Eric Christopher void AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 396acda16e9c194dcbd0dea64341e182bdb65d0f41Daniel Dunbar void AddX86TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 406acda16e9c194dcbd0dea64341e182bdb65d0f41Daniel Dunbar 419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 423038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Clang(const ToolChain &TC) : Tool("clang", "clang frontend", TC) {} 439c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 4460a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 458767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar virtual bool hasIntegratedAssembler() const { return true; } 469c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 4747ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 4847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4920a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const InputInfo &Output, 5020a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const InputInfoList &Inputs, 5120a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const ArgList &TCArgs, 5220a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const char *LinkingOutput) const; 5320a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar }; 5420a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 5520a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar /// \brief Clang integrated assembler tool. 5620a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar class LLVM_LIBRARY_VISIBILITY ClangAs : public Tool { 5720a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar public: 583038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar ClangAs(const ToolChain &TC) : Tool("clang::as", 593038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "clang integrated assembler", TC) {} 6020a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 6120a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 6220a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasIntegratedAssembler() const { return false; } 6320a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 6420a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 6520a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 661eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 671eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 681eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 6947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 709c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 719c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 7231b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar /// gcc - Generic GCC tool implementations. 7331b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbarnamespace gcc { 7492dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Common : public Tool { 759c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 763038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Common(const char *Name, const char *ShortName, 773038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : Tool(Name, ShortName, TC) {} 7847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 7947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 801eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 811eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 821eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 8347ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 84b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 85b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar /// RenderExtraToolArgs - Render any arguments necessary to force 86b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar /// the particular tool mode. 8782b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 8882b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const = 0; 899c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 909c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 911eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 9292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Preprocess : public Common { 939c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 943038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Preprocess(const ToolChain &TC) : Common("gcc::Preprocess", 953038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc preprocessor", TC) {} 96b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 9760a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 98b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 99b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 10082b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 10182b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 102b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar }; 103b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 10492dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Precompile : public Common { 105b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar public: 1063038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Precompile(const ToolChain &TC) : Common("gcc::Precompile", 1073038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc precompile", TC) {} 1089c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 10960a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 1109c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 11147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 11282b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 11382b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1149c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1159c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 11692dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Compile : public Common { 1179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1183038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Compile(const ToolChain &TC) : Common("gcc::Compile", 1193038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc frontend", TC) {} 1209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 12160a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 1229c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 12347ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 12482b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 12582b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1269c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1279c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 12892dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Common { 1299c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1303038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Common("gcc::Assemble", 1313038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "assembler (via gcc)", TC) {} 1329c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1339c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 13447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 13582b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 13682b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1379c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1389c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 13992dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Common { 1409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1413038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Common("gcc::Link", 1423038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "linker (via gcc)", TC) {} 1439c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1449c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 14547ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 14682b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 14782b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1489c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 14931b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar} // end namespace gcc 1509c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 151ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbarnamespace darwin { 15292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY DarwinTool : public Tool { 153fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar protected: 154fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar void AddDarwinArch(const ArgList &Args, ArgStringList &CmdArgs) const; 155fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 156fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar const toolchains::Darwin &getDarwinToolChain() const { 157fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar return reinterpret_cast<const toolchains::Darwin&>(getToolChain()); 158fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar } 159fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 160fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar public: 1613038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar DarwinTool(const char *Name, const char *ShortName, 1623038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : Tool(Name, ShortName, TC) {} 163fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar }; 164fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 16592dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY CC1 : public DarwinTool { 166a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar public: 1671eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getBaseInputName(const ArgList &Args, 168a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Input); 1691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getBaseInputStem(const ArgList &Args, 170a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Input); 1711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getDependencyFileName(const ArgList &Args, 172a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Inputs); 173a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar 17440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar protected: 17540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *getCC1Name(types::ID Type) const; 176a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar 177a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar void AddCC1Args(const ArgList &Args, ArgStringList &CmdArgs) const; 17840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar void AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 17940f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const InputInfoList &Inputs, 180a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const ArgStringList &OutputArgs) const; 18140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar void AddCPPOptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 18240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const InputInfoList &Inputs, 183a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const ArgStringList &OutputArgs) const; 1841eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump void AddCPPUniqueOptionsArgs(const ArgList &Args, 185a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar ArgStringList &CmdArgs, 186a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const InputInfoList &Inputs) const; 187a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar void AddCPPArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 18840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 18940f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 1903038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar CC1(const char *Name, const char *ShortName, 1913038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : DarwinTool(Name, ShortName, TC) {} 19240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 19360a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 19440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 19540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 19640f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 19792dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Preprocess : public CC1 { 19840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 1993038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Preprocess(const ToolChain &TC) : CC1("darwin::Preprocess", 2003038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc preprocessor", TC) {} 20140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 20240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2041eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 20640f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *LinkingOutput) const; 20740f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 20840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 20992dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Compile : public CC1 { 21040f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 2113038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Compile(const ToolChain &TC) : CC1("darwin::Compile", "gcc frontend", TC) {} 21240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 21340f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2141eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2151eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2161eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 21740f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *LinkingOutput) const; 21840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 21940f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 22092dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public DarwinTool { 2218cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar public: 2223038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : DarwinTool("darwin::Assemble", 2233038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "assembler", TC) {} 2248cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 2258cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 2268cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 2278cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2281eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2291eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 23102633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar const char *LinkingOutput) const; 23202633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar }; 23302633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 23492dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public DarwinTool { 23502633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar void AddLinkArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 23602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 23702633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar public: 2383038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : DarwinTool("darwin::Link", "linker", TC) {} 23902633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 24002633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 24102633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 24202633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2441eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 2468cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar const char *LinkingOutput) const; 2478cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar }; 2488cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 24992dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Lipo : public DarwinTool { 250ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar public: 2513038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Lipo(const ToolChain &TC) : DarwinTool("darwin::Lipo", "lipo", TC) {} 252ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 253ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 254ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 255ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2561eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2571eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2581eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 2596e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const char *LinkingOutput) const; 2606e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar }; 2616e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2626e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar class LLVM_LIBRARY_VISIBILITY Dsymutil : public DarwinTool { 2636e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar public: 2646e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar Dsymutil(const ToolChain &TC) : DarwinTool("darwin::Dsymutil", 2656e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar "dsymutil", TC) {} 2666e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2676e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 2686e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2696e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2706e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const InputInfo &Output, 2716e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const InputInfoList &Inputs, 2726e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const ArgList &TCArgs, 273f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar const char *LinkingOutput) const; 274f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar }; 275f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar} 276f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 277f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar /// openbsd -- Directly call GNU Binutils assembler and linker 278f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbarnamespace openbsd { 27992dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 280f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar public: 2813038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("openbsd::Assemble", "assembler", 2823038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 283f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 284f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 285f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 286f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2871eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2881eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2891eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 290f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar const char *LinkingOutput) const; 291f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar }; 29292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 293f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar public: 2943038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("openbsd::Link", "linker", TC) {} 295f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 296f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 297f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 298f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3001eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 302ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar const char *LinkingOutput) const; 303ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar }; 304e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace openbsd 305ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 30668a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar /// freebsd -- Directly call GNU Binutils assembler and linker 30768a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbarnamespace freebsd { 30892dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 30968a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar public: 3103038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("freebsd::Assemble", "assembler", 3113038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 31268a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 31368a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 31468a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 31568a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3161eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3171eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3181eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 31968a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar const char *LinkingOutput) const; 32068a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar }; 32192dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 322008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar public: 3233038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("freebsd::Link", "linker", TC) {} 324008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar 325008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 326008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar 327008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3281eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3291eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 331008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar const char *LinkingOutput) const; 332008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar }; 333e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace freebsd 334e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 335ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola /// linux -- Directly call GNU Binutils assembler and linker 336ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindolanamespace linuxtools { 337ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 338ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola public: 339ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola Assemble(const ToolChain &TC) : Tool("linux::Assemble", "assembler", 340ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola TC) {} 341ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola 342ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola virtual bool hasIntegratedCPP() const { return false; } 343ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola 344ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola virtual void ConstructJob(Compilation &C, const JobAction &JA, 345ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const InputInfo &Output, 346ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const InputInfoList &Inputs, 347ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const ArgList &TCArgs, 348ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const char *LinkingOutput) const; 349ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola }; 350ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola} 35138e317d6dce161b249508686cc67eb7176958762Chris Lattner /// minix -- Directly call GNU Binutils assembler and linker 35238e317d6dce161b249508686cc67eb7176958762Chris Lattnernamespace minix { 35338e317d6dce161b249508686cc67eb7176958762Chris Lattner class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 35438e317d6dce161b249508686cc67eb7176958762Chris Lattner public: 35538e317d6dce161b249508686cc67eb7176958762Chris Lattner Assemble(const ToolChain &TC) : Tool("minix::Assemble", "assembler", 35638e317d6dce161b249508686cc67eb7176958762Chris Lattner TC) {} 35738e317d6dce161b249508686cc67eb7176958762Chris Lattner 35838e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual bool hasIntegratedCPP() const { return false; } 35938e317d6dce161b249508686cc67eb7176958762Chris Lattner 36038e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual void ConstructJob(Compilation &C, const JobAction &JA, 36138e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfo &Output, 36238e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfoList &Inputs, 36338e317d6dce161b249508686cc67eb7176958762Chris Lattner const ArgList &TCArgs, 36438e317d6dce161b249508686cc67eb7176958762Chris Lattner const char *LinkingOutput) const; 36538e317d6dce161b249508686cc67eb7176958762Chris Lattner }; 36638e317d6dce161b249508686cc67eb7176958762Chris Lattner class LLVM_LIBRARY_VISIBILITY Link : public Tool { 36738e317d6dce161b249508686cc67eb7176958762Chris Lattner public: 36838e317d6dce161b249508686cc67eb7176958762Chris Lattner Link(const ToolChain &TC) : Tool("minix::Link", "linker", TC) {} 36938e317d6dce161b249508686cc67eb7176958762Chris Lattner 37038e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual bool hasIntegratedCPP() const { return false; } 37138e317d6dce161b249508686cc67eb7176958762Chris Lattner 37238e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual void ConstructJob(Compilation &C, const JobAction &JA, 37338e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfo &Output, 37438e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfoList &Inputs, 37538e317d6dce161b249508686cc67eb7176958762Chris Lattner const ArgList &TCArgs, 37638e317d6dce161b249508686cc67eb7176958762Chris Lattner const char *LinkingOutput) const; 37738e317d6dce161b249508686cc67eb7176958762Chris Lattner }; 37838e317d6dce161b249508686cc67eb7176958762Chris Lattner} // end namespace minix 37938e317d6dce161b249508686cc67eb7176958762Chris Lattner 380e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan /// auroraux -- Directly call GNU Binutils assembler and linker 381e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghannamespace auroraux { 38292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 383e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan public: 3843038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("auroraux::Assemble", "assembler", 3853038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 386e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 387e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual bool hasIntegratedCPP() const { return false; } 388e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 389e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual void ConstructJob(Compilation &C, const JobAction &JA, 3901eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3911eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 393e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan const char *LinkingOutput) const; 394e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan }; 39592dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 396e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan public: 3973038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("auroraux::Link", "linker", TC) {} 398e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 399e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual bool hasIntegratedCPP() const { return false; } 400e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 401e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual void ConstructJob(Compilation &C, const JobAction &JA, 4021eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4041eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 405e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan const char *LinkingOutput) const; 406e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan }; 407e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace auroraux 40868a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 40911e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar /// dragonfly -- Directly call GNU Binutils assembler and linker 41011e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbarnamespace dragonfly { 41192dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 41211e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar public: 4133038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("dragonfly::Assemble", "assembler", 4143038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 41511e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 41611e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 41711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 41811e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4191eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4201eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4211eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 42211e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar const char *LinkingOutput) const; 42311e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar }; 42492dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 42511e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar public: 4263038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("dragonfly::Link", "linker", TC) {} 42711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 42811e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 42911e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 43011e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4311eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4321eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 43411e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar const char *LinkingOutput) const; 43511e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar }; 436e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace dragonfly 43711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 4389c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace toolchains 4399c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace driver 4409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace clang 4419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 442e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan#endif // CLANG_LIB_DRIVER_TOOLS_H_ 443