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,
BoundArch BA,
154 mutable std::unique_ptr<tools::darwin::Lipo> Lipo;
155 mutable std::unique_ptr<tools::darwin::Dsymutil> Dsymutil;
156 mutable std::unique_ptr<tools::darwin::VerifyDebug> VerifyDebug;
159 mutable std::optional<VersionTuple> LinkerVersion;
163 const llvm::opt::ArgList &Args);
179 llvm::opt::ArgStringList &CmdArgs)
const {}
185 virtual void AddLinkRuntimeLibArgs(
const llvm::opt::ArgList &Args,
186 llvm::opt::ArgStringList &CmdArgs,
187 bool ForceLinkBuiltinRT =
false)
const;
190 llvm::opt::ArgStringList &CmdArgs)
const {
194 llvm::opt::ArgStringList &CmdArgs)
const {}
197 llvm::opt::ArgStringList &CmdArgs)
const {
203 const llvm::Triple &T)
const {}
225 void AddLinkRuntimeLib(
const llvm::opt::ArgList &Args,
226 llvm::opt::ArgStringList &CmdArgs, StringRef Component,
227 RuntimeLinkOptions Opts = RuntimeLinkOptions(),
228 bool IsShared =
false)
const;
233 llvm::opt::ArgStringList &CmdArgs)
const override {
240 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
242 bool IsFortran =
false)
const override;
248 types::ID LookupTypeForExtension(StringRef Ext)
const override;
250 bool HasNativeLLVMSupport()
const override;
252 llvm::opt::DerivedArgList *
253 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
BoundArch BA,
268 return getTriple().getArch() != llvm::Triple::x86;
274 getDefaultUnwindTableLevel(
const llvm::opt::ArgList &Args)
const override;
280 bool isPICDefault()
const override;
281 bool isPIEDefault(
const llvm::opt::ArgList &Args)
const override;
282 bool isPICDefaultForced()
const override;
284 bool SupportsProfiling()
const override;
286 bool UseDwarfDebugFlags()
const override;
287 std::string GetGlobalDebugPathRemapping()
const override;
289 llvm::ExceptionHandling
291 return llvm::ExceptionHandling::None;
308 const llvm::opt::ArgList &Args);
316 llvm::opt::ArgStringList &CC1Args)
const override;
319 llvm::opt::ArgStringList &CC1Args)
const override;
321 llvm::opt::ArgStringList &CC1Args)
const override;
323 llvm::opt::ArgStringList &CC1Args)
const override;
326 const llvm::opt::ArgList &DriverArgs,
327 llvm::opt::ArgStringList &CC1Args)
const override;
329 llvm::opt::ArgStringList &CmdArgs)
const override;
344 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
345 llvm::opt::ArgStringList &CC1Args)
const;
389 void AddDeploymentTarget(llvm::opt::DerivedArgList &Args)
const;
391 void VerifyTripleForSDK(
const llvm::opt::ArgList &Args,
392 const llvm::Triple &Triple)
const;
402 const llvm::opt::ArgList &Args);
413 llvm::opt::ArgStringList &CmdArgs)
const override;
416 llvm::opt::ArgStringList &CmdArgs)
const override;
419 llvm::opt::ArgStringList &CmdArgs)
const override;
426 void addProfileRTLibs(
const llvm::opt::ArgList &Args,
427 llvm::opt::ArgStringList &CmdArgs)
const override;
431 std::string getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
433 bool IsFortran =
false)
const override;
443 unsigned Major,
unsigned Minor,
unsigned Micro,
444 VersionTuple NativeTargetVersion)
const {
450 VersionTuple(Major, Minor, Micro))
563 unsigned V2 = 0)
const {
575 "Unexpected call for non OS X target!");
578 VersionTuple MinVers =
580 .getMinimumSupportedOSVersion();
590 bool isAlignedAllocationUnavailable()
const;
594 bool isSizedDeallocationUnavailable()
const;
597 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
598 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
601 void addClangCC1ASTargetOptions(
602 const llvm::opt::ArgList &Args,
603 llvm::opt::ArgStringList &CC1ASArgs)
const override;
605 StringRef getOSLibraryNameSuffix(
bool IgnoreSim =
false)
const override;
608 static StringRef getSDKName(StringRef isysroot);
619 llvm::opt::DerivedArgList *
620 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
BoundArch BA,
623 CXXStdlibType GetDefaultCXXStdlibType()
const override;
624 ObjCRuntime getDefaultObjCRuntime(
bool isNonFragile)
const override;
625 bool hasBlocksRuntime()
const override;
649 void CheckObjCARC()
const override;
651 llvm::ExceptionHandling GetExceptionModel(
652 const llvm::opt::ArgList &Args)
const override;
654 bool SupportsEmbeddedBitcode()
const override;
665 const llvm::opt::ArgList &Args);
672 llvm::opt::ArgStringList &CC1Args)
const override;
677 llvm::opt::ArgStringList &CmdArgs,
678 bool ForceLinkBuiltinRT =
false)
const override;
681 llvm::opt::ArgStringList &CmdArgs)
const override;
687 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
691 llvm::opt::ArgStringList &CmdArgs)
const override;
696 const llvm::Triple &T)
const override;
703 return llvm::DebuggerKind::LLDB;
706 bool getDefaultDebugSimpleTemplateNames()
const override;
711 void AddLinkSanitizerLibArgs(
const llvm::opt::ArgList &Args,
712 llvm::opt::ArgStringList &CmdArgs,
714 bool shared =
true)
const;
717 AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
718 llvm::opt::ArgStringList &CC1Args)
const override;
720 bool AddGnuCPlusPlusIncludePaths(
const llvm::opt::ArgList &DriverArgs,
721 llvm::opt::ArgStringList &CC1Args,
723 llvm::StringRef Version,
724 llvm::StringRef ArchDir,
725 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.
Represents a bound architecture for offload / multiple architecture compilation.