clang 20.0.0git
|
Darwin - The base Darwin tool chain. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/Driver/ToolChains/Darwin.h"
Public Types | |
enum | DarwinPlatformKind { MacOS , IPhoneOS , TvOS , WatchOS , DriverKit , XROS , LastDarwinPlatform = XROS } |
enum | DarwinEnvironmentKind { NativeEnvironment , Simulator , MacCatalyst } |
Public Types inherited from clang::driver::toolchains::MachO | |
enum | RuntimeLinkOptions : unsigned { RLO_AlwaysLink = 1 << 0 , RLO_IsEmbedded = 1 << 1 , RLO_AddRPath = 1 << 2 } |
Options to control how a runtime library is linked. More... | |
Public Types inherited from clang::driver::ToolChain | |
enum | CXXStdlibType { CST_Libcxx , CST_Libstdcxx } |
enum | RuntimeLibType { RLT_CompilerRT , RLT_Libgcc } |
enum | UnwindLibType { UNW_None , UNW_CompilerRT , UNW_Libgcc } |
enum class | UnwindTableLevel { None , Synchronous , Asynchronous } |
enum | RTTIMode { RM_Enabled , RM_Disabled } |
enum | ExceptionsMode { EM_Enabled , EM_Disabled } |
enum | FileType { FT_Object , FT_Static , FT_Shared } |
using | path_list = SmallVector< std::string, 16 > |
Public Member Functions | |
Darwin (const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args) | |
Darwin - Darwin tool chain for i386 and x86_64. | |
~Darwin () override | |
std::string | ComputeEffectiveClangTriple (const llvm::opt::ArgList &Args, types::ID InputType) const override |
ComputeEffectiveClangTriple - Return the Clang triple to use for this target, which may take into account the command line arguments. | |
Apple Specific Toolchain Implementation | |
{ | |
void | addMinVersionArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override |
void | addPlatformVersionArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override |
void | addStartObjectFileArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override |
bool | isKernelStatic () const override |
On some iOS platforms, kernel and kernel modules were built statically. | |
void | addProfileRTLibs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override |
Add any profiling runtime libraries that are needed. | |
std::string | getCompilerRT (const llvm::opt::ArgList &Args, StringRef Component, FileType Type=ToolChain::FT_Static) const override |
ToolChain Implementation | |
} { | |
bool | isCrossCompiling () const override |
Returns true if the toolchain is targeting a non-native architecture. | |
llvm::opt::DerivedArgList * | TranslateArgs (const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override |
TranslateArgs - Create a new derived argument list for any argument translations this ToolChain may wish to perform, or 0 if no tool chain specific translations are needed. | |
CXXStdlibType | GetDefaultCXXStdlibType () const override |
ObjCRuntime | getDefaultObjCRuntime (bool isNonFragile) const override |
Darwin provides an ARC runtime starting in MacOS X 10.7 and iOS 5.0. | |
bool | hasBlocksRuntime () const override |
Darwin provides a blocks runtime starting in MacOS X 10.6 and iOS 3.2. | |
void | AddCudaIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override |
Add arguments to use system-specific CUDA includes. | |
void | AddHIPIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override |
Add arguments to use system-specific HIP includes. | |
bool | UseObjCMixedDispatch () const override |
UseObjCMixedDispatchDefault - When using non-legacy dispatch, should the mixed dispatch method be used? | |
LangOptions::StackProtectorMode | GetDefaultStackProtectorLevel (bool KernelOrKext) const override |
GetDefaultStackProtectorLevel - Get the default stack protector level for this tool chain. | |
void | CheckObjCARC () const override |
Complain if this tool chain doesn't support Objective-C ARC. | |
llvm::ExceptionHandling | GetExceptionModel (const llvm::opt::ArgList &Args) const override |
GetExceptionModel - Return the tool chain exception model. | |
bool | SupportsEmbeddedBitcode () const override |
SupportsEmbeddedBitcode - Does this tool chain support embedded bitcode. | |
SanitizerMask | getSupportedSanitizers () const override |
Return sanitizers which are available in this toolchain. | |
void | printVerboseInfo (raw_ostream &OS) const override |
Dispatch to the specific toolchain for verbose printing. | |
Public Member Functions inherited from clang::driver::toolchains::MachO | |
MachO (const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args) | |
~MachO () override | |
types::ID | LookupTypeForExtension (StringRef Ext) const override |
LookupTypeForExtension - Return the default language type to use for the given extension. | |
bool | HasNativeLLVMSupport () const override |
HasNativeLTOLinker - Check whether the linker and related tools have native LLVM support. | |
bool | IsBlocksDefault () const override |
IsBlocksDefault - Does this tool chain enable -fblocks by default. | |
bool | IsMathErrnoDefault () const override |
IsMathErrnoDefault - Does this tool chain use -fmath-errno by default. | |
bool | IsEncodeExtendedBlockSignatureDefault () const override |
IsEncodeExtendedBlockSignatureDefault - Does this tool chain enable -fencode-extended-block-signature by default. | |
bool | IsObjCNonFragileABIDefault () const override |
IsObjCNonFragileABIDefault - Does this tool chain set -fobjc-nonfragile-abi by default. | |
UnwindTableLevel | getDefaultUnwindTableLevel (const llvm::opt::ArgList &Args) const override |
How detailed should the unwind tables be by default. | |
RuntimeLibType | GetDefaultRuntimeLibType () const override |
GetDefaultRuntimeLibType - Get the default runtime library variant to use. | |
bool | isPICDefault () const override |
Test whether this toolchain defaults to PIC. | |
bool | isPIEDefault (const llvm::opt::ArgList &Args) const override |
Test whether this toolchain defaults to PIE. | |
bool | isPICDefaultForced () const override |
Tests whether this toolchain forces its default for PIC, PIE or non-PIC. | |
bool | SupportsProfiling () const override |
SupportsProfiling - Does this tool chain support -pg. | |
bool | UseDwarfDebugFlags () const override |
UseDwarfDebugFlags - Embed the compile options to clang into the Dwarf compile unit information. | |
std::string | GetGlobalDebugPathRemapping () const override |
Add an additional -fdebug-prefix-map entry. | |
bool | canSplitThinLTOUnit () const override |
Returns true when it's possible to split LTO unit to use whole program devirtualization and CFI santiizers. | |
StringRef | getMachOArchName (const llvm::opt::ArgList &Args) const |
Get the "MachO" arch name for a particular compiler invocation. | |
VersionTuple | getLinkerVersion (const llvm::opt::ArgList &Args) const |
Get the version of the linker known to be available for a particular compiler invocation (via the -mlinker-version= arg). | |
virtual void | AddLinkARCArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
Add the linker arguments to link the ARC runtime library. | |
virtual void | AddLinkRuntimeLibArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, bool ForceLinkBuiltinRT=false) const |
Add the linker arguments to link the compiler runtime library. | |
bool | isTargetIOSBased () const |
Is the target either iOS or an iOS simulator? | |
void | AddLinkRuntimeLib (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, StringRef Component, RuntimeLinkOptions Opts=RuntimeLinkOptions(), bool IsShared=false) const |
Add a runtime library to the list of items to link. | |
Public Member Functions inherited from clang::driver::ToolChain | |
virtual | ~ToolChain () |
const Driver & | getDriver () const |
llvm::vfs::FileSystem & | getVFS () const |
const llvm::Triple & | getTriple () const |
virtual const llvm::Triple * | getAuxTriple () const |
Get the toolchain's aux triple, if it has one. | |
virtual std::string | getInputFilename (const InputInfo &Input) const |
Some toolchains need to modify the file name, for example to replace the extension for object files with .cubin for OpenMP offloading to Nvidia GPUs. | |
llvm::Triple::ArchType | getArch () const |
StringRef | getArchName () const |
StringRef | getPlatform () const |
StringRef | getOS () const |
StringRef | getDefaultUniversalArchName () const |
Provide the default architecture name (as expected by -arch) for this toolchain. | |
std::string | getTripleString () const |
const llvm::Triple & | getEffectiveTriple () const |
Get the toolchain's effective clang triple. | |
bool | hasEffectiveTriple () const |
path_list & | getLibraryPaths () |
const path_list & | getLibraryPaths () const |
path_list & | getFilePaths () |
const path_list & | getFilePaths () const |
path_list & | getProgramPaths () |
const path_list & | getProgramPaths () const |
const MultilibSet & | getMultilibs () const |
const llvm::SmallVector< Multilib > & | getSelectedMultilibs () const |
Multilib::flags_list | getMultilibFlags (const llvm::opt::ArgList &) const |
Get flags suitable for multilib selection, based on the provided clang command line arguments. | |
SanitizerArgs | getSanitizerArgs (const llvm::opt::ArgList &JobArgs) const |
const XRayArgs & | getXRayArgs () const |
const llvm::opt::Arg * | getRTTIArg () const |
RTTIMode | getRTTIMode () const |
ExceptionsMode | getExceptionsMode () const |
virtual llvm::opt::DerivedArgList * | TranslateArgs (const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const |
TranslateArgs - Create a new derived argument list for any argument translations this ToolChain may wish to perform, or 0 if no tool chain specific translations are needed. | |
virtual llvm::opt::DerivedArgList * | TranslateOpenMPTargetArgs (const llvm::opt::DerivedArgList &Args, bool SameTripleAsHost, SmallVectorImpl< llvm::opt::Arg * > &AllocatedArgs) const |
TranslateOpenMPTargetArgs - Create a new derived argument list for that contains the OpenMP target specific flags passed via -Xopenmp-target -opt=val OR -Xopenmp-target=<triple> -opt=val. | |
virtual void | TranslateXarchArgs (const llvm::opt::DerivedArgList &Args, llvm::opt::Arg *&A, llvm::opt::DerivedArgList *DAL, SmallVectorImpl< llvm::opt::Arg * > *AllocatedArgs=nullptr) const |
Append the argument following A to DAL assuming A is an Xarch argument. | |
virtual llvm::opt::DerivedArgList * | TranslateXarchArgs (const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind, SmallVectorImpl< llvm::opt::Arg * > *AllocatedArgs) const |
Translate -Xarch_ arguments. | |
virtual Tool * | SelectTool (const JobAction &JA) const |
Choose a tool to use to handle the action JA . | |
std::string | GetFilePath (const char *Name) const |
std::string | GetProgramPath (const char *Name) const |
std::string | GetLinkerPath (bool *LinkerIsLLD=nullptr) const |
Returns the linker path, respecting the -fuse-ld= argument to determine the linker suffix or name. | |
std::string | GetStaticLibToolPath () const |
Returns the linker path for emitting a static library. | |
virtual void | printVerboseInfo (raw_ostream &OS) const |
Dispatch to the specific toolchain for verbose printing. | |
virtual bool | isCrossCompiling () const |
Returns true if the toolchain is targeting a non-native architecture. | |
virtual bool | HasNativeLLVMSupport () const |
HasNativeLTOLinker - Check whether the linker and related tools have native LLVM support. | |
virtual types::ID | LookupTypeForExtension (StringRef Ext) const |
LookupTypeForExtension - Return the default language type to use for the given extension. | |
virtual bool | IsBlocksDefault () const |
IsBlocksDefault - Does this tool chain enable -fblocks by default. | |
virtual bool | IsIntegratedAssemblerDefault () const |
IsIntegratedAssemblerDefault - Does this tool chain enable -integrated-as by default. | |
virtual bool | IsIntegratedBackendDefault () const |
IsIntegratedBackendDefault - Does this tool chain enable -fintegrated-objemitter by default. | |
virtual bool | IsIntegratedBackendSupported () const |
IsIntegratedBackendSupported - Does this tool chain support -fintegrated-objemitter. | |
virtual bool | IsNonIntegratedBackendSupported () const |
IsNonIntegratedBackendSupported - Does this tool chain support -fno-integrated-objemitter. | |
virtual bool | useIntegratedAs () const |
Check if the toolchain should use the integrated assembler. | |
virtual bool | useIntegratedBackend () const |
Check if the toolchain should use the integrated backend. | |
virtual bool | parseInlineAsmUsingAsmParser () const |
Check if the toolchain should use AsmParser to parse inlineAsm when integrated assembler is not default. | |
virtual bool | IsMathErrnoDefault () const |
IsMathErrnoDefault - Does this tool chain use -fmath-errno by default. | |
virtual bool | IsEncodeExtendedBlockSignatureDefault () const |
IsEncodeExtendedBlockSignatureDefault - Does this tool chain enable -fencode-extended-block-signature by default. | |
virtual bool | IsObjCNonFragileABIDefault () const |
IsObjCNonFragileABIDefault - Does this tool chain set -fobjc-nonfragile-abi by default. | |
virtual bool | UseObjCMixedDispatch () const |
UseObjCMixedDispatchDefault - When using non-legacy dispatch, should the mixed dispatch method be used? | |
virtual bool | useRelaxRelocations () const |
Check whether to enable x86 relax relocations by default. | |
bool | defaultToIEEELongDouble () const |
Check whether use IEEE binary128 as long double format by default. | |
virtual LangOptions::StackProtectorMode | GetDefaultStackProtectorLevel (bool KernelOrKext) const |
GetDefaultStackProtectorLevel - Get the default stack protector level for this tool chain. | |
virtual LangOptions::TrivialAutoVarInitKind | GetDefaultTrivialAutoVarInit () const |
Get the default trivial automatic variable initialization. | |
virtual const char * | getDefaultLinker () const |
GetDefaultLinker - Get the default linker to use. | |
virtual RuntimeLibType | GetDefaultRuntimeLibType () const |
GetDefaultRuntimeLibType - Get the default runtime library variant to use. | |
virtual CXXStdlibType | GetDefaultCXXStdlibType () const |
virtual UnwindLibType | GetDefaultUnwindLibType () const |
virtual std::string | getCompilerRTPath () const |
virtual std::string | getCompilerRT (const llvm::opt::ArgList &Args, StringRef Component, FileType Type=ToolChain::FT_Static) const |
const char * | getCompilerRTArgString (const llvm::opt::ArgList &Args, StringRef Component, FileType Type=ToolChain::FT_Static) const |
std::string | getCompilerRTBasename (const llvm::opt::ArgList &Args, StringRef Component, FileType Type=ToolChain::FT_Static) const |
std::optional< std::string > | getRuntimePath () const |
std::optional< std::string > | getStdlibPath () const |
std::optional< std::string > | getStdlibIncludePath () const |
virtual path_list | getArchSpecificLibPaths () const |
virtual StringRef | getOSLibName () const |
virtual UnwindTableLevel | getDefaultUnwindTableLevel (const llvm::opt::ArgList &Args) const |
How detailed should the unwind tables be by default. | |
virtual bool | IsAArch64OutlineAtomicsDefault (const llvm::opt::ArgList &Args) const |
Test whether this toolchain supports outline atomics by default. | |
virtual bool | isPICDefault () const =0 |
Test whether this toolchain defaults to PIC. | |
virtual bool | isPIEDefault (const llvm::opt::ArgList &Args) const =0 |
Test whether this toolchain defaults to PIE. | |
virtual bool | isPICDefaultForced () const =0 |
Tests whether this toolchain forces its default for PIC, PIE or non-PIC. | |
virtual bool | SupportsProfiling () const |
SupportsProfiling - Does this tool chain support -pg. | |
virtual void | CheckObjCARC () const |
Complain if this tool chain doesn't support Objective-C ARC. | |
virtual llvm::codegenoptions::DebugInfoFormat | getDefaultDebugFormat () const |
Get the default debug info format. Typically, this is DWARF. | |
virtual bool | UseDwarfDebugFlags () const |
UseDwarfDebugFlags - Embed the compile options to clang into the Dwarf compile unit information. | |
virtual std::string | GetGlobalDebugPathRemapping () const |
Add an additional -fdebug-prefix-map entry. | |
virtual unsigned | GetDefaultDwarfVersion () const |
virtual unsigned | getMaxDwarfVersion () const |
virtual bool | GetDefaultStandaloneDebug () const |
virtual llvm::DebuggerKind | getDefaultDebuggerTuning () const |
virtual bool | supportsDebugInfoOption (const llvm::opt::Arg *) const |
Does this toolchain supports given debug info option or not. | |
virtual void | adjustDebugInfoKind (llvm::codegenoptions::DebugInfoKind &DebugInfoKind, const llvm::opt::ArgList &Args) const |
Adjust debug information kind considering all passed options. | |
virtual llvm::ExceptionHandling | GetExceptionModel (const llvm::opt::ArgList &Args) const |
GetExceptionModel - Return the tool chain exception model. | |
virtual bool | SupportsEmbeddedBitcode () const |
SupportsEmbeddedBitcode - Does this tool chain support embedded bitcode. | |
virtual std::string | getThreadModel () const |
getThreadModel() - Which thread model does this target use? | |
virtual bool | isThreadModelSupported (const StringRef Model) const |
isThreadModelSupported() - Does this target support a thread model? | |
virtual bool | isBareMetal () const |
isBareMetal - Is this a bare metal target. | |
virtual std::string | getMultiarchTriple (const Driver &D, const llvm::Triple &TargetTriple, StringRef SysRoot) const |
virtual std::string | ComputeLLVMTriple (const llvm::opt::ArgList &Args, types::ID InputType=types::TY_INVALID) const |
ComputeLLVMTriple - Return the LLVM target triple to use, after taking command line arguments into account. | |
virtual std::string | ComputeEffectiveClangTriple (const llvm::opt::ArgList &Args, types::ID InputType=types::TY_INVALID) const |
ComputeEffectiveClangTriple - Return the Clang triple to use for this target, which may take into account the command line arguments. | |
virtual ObjCRuntime | getDefaultObjCRuntime (bool isNonFragile) const |
getDefaultObjCRuntime - Return the default Objective-C runtime for this platform. | |
virtual bool | hasBlocksRuntime () const |
hasBlocksRuntime - Given that the user is compiling with -fblocks, does this tool chain guarantee the existence of a blocks runtime? | |
virtual std::string | computeSysRoot () const |
Return the sysroot, possibly searching for a default sysroot using target-specific logic. | |
virtual void | AddClangSystemIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
Add the clang cc1 arguments for system include paths. | |
virtual void | addClangTargetOptions (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadKind) const |
Add options that need to be passed to cc1 for this target. | |
virtual void | addClangCC1ASTargetOptions (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1ASArgs) const |
Add options that need to be passed to cc1as for this target. | |
virtual void | addClangWarningOptions (llvm::opt::ArgStringList &CC1Args) const |
Add warning options that need to be passed to cc1 for this target. | |
virtual RuntimeLibType | GetRuntimeLibType (const llvm::opt::ArgList &Args) const |
virtual CXXStdlibType | GetCXXStdlibType (const llvm::opt::ArgList &Args) const |
virtual UnwindLibType | GetUnwindLibType (const llvm::opt::ArgList &Args) const |
virtual std::string | detectLibcxxVersion (StringRef IncludePath) const |
virtual void | AddClangCXXStdlibIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
AddClangCXXStdlibIncludeArgs - Add the clang -cc1 level arguments to set the include paths to use for the given C++ standard library type. | |
void | AddClangCXXStdlibIsystemArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
AddClangCXXStdlibIsystemArgs - Add the clang -cc1 level arguments to set the specified include paths for the C++ standard library. | |
bool | ShouldLinkCXXStdlib (const llvm::opt::ArgList &Args) const |
Returns if the C++ standard library should be linked in. | |
virtual void | AddCXXStdlibLibArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
AddCXXStdlibLibArgs - Add the system specific linker arguments to use for the given C++ standard library type. | |
void | AddFilePathLibArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
AddFilePathLibArgs - Add each thing in getFilePaths() as a "-L" option. | |
virtual void | AddCCKextLibArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
AddCCKextLibArgs - Add the system specific linker arguments to use for kernel extensions (Darwin-specific). | |
virtual bool | isFastMathRuntimeAvailable (const llvm::opt::ArgList &Args, std::string &Path) const |
If a runtime library exists that sets global flags for unsafe floating point math, return true. | |
bool | addFastMathRuntimeIfAvailable (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
AddFastMathRuntimeIfAvailable - If a runtime library exists that sets global flags for unsafe floating point math, add it and return true. | |
virtual Expected< SmallVector< std::string > > | getSystemGPUArchs (const llvm::opt::ArgList &Args) const |
getSystemGPUArchs - Use a tool to detect the user's availible GPUs. | |
virtual void | addProfileRTLibs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
addProfileRTLibs - When -fprofile-instr-profile is specified, try to pass a suitable profile runtime library to the linker. | |
virtual void | AddCudaIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
Add arguments to use system-specific CUDA includes. | |
virtual void | AddHIPIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
Add arguments to use system-specific HIP includes. | |
virtual void | AddIAMCUIncludeArgs (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const |
Add arguments to use MCU GCC toolchain includes. | |
virtual VersionTuple | computeMSVCVersion (const Driver *D, const llvm::opt::ArgList &Args) const |
On Windows, returns the MSVC compatibility version. | |
virtual llvm::SmallVector< BitCodeLibraryInfo, 12 > | getDeviceLibs (const llvm::opt::ArgList &Args) const |
Get paths for device libraries. | |
virtual void | AddHIPRuntimeLibArgs (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const |
Add the system specific linker arguments to use for the given HIP runtime library type. | |
virtual SanitizerMask | getSupportedSanitizers () const |
Return sanitizers which are available in this toolchain. | |
virtual SanitizerMask | getDefaultSanitizers () const |
Return sanitizers which are enabled by default. | |
virtual bool | canSplitThinLTOUnit () const |
Returns true when it's possible to split LTO unit to use whole program devirtualization and CFI santiizers. | |
virtual llvm::DenormalMode | getDefaultDenormalModeForType (const llvm::opt::ArgList &DriverArgs, const JobAction &JA, const llvm::fltSemantics *FPType=nullptr) const |
Returns the output denormal handling type in the default floating point environment for the given FPType if given. | |
Public Attributes | |
bool | TargetInitialized |
Whether the information on the target has been initialized. | |
DarwinPlatformKind | TargetPlatform |
DarwinEnvironmentKind | TargetEnvironment |
VersionTuple | TargetVersion |
The native OS version we are targeting. | |
VersionTuple | OSTargetVersion |
The OS version we are targeting as specified in the triple. | |
std::optional< DarwinSDKInfo > | SDKInfo |
The information about the darwin SDK that was used. | |
std::optional< llvm::Triple > | TargetVariantTriple |
The target variant triple that was specified (if any). | |
LazyDetector< CudaInstallationDetector > | CudaInstallation |
LazyDetector< RocmInstallationDetector > | RocmInstallation |
Darwin specific Toolchain functions | |
} { | |
bool | isTargetIPhoneOS () const |
bool | isTargetIOSSimulator () const |
bool | isTargetIOSBased () const |
bool | isTargetXROSDevice () const |
bool | isTargetXROSSimulator () const |
bool | isTargetXROS () const |
bool | isTargetTvOS () const |
bool | isTargetTvOSSimulator () const |
bool | isTargetTvOSBased () const |
bool | isTargetWatchOS () const |
bool | isTargetWatchOSSimulator () const |
bool | isTargetWatchOSBased () const |
bool | isTargetDriverKit () const |
bool | isTargetMacCatalyst () const |
bool | isTargetMacOS () const |
bool | isTargetMacOSBased () const |
bool | isTargetAppleSiliconMac () const |
bool | isTargetInitialized () const |
VersionTuple | getTripleTargetVersion () const |
The version of the OS that's used by the OS specified in the target triple. | |
bool | isIPhoneOSVersionLT (unsigned V0, unsigned V1=0, unsigned V2=0) const |
bool | isMacosxVersionLT (unsigned V0, unsigned V1=0, unsigned V2=0) const |
Returns true if the minimum supported macOS version for the slice that's being built is less than the specified version. | |
void | setTarget (DarwinPlatformKind Platform, DarwinEnvironmentKind Environment, unsigned Major, unsigned Minor, unsigned Micro, VersionTuple NativeTargetVersion) const |
bool | isAlignedAllocationUnavailable () const |
Return true if c++17 aligned allocation/deallocation functions are not implemented in the c++ standard library of the deployment target we are targeting. | |
bool | isSizedDeallocationUnavailable () const |
Return true if c++14 sized deallocation functions are not implemented in the c++ standard library of the deployment target we are targeting. | |
void | addClangTargetOptions (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadKind) const override |
Add options that need to be passed to cc1 for this target. | |
void | addClangCC1ASTargetOptions (const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1ASArgs) const override |
Add options that need to be passed to cc1as for this target. | |
StringRef | getPlatformFamily () const |
StringRef | getOSLibraryNameSuffix (bool IgnoreSim=false) const override |
static StringRef | getSDKName (StringRef isysroot) |
Additional Inherited Members | |
Static Public Member Functions inherited from clang::driver::ToolChain | |
static ParsedClangName | getTargetAndModeFromProgramName (StringRef ProgName) |
Return any implicit target and/or mode flag for an invocation of the compiler driver as ProgName . | |
static bool | needsProfileRT (const llvm::opt::ArgList &Args) |
needsProfileRT - returns true if instrumentation profile is on. | |
static bool | needsGCovInstrumentation (const llvm::opt::ArgList &Args) |
Returns true if gcov instrumentation (-fprofile-arcs or –coverage) is on. | |
static llvm::Triple | getOpenMPTriple (StringRef TripleStr) |
Protected Member Functions inherited from clang::driver::toolchains::MachO | |
Tool * | buildAssembler () const override |
Tool * | buildLinker () const override |
Tool * | buildStaticLibTool () const override |
Tool * | getTool (Action::ActionClass AC) const override |
Protected Member Functions inherited from clang::driver::ToolChain | |
ToolChain (const Driver &D, const llvm::Triple &T, const llvm::opt::ArgList &Args) | |
llvm::Expected< std::unique_ptr< llvm::MemoryBuffer > > | executeToolChainProgram (StringRef Executable) const |
Executes the given Executable and returns the stdout. | |
void | setTripleEnvironment (llvm::Triple::EnvironmentType Env) |
virtual Tool * | buildAssembler () const |
virtual Tool * | buildLinker () const |
virtual Tool * | buildStaticLibTool () const |
virtual Tool * | getTool (Action::ActionClass AC) const |
virtual std::string | buildCompilerRTBasename (const llvm::opt::ArgList &Args, StringRef Component, FileType Type, bool AddArch) const |
std::optional< std::string > | getTargetSubDirPath (StringRef BaseDir) const |
Find the target-specific subdirectory for the current target triple under BaseDir , doing fallback triple searches as necessary. | |
Static Protected Member Functions inherited from clang::driver::ToolChain | |
static void | addSystemInclude (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, const Twine &Path) |
Utility function to add a system include directory to CC1 arguments. | |
static void | addExternCSystemInclude (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, const Twine &Path) |
Utility function to add a system include directory with extern "C" semantics to CC1 arguments. | |
static void | addExternCSystemIncludeIfExists (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, const Twine &Path) |
static void | addSystemIncludes (const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, ArrayRef< StringRef > Paths) |
Utility function to add a list of system include directories to CC1. | |
static std::string | concat (StringRef Path, const Twine &A, const Twine &B="", const Twine &C="", const Twine &D="") |
Protected Attributes inherited from clang::driver::ToolChain | |
MultilibSet | Multilibs |
llvm::SmallVector< Multilib > | SelectedMultilibs |
Darwin::Darwin | ( | const Driver & | D, |
const llvm::Triple & | Triple, | ||
const llvm::opt::ArgList & | Args | ||
) |
Darwin - Darwin tool chain for i386 and x86_64.
Definition at line 970 of file Darwin.cpp.
|
override |
Definition at line 1120 of file Darwin.cpp.
|
overrideprotectedvirtual |
Add options that need to be passed to cc1as for this target.
Pass the SDK version to the compiler when the SDK information is available.
Pass the target variant SDK version to the compiler when the SDK information is available and is required for target variant.
Reimplemented from clang::driver::ToolChain.
Definition at line 3148 of file Darwin.cpp.
References isTargetMacCatalyst(), clang::DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair(), minimumMacCatalystDeploymentTarget(), SDKInfo, TargetVariantTriple, and V.
Referenced by addClangTargetOptions().
|
overrideprotectedvirtual |
Add options that need to be passed to cc1 for this target.
Reimplemented from clang::driver::ToolChain.
Definition at line 3070 of file Darwin.cpp.
References addClangCC1ASTargetOptions(), IPhoneOS, isAlignedAllocationUnavailable(), isSizedDeallocationUnavailable(), MacOS, SDKInfo, sdkSupportsBuiltinModules(), TargetEnvironment, TargetPlatform, TvOS, WatchOS, and XROS.
|
overridevirtual |
Add arguments to use system-specific CUDA includes.
Reimplemented from clang::driver::ToolChain.
Definition at line 1021 of file Darwin.cpp.
References CudaInstallation.
|
overridevirtual |
Add arguments to use system-specific HIP includes.
Reimplemented from clang::driver::ToolChain.
Definition at line 1026 of file Darwin.cpp.
References RocmInstallation.
|
overridevirtual |
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 3313 of file Darwin.cpp.
References clang::driver::ToolChain::getEffectiveTriple(), getTripleTargetVersion(), isTargetDriverKit(), isTargetIOSBased(), isTargetIOSSimulator(), isTargetMacCatalyst(), isTargetMacOS(), isTargetMacOSBased(), isTargetTvOS(), isTargetTvOSSimulator(), isTargetWatchOS(), isTargetWatchOSSimulator(), isTargetXROS(), TargetVariantTriple, and TargetVersion.
|
overridevirtual |
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 3386 of file Darwin.cpp.
References clang::driver::ToolChain::getArchName(), clang::getAsString(), clang::driver::ToolChain::getEffectiveTriple(), getPlatformName(), clang::driver::ToolChain::getTriple(), getTripleTargetVersion(), IPhoneOS, MacCatalyst, MacOS, clang::DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair(), minimumMacCatalystDeploymentTarget(), NativeEnvironment, SDKInfo, Simulator, TargetEnvironment, TargetPlatform, TargetVariantTriple, TargetVersion, and TvOS.
|
overridevirtual |
Add any profiling runtime libraries that are needed.
This is essentially a MachO specific version of addProfileRT in Tools.cpp.
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 1471 of file Darwin.cpp.
References addExportedSymbol(), clang::driver::toolchains::MachO::AddLinkRuntimeLib(), addSectalignToPage(), hasExportSymbolDirective(), clang::driver::ToolChain::needsGCovInstrumentation(), clang::driver::ToolChain::needsProfileRT(), and clang::driver::toolchains::MachO::RLO_AlwaysLink.
|
overridevirtual |
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 3552 of file Darwin.cpp.
References addBundleLinkArgs(), addDefaultCRTLinkArgs(), addDynamicLibLinkArgs(), addPgProfilingLinkArgs(), clang::driver::ToolChain::GetFilePath(), isMacosxVersionLT(), isTargetMacOS(), and clang::driver::toolchains::MachO::SupportsProfiling().
|
overridevirtual |
Complain if this tool chain doesn't support Objective-C ARC.
Reimplemented from clang::driver::ToolChain.
Definition at line 3575 of file Darwin.cpp.
References clang::driver::Driver::Diag(), clang::driver::ToolChain::getDriver(), isMacosxVersionLT(), isTargetIOSBased(), isTargetMacOSBased(), isTargetWatchOSBased(), and isTargetXROS().
|
overridevirtual |
ComputeEffectiveClangTriple - Return the Clang triple to use for this target, which may take into account the command line arguments.
For example, on Darwin the -mmacos-version-min= command line argument (which sets the deployment target) determines the version in the triple passed to Clang.
Reimplemented from clang::driver::ToolChain.
Definition at line 1124 of file Darwin.cpp.
References clang::driver::ToolChain::ComputeLLVMTriple(), getTripleTargetVersion(), isTargetDriverKit(), isTargetInitialized(), isTargetIOSBased(), isTargetMacCatalyst(), isTargetTvOSBased(), isTargetWatchOSBased(), and isTargetXROS().
|
overridevirtual |
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 1362 of file Darwin.cpp.
References clang::driver::ToolChain::FT_Object, clang::driver::ToolChain::FT_Shared, clang::driver::ToolChain::getDriver(), and getOSLibraryNameSuffix().
|
overridevirtual |
Reimplemented from clang::driver::ToolChain.
Definition at line 986 of file Darwin.cpp.
References clang::driver::ToolChain::CST_Libcxx.
|
overridevirtual |
Darwin provides an ARC runtime starting in MacOS X 10.7 and iOS 5.0.
Reimplemented from clang::driver::ToolChain.
Definition at line 992 of file Darwin.cpp.
References clang::ObjCRuntime::FragileMacOSX, clang::ObjCRuntime::iOS, isTargetIOSBased(), isTargetWatchOSBased(), isTargetXROS(), clang::ObjCRuntime::MacOSX, clang::T, TargetVersion, and clang::ObjCRuntime::WatchOS.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().
|
inlineoverridevirtual |
GetDefaultStackProtectorLevel - Get the default stack protector level for this tool chain.
Reimplemented from clang::driver::ToolChain.
|
overridevirtual |
GetExceptionModel - Return the tool chain exception model.
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 3278 of file Darwin.cpp.
References clang::driver::ToolChain::ComputeLLVMTriple(), clang::driver::ToolChain::getArch(), and clang::driver::ToolChain::getTriple().
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 1413 of file Darwin.cpp.
References DriverKit, IPhoneOS, MacCatalyst, MacOS, NativeEnvironment, TargetEnvironment, TargetPlatform, TvOS, WatchOS, and XROS.
Referenced by getCompilerRT().
|
protected |
Definition at line 1381 of file Darwin.cpp.
References DriverKit, IPhoneOS, MacCatalyst, MacOS, TargetEnvironment, TargetPlatform, TvOS, WatchOS, and XROS.
|
static |
Definition at line 1401 of file Darwin.cpp.
|
overridevirtual |
Return sanitizers which are available in this toolchain.
Reimplemented from clang::driver::ToolChain.
Definition at line 3582 of file Darwin.cpp.
References clang::driver::ToolChain::getSupportedSanitizers(), clang::driver::ToolChain::getTriple(), isIPhoneOSVersionLT(), isMacosxVersionLT(), isTargetIOSSimulator(), isTargetIPhoneOS(), isTargetMacOSBased(), isTargetTvOSSimulator(), and isTargetWatchOSSimulator().
|
inline |
The version of the OS that's used by the OS specified in the target triple.
It might be different from the actual target OS on which the program will run, e.g. MacCatalyst code runs on a macOS target, but its target triple is iOS.
Definition at line 492 of file Darwin.h.
References clang::TargetVersion.
Referenced by addMinVersionArgs(), addPlatformVersionArgs(), and ComputeEffectiveClangTriple().
|
overridevirtual |
Darwin provides a blocks runtime starting in MacOS X 10.6 and iOS 3.2.
Reimplemented from clang::driver::ToolChain.
Definition at line 1010 of file Darwin.cpp.
References isIPhoneOSVersionLT(), isMacosxVersionLT(), isTargetDriverKit(), isTargetIOSBased(), isTargetMacOSBased(), isTargetWatchOSBased(), and isTargetXROS().
|
protected |
Return true if c++17 aligned allocation/deallocation functions are not implemented in the c++ standard library of the deployment target we are targeting.
Definition at line 2946 of file Darwin.cpp.
References clang::alignedAllocMinVersion(), DriverKit, IPhoneOS, isTargetMacCatalyst(), MacOS, TargetPlatform, TargetVersion, TvOS, WatchOS, and XROS.
Referenced by addClangTargetOptions().
|
inlineoverridevirtual |
Returns true if the toolchain is targeting a non-native architecture.
Reimplemented from clang::driver::ToolChain.
|
inline |
Definition at line 497 of file Darwin.h.
References clang::TargetVersion.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getSupportedSanitizers(), hasBlocksRuntime(), SupportsEmbeddedBitcode(), and TranslateArgs().
|
inlineoverridevirtual |
On some iOS platforms, kernel and kernel modules were built statically.
Is this such a target?
Reimplemented from clang::driver::toolchains::MachO.
|
inline |
Returns true if the minimum supported macOS version for the slice that's being built is less than the specified version.
If there's no minimum supported macOS version, the deployment target version is compared to the specifed version instead.
Definition at line 507 of file Darwin.h.
References clang::TargetVersion.
Referenced by addStartObjectFileArgs(), CheckObjCARC(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getSupportedSanitizers(), and hasBlocksRuntime().
|
protected |
Return true if c++14 sized deallocation functions are not implemented in the c++ standard library of the deployment target we are targeting.
Definition at line 3043 of file Darwin.cpp.
References DriverKit, IPhoneOS, isTargetMacCatalyst(), MacOS, sizedDeallocMinVersion(), TargetPlatform, TargetVersion, TvOS, WatchOS, and XROS.
Referenced by addClangTargetOptions().
|
inline |
Definition at line 481 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().
|
inline |
Definition at line 462 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(), clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(), addMinVersionArgs(), ComputeEffectiveClangTriple(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), hasBlocksRuntime(), and TranslateArgs().
|
inline |
Definition at line 486 of file Darwin.h.
Referenced by ComputeEffectiveClangTriple().
|
inline |
Definition at line 417 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(), addMinVersionArgs(), CheckObjCARC(), ComputeEffectiveClangTriple(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getDefaultObjCRuntime(), hasBlocksRuntime(), and TranslateArgs().
|
inline |
Definition at line 411 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(), addMinVersionArgs(), and getSupportedSanitizers().
|
inline |
Definition at line 405 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(), clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), getSupportedSanitizers(), and SupportsEmbeddedBitcode().
|
inline |
Definition at line 467 of file Darwin.h.
Referenced by addClangCC1ASTargetOptions(), addMinVersionArgs(), ComputeEffectiveClangTriple(), isAlignedAllocationUnavailable(), and isSizedDeallocationUnavailable().
|
inline |
Definition at line 471 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::addClangWarningOptions(), addMinVersionArgs(), and addStartObjectFileArgs().
|
inline |
Definition at line 476 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), addMinVersionArgs(), CheckObjCARC(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getSupportedSanitizers(), and hasBlocksRuntime().
|
inline |
Definition at line 432 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(), clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), and addMinVersionArgs().
|
inline |
Definition at line 442 of file Darwin.h.
Referenced by ComputeEffectiveClangTriple().
|
inline |
Definition at line 437 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), addMinVersionArgs(), and getSupportedSanitizers().
|
inline |
Definition at line 447 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(), clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), and addMinVersionArgs().
|
inline |
Definition at line 457 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::addClangWarningOptions(), CheckObjCARC(), ComputeEffectiveClangTriple(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getDefaultObjCRuntime(), hasBlocksRuntime(), and TranslateArgs().
|
inline |
Definition at line 452 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), addMinVersionArgs(), and getSupportedSanitizers().
|
inline |
Definition at line 430 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), addMinVersionArgs(), CheckObjCARC(), ComputeEffectiveClangTriple(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getDefaultObjCRuntime(), hasBlocksRuntime(), and TranslateArgs().
|
inline |
Definition at line 422 of file Darwin.h.
Referenced by clang::driver::toolchains::DarwinClang::AddCCKextLibArgs().
|
inline |
|
overridevirtual |
Dispatch to the specific toolchain for verbose printing.
This is used when handling the verbose option to print detailed, toolchain-specific information useful for understanding the behavior of the driver on a specific platform.
Reimplemented from clang::driver::ToolChain.
Definition at line 3618 of file Darwin.cpp.
References CudaInstallation, and RocmInstallation.
|
inlineprotected |
Definition at line 379 of file Darwin.h.
References clang::TargetVersion.
|
overridevirtual |
SupportsEmbeddedBitcode - Does this tool chain support embedded bitcode.
Reimplemented from clang::driver::ToolChain.
Definition at line 3292 of file Darwin.cpp.
References isIPhoneOSVersionLT(), isTargetIPhoneOS(), and TargetInitialized.
|
overridevirtual |
TranslateArgs - Create a new derived argument list for any argument translations this ToolChain may wish to perform, or 0 if no tool chain specific translations are needed.
If DeviceOffloadKind
is specified the translation specific for that offload kind is performed.
BoundArch | - The bound architecture name, or 0. |
DeviceOffloadKind | - The device offload kind used for the translation. |
Reimplemented from clang::driver::toolchains::MachO.
Definition at line 3204 of file Darwin.cpp.
References clang::driver::Driver::Diag(), clang::driver::tools::darwin::getArchTypeForMachOArchName(), clang::driver::ToolChain::getDriver(), isIPhoneOSVersionLT(), isTargetDriverKit(), isTargetIOSBased(), isTargetWatchOSBased(), isTargetXROS(), and clang::driver::toolchains::MachO::TranslateArgs().
|
inlineoverridevirtual |
UseObjCMixedDispatchDefault - When using non-legacy dispatch, should the mixed dispatch method be used?
Reimplemented from clang::driver::toolchains::MachO.
LazyDetector<CudaInstallationDetector> clang::driver::toolchains::Darwin::CudaInstallation |
Definition at line 332 of file Darwin.h.
Referenced by AddCudaIncludeArgs(), and printVerboseInfo().
|
mutable |
LazyDetector<RocmInstallationDetector> clang::driver::toolchains::Darwin::RocmInstallation |
Definition at line 333 of file Darwin.h.
Referenced by AddHIPIncludeArgs(), and printVerboseInfo().
|
mutable |
The information about the darwin SDK that was used.
Definition at line 327 of file Darwin.h.
Referenced by addClangCC1ASTargetOptions(), addClangTargetOptions(), and addPlatformVersionArgs().
|
mutable |
Definition at line 319 of file Darwin.h.
Referenced by addClangTargetOptions(), addPlatformVersionArgs(), getOSLibraryNameSuffix(), and getPlatformFamily().
|
mutable |
Whether the information on the target has been initialized.
Definition at line 301 of file Darwin.h.
Referenced by SupportsEmbeddedBitcode().
|
mutable |
Definition at line 318 of file Darwin.h.
Referenced by addClangTargetOptions(), addPlatformVersionArgs(), getOSLibraryNameSuffix(), getPlatformFamily(), isAlignedAllocationUnavailable(), and isSizedDeallocationUnavailable().
|
mutable |
The target variant triple that was specified (if any).
Definition at line 330 of file Darwin.h.
Referenced by addClangCC1ASTargetOptions(), addMinVersionArgs(), and addPlatformVersionArgs().
|
mutable |
The native OS version we are targeting.
Definition at line 322 of file Darwin.h.
Referenced by addMinVersionArgs(), addPlatformVersionArgs(), clang::driver::toolchains::DarwinClang::GetDefaultDwarfVersion(), getDefaultObjCRuntime(), isAlignedAllocationUnavailable(), and isSizedDeallocationUnavailable().