Tools.h revision 182564cd14a2105fff05fd52f5940eff96161d57
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 17182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger#include "llvm/ADT/Triple.h" 189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "llvm/Support/Compiler.h" 199c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace clang { 219c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnamespace driver { 22df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor class Driver; 23df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor 2402633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbarnamespace toolchains { 25f395528158379e7ea9f6ff4bbb791abadca15aabDaniel Dunbar class Darwin; 2602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar} 2702633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 28985b825eea7387be10478de0430815ed6a673326Daniel Dunbarnamespace tools { 299c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 3020a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar /// \brief Clang compiler tool. 3192dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Clang : public Tool { 32df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor void AddPreprocessingOptions(const Driver &D, 33df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor const ArgList &Args, 34c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar ArgStringList &CmdArgs, 35c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar const InputInfo &Output, 36c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar const InputInfoList &Inputs) const; 37c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar 38fa41d6975058ceb1b8a24564f6dcec72f89f62e8Daniel Dunbar void AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs, 39fa41d6975058ceb1b8a24564f6dcec72f89f62e8Daniel Dunbar bool KernelOrKext) const; 40ed734737d5af31906e30e537d4a41c760ddcfc59Eric Christopher void AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 419284d215022457ba867080a713f08f026d89ea17Bruno Cardoso Lopes void AddSparcTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 426acda16e9c194dcbd0dea64341e182bdb65d0f41Daniel Dunbar void AddX86TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 436acda16e9c194dcbd0dea64341e182bdb65d0f41Daniel Dunbar 449c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 453038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Clang(const ToolChain &TC) : Tool("clang", "clang frontend", TC) {} 469c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 4760a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 488767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar virtual bool hasIntegratedAssembler() const { return true; } 499c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 5047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 5147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 5220a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const InputInfo &Output, 5320a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const InputInfoList &Inputs, 5420a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const ArgList &TCArgs, 5520a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar const char *LinkingOutput) const; 5620a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar }; 5720a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 5820a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar /// \brief Clang integrated assembler tool. 5920a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar class LLVM_LIBRARY_VISIBILITY ClangAs : public Tool { 6020a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar public: 613038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar ClangAs(const ToolChain &TC) : Tool("clang::as", 623038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "clang integrated assembler", TC) {} 6320a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 6420a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 6520a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasIntegratedAssembler() const { return false; } 6620a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 6720a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar 6820a9aa50f9a7d4b03f97bc67e96da1d605c309a2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 701eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 7247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 739c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 749c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 7531b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar /// gcc - Generic GCC tool implementations. 7631b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbarnamespace gcc { 7792dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Common : public Tool { 789c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 793038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Common(const char *Name, const char *ShortName, 803038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : Tool(Name, ShortName, TC) {} 8147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 8247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 841eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 851eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 8647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar const char *LinkingOutput) const; 87b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 88b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar /// RenderExtraToolArgs - Render any arguments necessary to force 89b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar /// the particular tool mode. 9082b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 9182b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const = 0; 929c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 939c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 941eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 9592dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Preprocess : public Common { 969c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 973038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Preprocess(const ToolChain &TC) : Common("gcc::Preprocess", 983038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc preprocessor", TC) {} 99b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 10060a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 101b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 102b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 10382b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 10482b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 105b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar }; 106b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 10792dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Precompile : public Common { 108b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar public: 1093038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Precompile(const ToolChain &TC) : Common("gcc::Precompile", 1103038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc precompile", TC) {} 1119c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 11260a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 1139c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 11447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 11582b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 11682b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 11992dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Compile : public Common { 1209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1213038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Compile(const ToolChain &TC) : Common("gcc::Compile", 1223038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc frontend", TC) {} 1239c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 12460a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 1259c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 12647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 12782b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 12882b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1299c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1309c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 13192dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Common { 1329c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1333038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Common("gcc::Assemble", 1343038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "assembler (via gcc)", TC) {} 1359c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1369c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 13747ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 13882b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 13982b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 1419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 14292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Common { 1439c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar public: 1443038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Common("gcc::Link", 1453038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "linker (via gcc)", TC) {} 1469c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1479c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 14847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar 14982b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar virtual void RenderExtraToolArgs(const JobAction &JA, 15082b51cce8cea6b6bb6175c406c2ab425c91d9dc8Daniel Dunbar ArgStringList &CmdArgs) const; 1519c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar }; 15231b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar} // end namespace gcc 1539c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 154ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbarnamespace darwin { 15592dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY DarwinTool : public Tool { 156fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar protected: 157fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar void AddDarwinArch(const ArgList &Args, ArgStringList &CmdArgs) const; 158fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 159fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar const toolchains::Darwin &getDarwinToolChain() const { 160fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar return reinterpret_cast<const toolchains::Darwin&>(getToolChain()); 161fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar } 162fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 163fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar public: 1643038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar DarwinTool(const char *Name, const char *ShortName, 1653038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : Tool(Name, ShortName, TC) {} 166fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar }; 167fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 16892dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY CC1 : public DarwinTool { 169a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar public: 1701eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getBaseInputName(const ArgList &Args, 171a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Input); 1721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getBaseInputStem(const ArgList &Args, 173a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Input); 1741eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump static const char *getDependencyFileName(const ArgList &Args, 175a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar const InputInfoList &Inputs); 176a5a7bd0de7b6b80212095195a055a4a43f21d4b2Daniel Dunbar 17740f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar protected: 17840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *getCC1Name(types::ID Type) const; 179a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar 180a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar void AddCC1Args(const ArgList &Args, ArgStringList &CmdArgs) const; 18140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar void AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 18240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const InputInfoList &Inputs, 183a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const ArgStringList &OutputArgs) const; 18440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar void AddCPPOptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 18540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const InputInfoList &Inputs, 186a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const ArgStringList &OutputArgs) const; 1871eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump void AddCPPUniqueOptionsArgs(const ArgList &Args, 188a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar ArgStringList &CmdArgs, 189a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar const InputInfoList &Inputs) const; 190a3ec60e0cf2a1916f479288998d31bd980b1a306Daniel Dunbar void AddCPPArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 19140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 19240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 1933038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar CC1(const char *Name, const char *ShortName, 1943038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar const ToolChain &TC) : DarwinTool(Name, ShortName, TC) {} 19540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 19660a53f24b160724de0e8dd0e142009981540fd26Daniel Dunbar virtual bool hasGoodDiagnostics() const { return true; } 19740f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual bool hasIntegratedCPP() const { return true; } 19840f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 19940f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 20092dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Preprocess : public CC1 { 20140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 2023038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Preprocess(const ToolChain &TC) : CC1("darwin::Preprocess", 2033038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "gcc preprocessor", TC) {} 20440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 20540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2061eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2071eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2081eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 20940f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *LinkingOutput) const; 21040f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 21140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 21292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Compile : public CC1 { 21340f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar public: 2143038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Compile(const ToolChain &TC) : CC1("darwin::Compile", "gcc frontend", TC) {} 21540f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 21640f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2171eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2181eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2191eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 22040f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar const char *LinkingOutput) const; 22140f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar }; 22240f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbar 22392dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public DarwinTool { 2248cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar public: 2253038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : DarwinTool("darwin::Assemble", 2263038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar "assembler", TC) {} 2278cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 2288cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 2298cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 2308cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2311eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2321eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 23402633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar const char *LinkingOutput) const; 23502633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar }; 23602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 23792dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public DarwinTool { 238748de8eda222f087434d8bd703176b316a061341Daniel Dunbar void AddLinkArgs(Compilation &C, const ArgList &Args, 239748de8eda222f087434d8bd703176b316a061341Daniel Dunbar ArgStringList &CmdArgs) const; 24002633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 24102633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar public: 2423038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : DarwinTool("darwin::Link", "linker", TC) {} 24302633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 24402633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 24502633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 24602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2491eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 2508cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar const char *LinkingOutput) const; 2518cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar }; 2528cac5f7e1ce63dd77ee0fb4ef68f9fa804f41ea6Daniel Dunbar 25392dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Lipo : public DarwinTool { 254ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar public: 2553038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Lipo(const ToolChain &TC) : DarwinTool("darwin::Lipo", "lipo", TC) {} 256ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 257ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 258ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 259ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2601eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2611eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2621eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 2636e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const char *LinkingOutput) const; 2646e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar }; 2656e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2666e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar class LLVM_LIBRARY_VISIBILITY Dsymutil : public DarwinTool { 2676e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar public: 2686e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar Dsymutil(const ToolChain &TC) : DarwinTool("darwin::Dsymutil", 2696e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar "dsymutil", TC) {} 2706e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2716e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 2726e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 2736e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2746e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const InputInfo &Output, 2756e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const InputInfoList &Inputs, 2766e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar const ArgList &TCArgs, 277f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar const char *LinkingOutput) const; 278f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar }; 279f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar} 280f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 281f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar /// openbsd -- Directly call GNU Binutils assembler and linker 282f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbarnamespace openbsd { 28392dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 284f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar public: 2853038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("openbsd::Assemble", "assembler", 2863038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 287f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 288f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 289f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 290f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 2911eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 2921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 2931eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 294f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar const char *LinkingOutput) const; 295f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar }; 29692dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 297f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar public: 2983038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("openbsd::Link", "linker", TC) {} 299f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 300f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 301f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 302f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3041eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 306ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar const char *LinkingOutput) const; 307ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar }; 308e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace openbsd 309ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 31068a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar /// freebsd -- Directly call GNU Binutils assembler and linker 31168a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbarnamespace freebsd { 31292dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 31368a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar public: 3143038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("freebsd::Assemble", "assembler", 3153038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 31668a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 31768a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 31868a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 31968a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3201eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3211eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3221eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 32368a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar const char *LinkingOutput) const; 32468a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar }; 32592dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 326008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar public: 3273038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("freebsd::Link", "linker", TC) {} 328008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar 329008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 330008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar 331008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 3321eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 3331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 3341eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 335008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar const char *LinkingOutput) const; 336008f54a54299eaafdaa940e2bdeaf55935ecd95aDaniel Dunbar }; 337e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace freebsd 338e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 3398e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer /// netbsd -- Directly call GNU Binutils assembler and linker 3408e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramernamespace netbsd { 3418e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 342182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger private: 343182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger const llvm::Triple ToolTriple; 344182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger 3458e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer public: 346182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger Assemble(const ToolChain &TC, const llvm::Triple &ToolTriple) 347182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger : Tool("netbsd::Assemble", "assembler", TC), ToolTriple(ToolTriple) {} 3488e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer 3498e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer virtual bool hasIntegratedCPP() const { return false; } 3508e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer 3518e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer virtual void ConstructJob(Compilation &C, const JobAction &JA, 3528e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const InputInfo &Output, 3538e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const InputInfoList &Inputs, 3548e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const ArgList &TCArgs, 3558e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const char *LinkingOutput) const; 3568e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer }; 3578e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer class LLVM_LIBRARY_VISIBILITY Link : public Tool { 358182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger private: 359182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger const llvm::Triple ToolTriple; 360182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger 3618e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer public: 362182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger Link(const ToolChain &TC, const llvm::Triple &ToolTriple) 363182564cd14a2105fff05fd52f5940eff96161d57Joerg Sonnenberger : Tool("netbsd::Ling", "linker", TC), ToolTriple(ToolTriple) {} 3648e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer 3658e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer virtual bool hasIntegratedCPP() const { return false; } 3668e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer 3678e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer virtual void ConstructJob(Compilation &C, const JobAction &JA, 3688e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const InputInfo &Output, 3698e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const InputInfoList &Inputs, 3708e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const ArgList &TCArgs, 3718e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer const char *LinkingOutput) const; 3728e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer }; 3738e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer} // end namespace netbsd 3748e50a96b387dca7525caa8a6add31420dd82a2cdBenjamin Kramer 375ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola /// linux -- Directly call GNU Binutils assembler and linker 376ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindolanamespace linuxtools { 377ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 378ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola public: 379ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola Assemble(const ToolChain &TC) : Tool("linux::Assemble", "assembler", 380ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola TC) {} 381ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola 382ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola virtual bool hasIntegratedCPP() const { return false; } 383ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola 384ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola virtual void ConstructJob(Compilation &C, const JobAction &JA, 385ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const InputInfo &Output, 386ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const InputInfoList &Inputs, 387ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const ArgList &TCArgs, 388ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola const char *LinkingOutput) const; 389ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola }; 390c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola class LLVM_LIBRARY_VISIBILITY Link : public Tool { 391c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola public: 392c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola Link(const ToolChain &TC) : Tool("linux::Link", "linker", TC) {} 393c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola 394c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola virtual bool hasIntegratedCPP() const { return false; } 395c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola 396c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola virtual void ConstructJob(Compilation &C, const JobAction &JA, 397c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola const InputInfo &Output, 398c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola const InputInfoList &Inputs, 399c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola const ArgList &TCArgs, 400c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola const char *LinkingOutput) const; 401c1da981bba867681004004b2d54ec2fdf3c08913Rafael Espindola }; 402ba30bbe4e36a30a274da809a11a42f9cdc168e92Rafael Espindola} 40338e317d6dce161b249508686cc67eb7176958762Chris Lattner /// minix -- Directly call GNU Binutils assembler and linker 40438e317d6dce161b249508686cc67eb7176958762Chris Lattnernamespace minix { 40538e317d6dce161b249508686cc67eb7176958762Chris Lattner class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 40638e317d6dce161b249508686cc67eb7176958762Chris Lattner public: 40738e317d6dce161b249508686cc67eb7176958762Chris Lattner Assemble(const ToolChain &TC) : Tool("minix::Assemble", "assembler", 40838e317d6dce161b249508686cc67eb7176958762Chris Lattner TC) {} 40938e317d6dce161b249508686cc67eb7176958762Chris Lattner 41038e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual bool hasIntegratedCPP() const { return false; } 41138e317d6dce161b249508686cc67eb7176958762Chris Lattner 41238e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual void ConstructJob(Compilation &C, const JobAction &JA, 41338e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfo &Output, 41438e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfoList &Inputs, 41538e317d6dce161b249508686cc67eb7176958762Chris Lattner const ArgList &TCArgs, 41638e317d6dce161b249508686cc67eb7176958762Chris Lattner const char *LinkingOutput) const; 41738e317d6dce161b249508686cc67eb7176958762Chris Lattner }; 41838e317d6dce161b249508686cc67eb7176958762Chris Lattner class LLVM_LIBRARY_VISIBILITY Link : public Tool { 41938e317d6dce161b249508686cc67eb7176958762Chris Lattner public: 42038e317d6dce161b249508686cc67eb7176958762Chris Lattner Link(const ToolChain &TC) : Tool("minix::Link", "linker", TC) {} 42138e317d6dce161b249508686cc67eb7176958762Chris Lattner 42238e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual bool hasIntegratedCPP() const { return false; } 42338e317d6dce161b249508686cc67eb7176958762Chris Lattner 42438e317d6dce161b249508686cc67eb7176958762Chris Lattner virtual void ConstructJob(Compilation &C, const JobAction &JA, 42538e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfo &Output, 42638e317d6dce161b249508686cc67eb7176958762Chris Lattner const InputInfoList &Inputs, 42738e317d6dce161b249508686cc67eb7176958762Chris Lattner const ArgList &TCArgs, 42838e317d6dce161b249508686cc67eb7176958762Chris Lattner const char *LinkingOutput) const; 42938e317d6dce161b249508686cc67eb7176958762Chris Lattner }; 43038e317d6dce161b249508686cc67eb7176958762Chris Lattner} // end namespace minix 43138e317d6dce161b249508686cc67eb7176958762Chris Lattner 432e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan /// auroraux -- Directly call GNU Binutils assembler and linker 433e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghannamespace auroraux { 43492dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 435e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan public: 4363038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("auroraux::Assemble", "assembler", 4373038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 438e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 439e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual bool hasIntegratedCPP() const { return false; } 440e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 441e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual void ConstructJob(Compilation &C, const JobAction &JA, 4421eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4441eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 445e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan const char *LinkingOutput) const; 446e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan }; 44792dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 448e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan public: 4493038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("auroraux::Link", "linker", TC) {} 450e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 451e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual bool hasIntegratedCPP() const { return false; } 452e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan 453e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan virtual void ConstructJob(Compilation &C, const JobAction &JA, 4541eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4551eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4561eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 457e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan const char *LinkingOutput) const; 458e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan }; 459e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace auroraux 46068a31d406c6dc4382c700d1199b062de2aa7e1daDaniel Dunbar 46111e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar /// dragonfly -- Directly call GNU Binutils assembler and linker 46211e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbarnamespace dragonfly { 46392dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 46411e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar public: 4653038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Assemble(const ToolChain &TC) : Tool("dragonfly::Assemble", "assembler", 4663038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar TC) {} 46711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 46811e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 46911e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 47011e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4731eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 47411e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar const char *LinkingOutput) const; 47511e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar }; 47692dd1915842410005c68d32c43bb3b3cf5a4a702Duncan Sands class LLVM_LIBRARY_VISIBILITY Link : public Tool { 47711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar public: 4783038204fd8f6ff22082dd18e4b12ed252b75a5e4Daniel Dunbar Link(const ToolChain &TC) : Tool("dragonfly::Link", "linker", TC) {} 47911e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 48011e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual bool hasIntegratedCPP() const { return false; } 48111e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 48211e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar virtual void ConstructJob(Compilation &C, const JobAction &JA, 4831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfo &Output, 4841eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const InputInfoList &Inputs, 4851eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const ArgList &TCArgs, 48611e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar const char *LinkingOutput) const; 48711e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar }; 488e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan} // end namespace dragonfly 48911e1b40d759a643086f590f6ffbd9d68360bad46Daniel Dunbar 490ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer /// Visual studio tools. 491ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencernamespace visualstudio { 492ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer class LLVM_LIBRARY_VISIBILITY Link : public Tool { 493ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer public: 494ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer Link(const ToolChain &TC) : Tool("visualstudio::Link", "linker", TC) {} 495ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer 496ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer virtual bool hasIntegratedCPP() const { return false; } 497ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer 498ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer virtual void ConstructJob(Compilation &C, const JobAction &JA, 499ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer const InputInfo &Output, 500ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer const InputInfoList &Inputs, 501ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer const ArgList &TCArgs, 502ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer const char *LinkingOutput) const; 503ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer }; 504ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer} // end namespace visualstudio 505ff58e3610f4e12094def69eb2d6dcb4330378d8fMichael J. Spencer 5069c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace toolchains 5079c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace driver 5089c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // end namespace clang 5099c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 510e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan#endif // CLANG_LIB_DRIVER_TOOLS_H_ 511