clang 24.0.0git
clang::driver::Tool Class Referenceabstract

Tool - Information on a specific compilation tool. More...

#include "clang/Driver/Tool.h"

Inherited by clang::driver::toolchains::cygwin::Linker, clang::driver::tools::AMDGCN::Linker, clang::driver::tools::ARM64XObjcopy, clang::driver::tools::AVR::Linker, clang::driver::tools::CSKY::Linker, clang::driver::tools::Clang, clang::driver::tools::ClangAs, clang::driver::tools::CrossWindows::Assembler, clang::driver::tools::CrossWindows::Linker, clang::driver::tools::Flang, clang::driver::tools::HIPSPV::Linker, clang::driver::tools::LinkerWrapper, clang::driver::tools::MinGW::Assembler, clang::driver::tools::MinGW::Linker, clang::driver::tools::NVPTX::Assembler, clang::driver::tools::NVPTX::FatBinary, clang::driver::tools::NVPTX::Linker, clang::driver::tools::OffloadBundler, clang::driver::tools::OffloadPackager, clang::driver::tools::PS4cpu::Linker, clang::driver::tools::PS5cpu::Linker, clang::driver::tools::PScpu::Assembler, clang::driver::tools::SPIRV::Assembler, clang::driver::tools::SPIRV::Linker, clang::driver::tools::SPIRV::Translator, clang::driver::tools::XCore::Assembler, clang::driver::tools::XCore::Linker, clang::driver::tools::aix::Assembler, clang::driver::tools::aix::Linker, clang::driver::tools::amdgpu::Linker, clang::driver::tools::baremetal::Linker, clang::driver::tools::baremetal::StaticLibTool, clang::driver::tools::darwin::MachOTool, clang::driver::tools::dragonfly::Assembler, clang::driver::tools::dragonfly::Linker, clang::driver::tools::freebsd::Assembler, clang::driver::tools::freebsd::Linker, clang::driver::tools::fuchsia::Linker, clang::driver::tools::fuchsia::StaticLibTool, clang::driver::tools::gcc::Common, clang::driver::tools::gnutools::Assembler, clang::driver::tools::gnutools::Linker, clang::driver::tools::gnutools::StaticLibTool, clang::driver::tools::haiku::Linker, clang::driver::tools::hexagon::Assembler, clang::driver::tools::hexagon::Linker, clang::driver::tools::hlsl::LLVMObjcopy, clang::driver::tools::hlsl::MetalConverter, clang::driver::tools::hlsl::Validator, clang::driver::tools::ifstool::Merger, clang::driver::tools::msp430::Linker, clang::driver::tools::netbsd::Assembler, clang::driver::tools::netbsd::Linker, clang::driver::tools::openbsd::Assembler, clang::driver::tools::openbsd::Linker, clang::driver::tools::serenity::Linker, clang::driver::tools::solaris::Linker, clang::driver::tools::uefi::Linker, clang::driver::tools::visualstudio::Linker, clang::driver::tools::wasm::Linker, clang::driver::tools::zos::Assembler, and clang::driver::tools::zos::Linker.

Public Member Functions

 Tool (const char *Name, const char *ShortName, const ToolChain &TC)
virtual ~Tool ()
const char * getName () const
const char * getShortName () const
const ToolChaingetToolChain () const
virtual bool hasIntegratedAssembler () const
virtual bool hasIntegratedBackend () const
virtual bool canEmitIR () const
virtual bool hasIntegratedCPP () const =0
virtual bool isLinkJob () const
virtual bool isDsymutilJob () const
virtual bool hasGoodDiagnostics () const
 Does this tool have "good" standardized diagnostics, or should the driver add an additional "command failed" diagnostic on failures.
virtual void ConstructJob (Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, const llvm::opt::ArgList &TCArgs, const char *LinkingOutput) const =0
 ConstructJob - Construct jobs to perform the action JA, writing to Output and with Inputs, and add the jobs to C.

Detailed Description

Tool - Information on a specific compilation tool.

Definition at line 32 of file Tool.h.

Constructor & Destructor Documentation

◆ Tool()

Tool::Tool ( const char * Name,
const char * ShortName,
const ToolChain & TC )

Definition at line 13 of file Tool.cpp.

Referenced by clang::driver::tools::ARM64XObjcopy::ARM64XObjcopy(), clang::driver::tools::aix::Assembler::Assembler(), clang::driver::tools::CrossWindows::Assembler::Assembler(), clang::driver::tools::dragonfly::Assembler::Assembler(), clang::driver::tools::freebsd::Assembler::Assembler(), clang::driver::tools::gnutools::Assembler::Assembler(), clang::driver::tools::hexagon::Assembler::Assembler(), clang::driver::tools::MinGW::Assembler::Assembler(), clang::driver::tools::netbsd::Assembler::Assembler(), clang::driver::tools::NVPTX::Assembler::Assembler(), clang::driver::tools::openbsd::Assembler::Assembler(), clang::driver::tools::PScpu::Assembler::Assembler(), clang::driver::tools::SPIRV::Assembler::Assembler(), clang::driver::tools::XCore::Assembler::Assembler(), clang::driver::tools::zos::Assembler::Assembler(), clang::driver::tools::Clang::Clang(), clang::driver::tools::ClangAs::ClangAs(), clang::driver::tools::gcc::Common::Common(), clang::driver::tools::NVPTX::FatBinary::FatBinary(), clang::driver::tools::Flang::Flang(), clang::driver::toolchains::cygwin::Linker::Linker(), clang::driver::tools::aix::Linker::Linker(), clang::driver::tools::AMDGCN::Linker::Linker(), clang::driver::tools::amdgpu::Linker::Linker(), clang::driver::tools::AVR::Linker::Linker(), clang::driver::tools::baremetal::Linker::Linker(), clang::driver::tools::CrossWindows::Linker::Linker(), clang::driver::tools::CSKY::Linker::Linker(), clang::driver::tools::dragonfly::Linker::Linker(), clang::driver::tools::freebsd::Linker::Linker(), clang::driver::tools::fuchsia::Linker::Linker(), clang::driver::tools::gnutools::Linker::Linker(), clang::driver::tools::haiku::Linker::Linker(), clang::driver::tools::hexagon::Linker::Linker(), clang::driver::tools::HIPSPV::Linker::Linker(), clang::driver::tools::MinGW::Linker::Linker(), clang::driver::tools::msp430::Linker::Linker(), clang::driver::tools::netbsd::Linker::Linker(), clang::driver::tools::NVPTX::Linker::Linker(), clang::driver::tools::openbsd::Linker::Linker(), clang::driver::tools::PS4cpu::Linker::Linker(), clang::driver::tools::PS5cpu::Linker::Linker(), clang::driver::tools::serenity::Linker::Linker(), clang::driver::tools::solaris::Linker::Linker(), clang::driver::tools::SPIRV::Linker::Linker(), clang::driver::tools::uefi::Linker::Linker(), clang::driver::tools::visualstudio::Linker::Linker(), clang::driver::tools::wasm::Linker::Linker(), clang::driver::tools::XCore::Linker::Linker(), clang::driver::tools::zos::Linker::Linker(), clang::driver::tools::LinkerWrapper::LinkerWrapper(), clang::driver::tools::hlsl::LLVMObjcopy::LLVMObjcopy(), clang::driver::tools::darwin::MachOTool::MachOTool(), clang::driver::tools::ifstool::Merger::Merger(), clang::driver::tools::hlsl::MetalConverter::MetalConverter(), clang::driver::tools::OffloadBundler::OffloadBundler(), clang::driver::tools::OffloadPackager::OffloadPackager(), clang::driver::tools::baremetal::StaticLibTool::StaticLibTool(), clang::driver::tools::fuchsia::StaticLibTool::StaticLibTool(), clang::driver::tools::gnutools::StaticLibTool::StaticLibTool(), clang::driver::tools::SPIRV::Translator::Translator(), and clang::driver::tools::hlsl::Validator::Validator().

◆ ~Tool()

Tool::~Tool ( )
virtual

Definition at line 16 of file Tool.cpp.

Member Function Documentation

◆ canEmitIR()

virtual bool clang::driver::Tool::canEmitIR ( ) const
inlinevirtual

Reimplemented in clang::driver::tools::Clang, and clang::driver::tools::Flang.

Definition at line 56 of file Tool.h.

◆ ConstructJob()

virtual void clang::driver::Tool::ConstructJob ( Compilation & C,
const JobAction & JA,
const InputInfo & Output,
const InputInfoList & Inputs,
const llvm::opt::ArgList & TCArgs,
const char * LinkingOutput ) const
pure virtual

ConstructJob - Construct jobs to perform the action JA, writing to Output and with Inputs, and add the jobs to C.

Parameters
TCArgs- The argument list for this toolchain, with any tool chain specific translations applied.
LinkingOutput- If this output will eventually feed the linker, then this is the final output name of the linked image.

Implemented in clang::driver::toolchains::cygwin::Linker, clang::driver::tools::aix::Assembler, clang::driver::tools::aix::Linker, clang::driver::tools::AMDGCN::Linker, clang::driver::tools::amdgpu::Linker, clang::driver::tools::ARM64XObjcopy, clang::driver::tools::AVR::Linker, clang::driver::tools::baremetal::Linker, clang::driver::tools::baremetal::StaticLibTool, clang::driver::tools::Clang, clang::driver::tools::ClangAs, clang::driver::tools::CrossWindows::Assembler, clang::driver::tools::CrossWindows::Linker, clang::driver::tools::CSKY::Linker, clang::driver::tools::darwin::Assembler, clang::driver::tools::darwin::Dsymutil, clang::driver::tools::darwin::Linker, clang::driver::tools::darwin::Lipo, clang::driver::tools::darwin::StaticLibTool, clang::driver::tools::darwin::VerifyDebug, clang::driver::tools::dragonfly::Assembler, clang::driver::tools::dragonfly::Linker, clang::driver::tools::Flang, clang::driver::tools::freebsd::Assembler, clang::driver::tools::freebsd::Linker, clang::driver::tools::fuchsia::Linker, clang::driver::tools::fuchsia::StaticLibTool, clang::driver::tools::gcc::Common, clang::driver::tools::gnutools::Assembler, clang::driver::tools::gnutools::Linker, clang::driver::tools::gnutools::StaticLibTool, clang::driver::tools::haiku::Linker, clang::driver::tools::hexagon::Assembler, clang::driver::tools::hexagon::Linker, clang::driver::tools::HIPSPV::Linker, clang::driver::tools::hlsl::LLVMObjcopy, clang::driver::tools::hlsl::MetalConverter, clang::driver::tools::hlsl::Validator, clang::driver::tools::ifstool::Merger, clang::driver::tools::LinkerWrapper, clang::driver::tools::MinGW::Assembler, clang::driver::tools::MinGW::Linker, clang::driver::tools::msp430::Linker, clang::driver::tools::netbsd::Assembler, clang::driver::tools::netbsd::Linker, clang::driver::tools::NVPTX::Assembler, clang::driver::tools::NVPTX::FatBinary, clang::driver::tools::NVPTX::Linker, clang::driver::tools::OffloadBundler, clang::driver::tools::OffloadPackager, clang::driver::tools::openbsd::Assembler, clang::driver::tools::openbsd::Linker, clang::driver::tools::PS4cpu::Linker, clang::driver::tools::PS5cpu::Linker, clang::driver::tools::PScpu::Assembler, clang::driver::tools::serenity::Linker, clang::driver::tools::solaris::Assembler, clang::driver::tools::solaris::Linker, clang::driver::tools::SPIRV::Assembler, clang::driver::tools::SPIRV::Linker, clang::driver::tools::SPIRV::Translator, clang::driver::tools::uefi::Linker, clang::driver::tools::visualstudio::Linker, clang::driver::tools::wasm::Linker, clang::driver::tools::XCore::Assembler, clang::driver::tools::XCore::Linker, clang::driver::tools::zos::Assembler, and clang::driver::tools::zos::Linker.

References clang::C.

◆ getName()

const char * clang::driver::Tool::getName ( ) const
inline

Definition at line 48 of file Tool.h.

Referenced by clang::createInvocation(), isCC1Job(), and isOffloadDeviceCC1JobCandidate().

◆ getShortName()

◆ getToolChain()

const ToolChain & clang::driver::Tool::getToolChain ( ) const
inline

Definition at line 52 of file Tool.h.

Referenced by clang::driver::tools::ClangAs::AddLoongArchTargetArgs(), clang::driver::tools::ClangAs::AddMIPSTargetArgs(), clang::driver::tools::ClangAs::AddRISCVTargetArgs(), addSystemIncludeDirsFromManifest(), clang::driver::tools::ClangAs::AddX86TargetArgs(), clang::driver::toolchains::cygwin::Linker::ConstructJob(), clang::driver::tools::aix::Assembler::ConstructJob(), clang::driver::tools::aix::Linker::ConstructJob(), clang::driver::tools::AMDGCN::Linker::ConstructJob(), clang::driver::tools::amdgpu::Linker::ConstructJob(), clang::driver::tools::ARM64XObjcopy::ConstructJob(), clang::driver::tools::AVR::Linker::ConstructJob(), clang::driver::tools::baremetal::Linker::ConstructJob(), clang::driver::tools::baremetal::StaticLibTool::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::CrossWindows::Assembler::ConstructJob(), clang::driver::tools::CrossWindows::Linker::ConstructJob(), clang::driver::tools::CSKY::Linker::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::darwin::Dsymutil::ConstructJob(), clang::driver::tools::darwin::Linker::ConstructJob(), clang::driver::tools::darwin::Lipo::ConstructJob(), clang::driver::tools::darwin::StaticLibTool::ConstructJob(), clang::driver::tools::darwin::VerifyDebug::ConstructJob(), clang::driver::tools::dragonfly::Assembler::ConstructJob(), clang::driver::tools::dragonfly::Linker::ConstructJob(), clang::driver::tools::Flang::ConstructJob(), clang::driver::tools::freebsd::Assembler::ConstructJob(), clang::driver::tools::freebsd::Linker::ConstructJob(), clang::driver::tools::fuchsia::Linker::ConstructJob(), clang::driver::tools::fuchsia::StaticLibTool::ConstructJob(), clang::driver::tools::gcc::Common::ConstructJob(), clang::driver::tools::gnutools::Assembler::ConstructJob(), clang::driver::tools::gnutools::Linker::ConstructJob(), clang::driver::tools::gnutools::StaticLibTool::ConstructJob(), clang::driver::tools::haiku::Linker::ConstructJob(), clang::driver::tools::hexagon::Assembler::ConstructJob(), clang::driver::tools::hexagon::Linker::ConstructJob(), clang::driver::tools::hlsl::LLVMObjcopy::ConstructJob(), clang::driver::tools::hlsl::MetalConverter::ConstructJob(), clang::driver::tools::hlsl::Validator::ConstructJob(), clang::driver::tools::ifstool::Merger::ConstructJob(), clang::driver::tools::LinkerWrapper::ConstructJob(), clang::driver::tools::MinGW::Assembler::ConstructJob(), clang::driver::tools::MinGW::Linker::ConstructJob(), clang::driver::tools::msp430::Linker::ConstructJob(), clang::driver::tools::netbsd::Assembler::ConstructJob(), clang::driver::tools::netbsd::Linker::ConstructJob(), clang::driver::tools::NVPTX::Assembler::ConstructJob(), clang::driver::tools::NVPTX::FatBinary::ConstructJob(), clang::driver::tools::NVPTX::Linker::ConstructJob(), clang::driver::tools::OffloadBundler::ConstructJob(), clang::driver::tools::OffloadPackager::ConstructJob(), clang::driver::tools::openbsd::Assembler::ConstructJob(), clang::driver::tools::openbsd::Linker::ConstructJob(), clang::driver::tools::PS4cpu::Linker::ConstructJob(), clang::driver::tools::PS5cpu::Linker::ConstructJob(), clang::driver::tools::PScpu::Assembler::ConstructJob(), clang::driver::tools::serenity::Linker::ConstructJob(), clang::driver::tools::solaris::Linker::ConstructJob(), clang::driver::tools::SPIRV::Linker::ConstructJob(), clang::driver::tools::uefi::Linker::ConstructJob(), clang::driver::tools::visualstudio::Linker::ConstructJob(), clang::driver::tools::wasm::Linker::ConstructJob(), clang::driver::tools::XCore::Assembler::ConstructJob(), clang::driver::tools::XCore::Linker::ConstructJob(), clang::driver::tools::zos::Assembler::ConstructJob(), clang::driver::tools::zos::Linker::ConstructJob(), clang::driver::CC1Command::Execute(), clang::driver::tools::solaris::Linker::getLinkerPath(), clang::driver::tools::wasm::Linker::getLinkerPath(), clang::driver::tools::darwin::MachOTool::getMachOToolChain(), getOffloadDeviceCC1ParallelJobGroup(), getToolChainArgs(), getTriple(), isOffloadDeviceCC1JobCandidate(), and clang::driver::tools::gcc::Compiler::RenderExtraToolArgs().

◆ hasGoodDiagnostics()

virtual bool clang::driver::Tool::hasGoodDiagnostics ( ) const
inlinevirtual

Does this tool have "good" standardized diagnostics, or should the driver add an additional "command failed" diagnostic on failures.

Reimplemented in clang::driver::tools::Clang, clang::driver::tools::ClangAs, clang::driver::tools::Flang, clang::driver::tools::gcc::Compiler, and clang::driver::tools::gcc::Preprocessor.

Definition at line 63 of file Tool.h.

Referenced by clang::driver::Driver::ExecuteCompilation().

◆ hasIntegratedAssembler()

virtual bool clang::driver::Tool::hasIntegratedAssembler ( ) const
inlinevirtual

◆ hasIntegratedBackend()

virtual bool clang::driver::Tool::hasIntegratedBackend ( ) const
inlinevirtual

Reimplemented in clang::driver::tools::Clang.

Definition at line 55 of file Tool.h.

◆ hasIntegratedCPP()

virtual bool clang::driver::Tool::hasIntegratedCPP ( ) const
pure virtual

Implemented in clang::driver::toolchains::cygwin::Linker, clang::driver::tools::aix::Assembler, clang::driver::tools::aix::Linker, clang::driver::tools::AMDGCN::Linker, clang::driver::tools::amdgpu::Linker, clang::driver::tools::ARM64XObjcopy, clang::driver::tools::AVR::Linker, clang::driver::tools::baremetal::Linker, clang::driver::tools::baremetal::StaticLibTool, clang::driver::tools::Clang, clang::driver::tools::ClangAs, clang::driver::tools::CrossWindows::Assembler, clang::driver::tools::CrossWindows::Linker, clang::driver::tools::CSKY::Linker, clang::driver::tools::darwin::Assembler, clang::driver::tools::darwin::Dsymutil, clang::driver::tools::darwin::Linker, clang::driver::tools::darwin::Lipo, clang::driver::tools::darwin::StaticLibTool, clang::driver::tools::darwin::VerifyDebug, clang::driver::tools::dragonfly::Assembler, clang::driver::tools::dragonfly::Linker, clang::driver::tools::Flang, clang::driver::tools::freebsd::Assembler, clang::driver::tools::freebsd::Linker, clang::driver::tools::fuchsia::Linker, clang::driver::tools::fuchsia::StaticLibTool, clang::driver::tools::gcc::Compiler, clang::driver::tools::gcc::Linker, clang::driver::tools::gcc::Preprocessor, clang::driver::tools::gnutools::Assembler, clang::driver::tools::gnutools::Linker, clang::driver::tools::gnutools::StaticLibTool, clang::driver::tools::haiku::Linker, clang::driver::tools::hexagon::Assembler, clang::driver::tools::hexagon::Linker, clang::driver::tools::HIPSPV::Linker, clang::driver::tools::hlsl::LLVMObjcopy, clang::driver::tools::hlsl::MetalConverter, clang::driver::tools::hlsl::Validator, clang::driver::tools::ifstool::Merger, clang::driver::tools::LinkerWrapper, clang::driver::tools::MinGW::Assembler, clang::driver::tools::MinGW::Linker, clang::driver::tools::msp430::Linker, clang::driver::tools::netbsd::Assembler, clang::driver::tools::netbsd::Linker, clang::driver::tools::NVPTX::Assembler, clang::driver::tools::NVPTX::FatBinary, clang::driver::tools::NVPTX::Linker, clang::driver::tools::OffloadBundler, clang::driver::tools::OffloadPackager, clang::driver::tools::openbsd::Assembler, clang::driver::tools::openbsd::Linker, clang::driver::tools::PS4cpu::Linker, clang::driver::tools::PS5cpu::Linker, clang::driver::tools::PScpu::Assembler, clang::driver::tools::serenity::Linker, clang::driver::tools::solaris::Assembler, clang::driver::tools::solaris::Linker, clang::driver::tools::SPIRV::Assembler, clang::driver::tools::SPIRV::Linker, clang::driver::tools::SPIRV::Translator, clang::driver::tools::uefi::Linker, clang::driver::tools::visualstudio::Linker, clang::driver::tools::wasm::Linker, clang::driver::tools::XCore::Assembler, clang::driver::tools::XCore::Linker, clang::driver::tools::zos::Assembler, and clang::driver::tools::zos::Linker.

◆ isDsymutilJob()

virtual bool clang::driver::Tool::isDsymutilJob ( ) const
inlinevirtual

◆ isLinkJob()

virtual bool clang::driver::Tool::isLinkJob ( ) const
inlinevirtual

The documentation for this class was generated from the following files: