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;
49 :
Tool(Name, ShortName, TC) {}
55 :
MachOTool(
"darwin::Assembler",
"assembler", TC) {}
61 const llvm::opt::ArgList &TCArgs,
62 const char *LinkingOutput)
const override;
67 void AddLinkArgs(
Compilation &
C,
const llvm::opt::ArgList &Args,
68 llvm::opt::ArgStringList &CmdArgs,
70 bool LinkerIsLLD,
bool UsePlatformVersion)
const;
80 const llvm::opt::ArgList &TCArgs,
81 const char *LinkingOutput)
const override;
87 :
MachOTool(
"darwin::StaticLibTool",
"static-lib-linker", TC) {}
94 const llvm::opt::ArgList &TCArgs,
95 const char *LinkingOutput)
const override;
106 const llvm::opt::ArgList &TCArgs,
107 const char *LinkingOutput)
const override;
113 :
MachOTool(
"darwin::Dsymutil",
"dsymutil", TC) {}
120 const llvm::opt::ArgList &TCArgs,
121 const char *LinkingOutput)
const override;
127 :
MachOTool(
"darwin::VerifyDebug",
"dwarfdump", TC) {}
133 const llvm::opt::ArgList &TCArgs,
134 const char *LinkingOutput)
const override;
139namespace toolchains {
150 llvm::opt::ArgStringList &CC1Args,
151 llvm::StringRef BoundArch,
155 mutable std::unique_ptr<tools::darwin::Lipo> Lipo;
156 mutable std::unique_ptr<tools::darwin::Dsymutil> Dsymutil;
157 mutable std::unique_ptr<tools::darwin::VerifyDebug> VerifyDebug;
160 mutable std::optional<VersionTuple> LinkerVersion;
164 const llvm::opt::ArgList &Args);
180 llvm::opt::ArgStringList &CmdArgs)
const {}
186 virtual void AddLinkRuntimeLibArgs(
const llvm::opt::ArgList &Args,
187 llvm::opt::ArgStringList &CmdArgs,
188 bool ForceLinkBuiltinRT =
false)
const;
191 llvm::opt::ArgStringList &CmdArgs)
const {
195 llvm::opt::ArgStringList &CmdArgs)
const {}
198 llvm::opt::ArgStringList &CmdArgs)
const {
204 const llvm::Triple &T)
const {}
226 void AddLinkRuntimeLib(
const llvm::opt::ArgList &Args,
227 llvm::opt::ArgStringList &CmdArgs, StringRef Component,
228 RuntimeLinkOptions Opts = RuntimeLinkOptions(),
229 bool IsShared =
false)
const;
234 llvm::opt::ArgStringList &CmdArgs)
const override {
241 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
243 bool IsFortran =
false)
const override;
249 types::ID LookupTypeForExtension(StringRef Ext)
const override;
251 bool HasNativeLLVMSupport()
const override;
253 llvm::opt::DerivedArgList *
254 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
269 return getTriple().getArch() != llvm::Triple::x86;
275 getDefaultUnwindTableLevel(
const llvm::opt::ArgList &Args)
const override;
281 bool isPICDefault()
const override;
282 bool isPIEDefault(
const llvm::opt::ArgList &Args)
const override;
283 bool isPICDefaultForced()
const override;
285 bool SupportsProfiling()
const override;
287 bool UseDwarfDebugFlags()
const override;
288 std::string GetGlobalDebugPathRemapping()
const override;
290 llvm::ExceptionHandling
292 return llvm::ExceptionHandling::None;
309 const llvm::opt::ArgList &Args);
317 llvm::opt::ArgStringList &CC1Args)
const override;
320 llvm::opt::ArgStringList &CC1Args)
const override;
322 llvm::opt::ArgStringList &CC1Args)
const override;
324 llvm::opt::ArgStringList &CC1Args)
const override;
327 const llvm::opt::ArgList &DriverArgs,
328 llvm::opt::ArgStringList &CC1Args)
const override;
330 llvm::opt::ArgStringList &CmdArgs)
const override;
345 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
346 llvm::opt::ArgStringList &CC1Args)
const;
390 void AddDeploymentTarget(llvm::opt::DerivedArgList &Args)
const;
392 void VerifyTripleForSDK(
const llvm::opt::ArgList &Args,
393 const llvm::Triple Triple)
const;
403 const llvm::opt::ArgList &Args);
407 llvm::StringRef BoundArch,
414 llvm::opt::ArgStringList &CmdArgs)
const override;
417 llvm::opt::ArgStringList &CmdArgs)
const override;
420 llvm::opt::ArgStringList &CmdArgs)
const override;
427 void addProfileRTLibs(
const llvm::opt::ArgList &Args,
428 llvm::opt::ArgStringList &CmdArgs)
const override;
432 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
434 bool IsFortran =
false)
const override;
444 unsigned Major,
unsigned Minor,
unsigned Micro,
445 VersionTuple NativeTargetVersion)
const {
451 VersionTuple(Major, Minor, Micro))
564 unsigned V2 = 0)
const {
576 "Unexpected call for non OS X target!");
579 VersionTuple MinVers =
581 .getMinimumSupportedOSVersion();
591 bool isAlignedAllocationUnavailable()
const;
595 bool isSizedDeallocationUnavailable()
const;
598 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
599 llvm::opt::ArgStringList &CC1Args,
600 llvm::StringRef BoundArch,
603 void addClangCC1ASTargetOptions(
604 const llvm::opt::ArgList &Args,
605 llvm::opt::ArgStringList &CC1ASArgs)
const override;
607 StringRef getOSLibraryNameSuffix(
bool IgnoreSim =
false)
const override;
610 static StringRef getSDKName(StringRef isysroot);
621 llvm::opt::DerivedArgList *
622 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
625 CXXStdlibType GetDefaultCXXStdlibType()
const override;
626 ObjCRuntime getDefaultObjCRuntime(
bool isNonFragile)
const override;
627 bool hasBlocksRuntime()
const override;
651 void CheckObjCARC()
const override;
653 llvm::ExceptionHandling GetExceptionModel(
654 const llvm::opt::ArgList &Args)
const override;
656 bool SupportsEmbeddedBitcode()
const override;
659 getSupportedSanitizers(StringRef BoundArch,
667 const llvm::opt::ArgList &Args);
674 llvm::opt::ArgStringList &CC1Args)
const override;
679 llvm::opt::ArgStringList &CmdArgs,
680 bool ForceLinkBuiltinRT =
false)
const override;
683 llvm::opt::ArgStringList &CmdArgs)
const override;
689 llvm::opt::ArgStringList &CC1Args,
690 llvm::StringRef BoundArch,
694 llvm::opt::ArgStringList &CmdArgs)
const override;
699 const llvm::Triple &T)
const override;
706 return llvm::DebuggerKind::LLDB;
709 bool getDefaultDebugSimpleTemplateNames()
const override;
714 void AddLinkSanitizerLibArgs(
const llvm::opt::ArgList &Args,
715 llvm::opt::ArgStringList &CmdArgs,
717 bool shared =
true)
const;
720 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
721 llvm::opt::ArgStringList &CC1Args)
const override;
723 bool AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
724 llvm::opt::ArgStringList &CC1Args,
726 llvm::StringRef Version,
727 llvm::StringRef ArchDir,
728 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
The JSON file list parser is used to communicate input to InstallAPI.