9#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DARWIN_H
10#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DARWIN_H
34 const llvm::opt::ArgList &Args);
37 virtual void anchor();
41 llvm::opt::ArgStringList &CmdArgs)
const;
43 llvm::opt::ArgStringList &CmdArgs)
const;
51 :
Tool(Name, ShortName, TC) {}
57 :
MachOTool(
"darwin::Assembler",
"assembler", TC) {}
63 const llvm::opt::ArgList &TCArgs,
64 const char *LinkingOutput)
const override;
69 void AddLinkArgs(
Compilation &
C,
const llvm::opt::ArgList &Args,
70 llvm::opt::ArgStringList &CmdArgs,
72 bool LinkerIsLLD,
bool UsePlatformVersion)
const;
82 const llvm::opt::ArgList &TCArgs,
83 const char *LinkingOutput)
const override;
89 :
MachOTool(
"darwin::StaticLibTool",
"static-lib-linker", TC) {}
96 const llvm::opt::ArgList &TCArgs,
97 const char *LinkingOutput)
const override;
108 const llvm::opt::ArgList &TCArgs,
109 const char *LinkingOutput)
const override;
115 :
MachOTool(
"darwin::Dsymutil",
"dsymutil", TC) {}
122 const llvm::opt::ArgList &TCArgs,
123 const char *LinkingOutput)
const override;
129 :
MachOTool(
"darwin::VerifyDebug",
"dwarfdump", TC) {}
135 const llvm::opt::ArgList &TCArgs,
136 const char *LinkingOutput)
const override;
141namespace toolchains {
152 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
156 mutable std::unique_ptr<tools::darwin::Lipo> Lipo;
157 mutable std::unique_ptr<tools::darwin::Dsymutil> Dsymutil;
158 mutable std::unique_ptr<tools::darwin::VerifyDebug> VerifyDebug;
161 mutable std::optional<VersionTuple> LinkerVersion;
165 const llvm::opt::ArgList &Args);
181 llvm::opt::ArgStringList &CmdArgs)
const {}
187 virtual void AddLinkRuntimeLibArgs(
const llvm::opt::ArgList &Args,
188 llvm::opt::ArgStringList &CmdArgs,
189 bool ForceLinkBuiltinRT =
false)
const;
192 llvm::opt::ArgStringList &CmdArgs)
const {
196 llvm::opt::ArgStringList &CmdArgs)
const {}
199 llvm::opt::ArgStringList &CmdArgs)
const {
205 const llvm::Triple &
T)
const {}
227 void AddLinkRuntimeLib(
const llvm::opt::ArgList &Args,
228 llvm::opt::ArgStringList &CmdArgs, StringRef Component,
229 RuntimeLinkOptions Opts = RuntimeLinkOptions(),
230 bool IsShared =
false)
const;
235 llvm::opt::ArgStringList &CmdArgs)
const override {
242 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
244 bool IsFortran =
false)
const override;
250 types::ID LookupTypeForExtension(StringRef Ext)
const override;
252 bool HasNativeLLVMSupport()
const override;
254 llvm::opt::DerivedArgList *
255 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
BoundArch BA,
270 return getTriple().getArch() != llvm::Triple::x86;
276 getDefaultUnwindTableLevel(
const llvm::opt::ArgList &Args)
const override;
282 bool isPICDefault()
const override;
283 bool isPIEDefault(
const llvm::opt::ArgList &Args)
const override;
284 bool isPICDefaultForced()
const override;
286 bool SupportsProfiling()
const override;
288 bool UseDwarfDebugFlags()
const override;
289 std::string GetGlobalDebugPathRemapping()
const override;
291 llvm::ExceptionHandling
293 return llvm::ExceptionHandling::None;
310 const llvm::opt::ArgList &Args);
318 llvm::opt::ArgStringList &CC1Args)
const override;
321 llvm::opt::ArgStringList &CC1Args)
const override;
323 llvm::opt::ArgStringList &CC1Args)
const override;
325 llvm::opt::ArgStringList &CC1Args)
const override;
328 const llvm::opt::ArgList &DriverArgs,
329 llvm::opt::ArgStringList &CC1Args)
const override;
331 llvm::opt::ArgStringList &CmdArgs)
const override;
346 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
347 llvm::opt::ArgStringList &CC1Args)
const;
396 void AddDeploymentTarget(llvm::opt::DerivedArgList &Args)
const;
398 void VerifyTripleForSDK(
const llvm::opt::ArgList &Args,
399 const llvm::Triple &Triple)
const;
409 const llvm::opt::ArgList &Args);
420 llvm::opt::ArgStringList &CmdArgs)
const override;
423 llvm::opt::ArgStringList &CmdArgs)
const override;
426 llvm::opt::ArgStringList &CmdArgs)
const override;
433 void addProfileRTLibs(
const llvm::opt::ArgList &Args,
434 llvm::opt::ArgStringList &CmdArgs)
const override;
438 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
440 bool IsFortran =
false)
const override;
450 unsigned Major,
unsigned Minor,
unsigned Micro,
451 VersionTuple NativeTargetVersion)
const {
457 VersionTuple(Major, Minor, Micro)) {
466 "Target already initialized!");
577 unsigned V2 = 0)
const {
589 "Unexpected call for non OS X target!");
592 VersionTuple MinVers =
594 .getMinimumSupportedOSVersion();
604 bool isAlignedAllocationUnavailable()
const;
608 bool isSizedDeallocationUnavailable()
const;
611 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
612 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
615 void addClangCC1ASTargetOptions(
616 const llvm::opt::ArgList &Args,
617 llvm::opt::ArgStringList &CC1ASArgs)
const override;
619 StringRef getOSLibraryNameSuffix(
bool IgnoreSim =
false)
const override;
622 static StringRef getSDKName(StringRef isysroot);
633 llvm::opt::DerivedArgList *
634 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
BoundArch BA,
637 CXXStdlibType GetDefaultCXXStdlibType()
const override;
638 ObjCRuntime getDefaultObjCRuntime(
bool isNonFragile)
const override;
639 bool hasBlocksRuntime()
const override;
663 void CheckObjCARC()
const override;
665 llvm::ExceptionHandling GetExceptionModel(
666 const llvm::opt::ArgList &Args)
const override;
668 bool SupportsEmbeddedBitcode()
const override;
679 const llvm::opt::ArgList &Args);
686 llvm::opt::ArgStringList &CC1Args)
const override;
691 llvm::opt::ArgStringList &CmdArgs,
692 bool ForceLinkBuiltinRT =
false)
const override;
695 llvm::opt::ArgStringList &CmdArgs)
const override;
701 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
705 llvm::opt::ArgStringList &CmdArgs)
const override;
710 const llvm::Triple &
T)
const override;
717 return llvm::DebuggerKind::LLDB;
720 bool getDefaultDebugSimpleTemplateNames()
const override;
725 void AddLinkSanitizerLibArgs(
const llvm::opt::ArgList &Args,
726 llvm::opt::ArgStringList &CmdArgs,
728 bool shared =
true)
const;
731 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
732 llvm::opt::ArgStringList &CC1Args)
const override;
734 bool AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
735 llvm::opt::ArgStringList &CC1Args,
737 llvm::StringRef Version,
738 llvm::StringRef ArchDir,
739 llvm::StringRef BitDir)
const;
Defines the clang::LangOptions interface.
llvm::MachO::FileType FileType
static StringRef getTriple(const Command &Job)
Simple wrapper for toolchain detector with costly initialization.
The basic abstraction for the target Objective-C runtime.
The base class of the type hierarchy.
Compilation - A set of tasks to perform for a single driver invocation.
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
SmallVector< InputInfo, 4 > InputInfoList
Top level wrappers for InstallAPI frontend operations.
const FunctionProtoType * T
Represents a bound architecture for offload / multiple architecture compilation.