Tools.h revision 8c631e3b6fb4d838809852e85ba4145be45a221f
1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//===--- Tools.h - Tool Implementations -------------------------*- C++ -*-===// 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// The LLVM Compiler Infrastructure 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// This file is distributed under the University of Illinois Open Source 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// License. See LICENSE.TXT for details. 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//===----------------------------------------------------------------------===// 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef CLANG_LIB_DRIVER_TOOLS_H_ 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define CLANG_LIB_DRIVER_TOOLS_H_ 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "clang/Driver/Tool.h" 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "clang/Driver/Types.h" 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "clang/Driver/Util.h" 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "llvm/Support/Compiler.h" 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace clang { 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace driver { 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class Driver; 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace toolchains { 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class Darwin; 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace tools { 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// \brief Clang compiler tool. 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Clang : public Tool { 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddPreprocessingOptions(const Driver &D, 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &Args, 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ArgStringList &CmdArgs, 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs) const; 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddX86TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Clang(const ToolChain &TC) : Tool("clang", "clang frontend", TC) {} 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasGoodDiagnostics() const { return true; } 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedAssembler() const { return true; } 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return true; } 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// \brief Clang integrated assembler tool. 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY ClangAs : public Tool { 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 59674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom ClangAs(const ToolChain &TC) : Tool("clang::as", 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "clang integrated assembler", TC) {} 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasGoodDiagnostics() const { return true; } 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedAssembler() const { return false; } 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// gcc - Generic GCC tool implementations. 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace gcc { 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Common : public Tool { 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Common(const char *Name, const char *ShortName, 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ToolChain &TC) : Tool(Name, ShortName, TC) {} 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// RenderExtraToolArgs - Render any arguments necessary to force 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// the particular tool mode. 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void RenderExtraToolArgs(const JobAction &JA, 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ArgStringList &CmdArgs) const = 0; 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Preprocess : public Common { 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Preprocess(const ToolChain &TC) : Common("gcc::Preprocess", 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "gcc preprocessor", TC) {} 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasGoodDiagnostics() const { return true; } 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void RenderExtraToolArgs(const JobAction &JA, 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ArgStringList &CmdArgs) const; 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Precompile : public Common { 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Precompile(const ToolChain &TC) : Common("gcc::Precompile", 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "gcc precompile", TC) {} 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 112674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasGoodDiagnostics() const { return true; } 113674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return true; } 114674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 115674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void RenderExtraToolArgs(const JobAction &JA, 116674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom ArgStringList &CmdArgs) const; 117674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 119674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom class LLVM_LIBRARY_VISIBILITY Compile : public Common { 120674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 121674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Compile(const ToolChain &TC) : Common("gcc::Compile", 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "gcc frontend", TC) {} 123674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 124674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasGoodDiagnostics() const { return true; } 125674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return true; } 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 127674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void RenderExtraToolArgs(const JobAction &JA, 128674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom ArgStringList &CmdArgs) const; 129674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 131674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom class LLVM_LIBRARY_VISIBILITY Assemble : public Common { 132674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 133674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Assemble(const ToolChain &TC) : Common("gcc::Assemble", 134674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom "assembler (via gcc)", TC) {} 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 136674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 137674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 138674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void RenderExtraToolArgs(const JobAction &JA, 139674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom ArgStringList &CmdArgs) const; 140674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Link : public Common { 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Link(const ToolChain &TC) : Common("gcc::Link", 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "linker (via gcc)", TC) {} 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void RenderExtraToolArgs(const JobAction &JA, 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ArgStringList &CmdArgs) const; 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace gcc 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace darwin { 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY DarwinTool : public Tool { 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project protected: 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddDarwinArch(const ArgList &Args, ArgStringList &CmdArgs) const; 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const toolchains::Darwin &getDarwinToolChain() const { 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return reinterpret_cast<const toolchains::Darwin&>(getToolChain()); 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project DarwinTool(const char *Name, const char *ShortName, 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ToolChain &TC) : Tool(Name, ShortName, TC) {} 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY CC1 : public DarwinTool { 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static const char *getBaseInputName(const ArgList &Args, 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Input); 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static const char *getBaseInputStem(const ArgList &Args, 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Input); 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static const char *getDependencyFileName(const ArgList &Args, 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs); 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project protected: 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *getCC1Name(types::ID Type) const; 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddCC1Args(const ArgList &Args, ArgStringList &CmdArgs) const; 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgStringList &OutputArgs) const; 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddCPPOptionsArgs(const ArgList &Args, ArgStringList &CmdArgs, 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgStringList &OutputArgs) const; 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddCPPUniqueOptionsArgs(const ArgList &Args, 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ArgStringList &CmdArgs, 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs) const; 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddCPPArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project CC1(const char *Name, const char *ShortName, 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ToolChain &TC) : DarwinTool(Name, ShortName, TC) {} 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasGoodDiagnostics() const { return true; } 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return true; } 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Preprocess : public CC1 { 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Preprocess(const ToolChain &TC) : CC1("darwin::Preprocess", 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "gcc preprocessor", TC) {} 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Compile : public CC1 { 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Compile(const ToolChain &TC) : CC1("darwin::Compile", "gcc frontend", TC) {} 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 224674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Assemble : public DarwinTool { 226674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 227674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Assemble(const ToolChain &TC) : DarwinTool("darwin::Assemble", 228674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom "assembler", TC) {} 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 232e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual void ConstructJob(Compilation &C, const JobAction &JA, 233674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 234674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 235674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfoList &Inputs, 236674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 237674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const char *LinkingOutput) const; 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Link : public DarwinTool { 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project void AddLinkArgs(const ArgList &Args, ArgStringList &CmdArgs) const; 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 244674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Link(const ToolChain &TC) : DarwinTool("darwin::Link", "linker", TC) {} 245674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 246674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 248674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 249674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 250674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 251674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfoList &Inputs, 252674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 253674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const char *LinkingOutput) const; 254674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 256674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom class LLVM_LIBRARY_VISIBILITY Lipo : public DarwinTool { 257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Lipo(const ToolChain &TC) : DarwinTool("darwin::Lipo", "lipo", TC) {} 259674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 260674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 261674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 262674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 263674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 264674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 265674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfoList &Inputs, 266674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 267c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root const char *LinkingOutput) const; 268674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Dsymutil : public DarwinTool { 271674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Dsymutil(const ToolChain &TC) : DarwinTool("darwin::Dsymutil", 273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "dsymutil", TC) {} 274674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 275674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 276674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 277674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 278674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 279674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 280392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const InputInfoList &Inputs, 281674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// openbsd -- Directly call GNU Binutils assembler and linker 287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace openbsd { 288674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 289674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Assemble(const ToolChain &TC) : Tool("openbsd::Assemble", "assembler", 291392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom TC) {} 292674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 293674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 295674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 298674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfoList &Inputs, 299674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 300674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const char *LinkingOutput) const; 301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom }; 302392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom class LLVM_LIBRARY_VISIBILITY Link : public Tool { 303674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Link(const ToolChain &TC) : Tool("openbsd::Link", "linker", TC) {} 305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 307392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 308392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 309674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 310674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 311674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfoList &Inputs, 312674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace openbsd 316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// freebsd -- Directly call GNU Binutils assembler and linker 318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace freebsd { 319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Assemble(const ToolChain &TC) : Tool("freebsd::Assemble", "assembler", 322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project TC) {} 323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Link : public Tool { 334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 335674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Link(const ToolChain &TC) : Tool("freebsd::Link", "linker", TC) {} 336674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 337674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 338674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 339674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 340674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Job &Dest, 341674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const InputInfo &Output, 342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace freebsd 347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project /// minix -- Directly call GNU Binutils assembler and linker 349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace minix { 350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Assemble(const ToolChain &TC) : Tool("minix::Assemble", "assembler", 353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project TC) {} 354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Link : public Tool { 365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 366674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Link(const ToolChain &TC) : Tool("minix::Link", "linker", TC) {} 367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 368392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 369392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 370392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 371392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom Job &Dest, 372392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const InputInfo &Output, 373392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const InputInfoList &Inputs, 374392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const ArgList &TCArgs, 375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const char *LinkingOutput) const; 376392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom }; 377392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} // end namespace minix 378392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 379392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom /// auroraux -- Directly call GNU Binutils assembler and linker 380392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromnamespace auroraux { 381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 382392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom public: 383392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom Assemble(const ToolChain &TC) : Tool("auroraux::Assemble", "assembler", 384392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom TC) {} 385392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 386392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 389392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom Job &Dest, 390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 394674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom }; 395674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom class LLVM_LIBRARY_VISIBILITY Link : public Tool { 396674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom public: 397674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom Link(const ToolChain &TC) : Tool("auroraux::Link", "linker", TC) {} 398674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 399674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual bool hasIntegratedCPP() const { return false; } 400674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom 401674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const char *LinkingOutput) const; 407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 408674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom} // end namespace auroraux 409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom /// dragonfly -- Directly call GNU Binutils assembler and linker 411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace dragonfly { 412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { 413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Assemble(const ToolChain &TC) : Tool("dragonfly::Assemble", "assembler", 415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project TC) {} 416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual void ConstructJob(Compilation &C, const JobAction &JA, 420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const ArgList &TCArgs, 424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const char *LinkingOutput) const; 425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project class LLVM_LIBRARY_VISIBILITY Link : public Tool { 427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project public: 428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Link(const ToolChain &TC) : Tool("dragonfly::Link", "linker", TC) {} 429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project virtual bool hasIntegratedCPP() const { return false; } 431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 432674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom virtual void ConstructJob(Compilation &C, const JobAction &JA, 433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Job &Dest, 434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfo &Output, 435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const InputInfoList &Inputs, 436674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const ArgList &TCArgs, 437674ff29eb647c577ba1ef822c373ead69dc386cfBrian Carlstrom const char *LinkingOutput) const; 438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace dragonfly 440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace toolchains 442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} // end namespace driver 443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} // end namespace clang 444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif // CLANG_LIB_DRIVER_TOOLS_H_ 446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project