10 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_H
11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_H
19 #include "llvm/ADT/DenseMap.h"
20 #include "llvm/ADT/Optional.h"
21 #include "llvm/ADT/SmallSet.h"
22 #include "llvm/Support/Compiler.h"
28 namespace toolchains {
63 static GCCVersion Parse(StringRef VersionText);
64 bool isOlderThan(
int RHSMajor,
int RHSMinor,
int RHSPatch,
65 StringRef RHSPatchSuffix = StringRef())
const;
82 llvm::Triple GCCTriple;
86 std::string GCCInstallPath;
87 std::string GCCParentLibPath;
99 std::set<std::string> CandidateGCCInstallPaths;
106 void init(
const llvm::Triple &TargetTriple,
const llvm::opt::ArgList &Args,
113 const llvm::Triple &
getTriple()
const {
return GCCTriple; }
129 bool getBiarchSibling(
Multilib &M)
const;
135 void print(raw_ostream &OS)
const;
139 CollectLibDirsAndTriples(
const llvm::Triple &TargetTriple,
140 const llvm::Triple &BiarchTriple,
146 void ScanLibDirForGCCTriple(
const llvm::Triple &TargetArch,
147 const llvm::opt::ArgList &Args,
148 const std::string &LibDir,
149 StringRef CandidateTriple,
150 bool NeedsBiarchSuffix =
false);
152 void scanLibDirForGCCTripleSolaris(
const llvm::Triple &TargetArch,
153 const llvm::opt::ArgList &Args,
154 const std::string &LibDir,
155 StringRef CandidateTriple,
156 bool NeedsBiarchSuffix =
false);
166 bool IsValid =
false;
168 std::string InstallPath;
171 std::string LibDevicePath;
172 std::string IncludePath;
173 llvm::StringMap<std::string> LibDeviceMap;
177 mutable llvm::SmallSet<CudaArch, 4> ArchsWithVersionTooLowErrors;
181 void init(
const llvm::Triple &TargetTriple,
const llvm::opt::ArgList &Args);
187 void CheckCudaVersionSupportsArch(
CudaArch Arch)
const;
192 void print(raw_ostream &OS)
const;
208 return LibDeviceMap.lookup(Gpu);
216 const llvm::opt::ArgList &Args);
219 void printVerboseInfo(raw_ostream &OS)
const override;
221 bool IsUnwindTablesDefault()
const override;
222 bool isPICDefault()
const override;
223 bool isPIEDefault()
const override;
224 bool isPICDefaultForced()
const override;
225 bool IsIntegratedAssemblerDefault()
const override;
229 Tool *buildAssembler()
const override;
230 Tool *buildLinker()
const override;
241 bool addLibStdCXXIncludePaths(Twine
Base, Twine Suffix, StringRef GCCTriple,
242 StringRef GCCMultiarchTriple,
243 StringRef TargetMultiarchTriple,
245 const llvm::opt::ArgList &DriverArgs,
246 llvm::opt::ArgStringList &CC1Args)
const;
251 mutable std::unique_ptr<tools::gcc::Preprocessor>
Preprocess;
252 mutable std::unique_ptr<tools::gcc::Compiler>
Compile;
257 Tool *buildAssembler()
const override;
258 Tool *buildLinker()
const override;
262 mutable std::unique_ptr<tools::darwin::Lipo> Lipo;
263 mutable std::unique_ptr<tools::darwin::Dsymutil> Dsymutil;
264 mutable std::unique_ptr<tools::darwin::VerifyDebug> VerifyDebug;
268 const llvm::opt::ArgList &Args);
276 StringRef getMachOArchName(
const llvm::opt::ArgList &Args)
const;
280 llvm::opt::ArgStringList &CmdArgs)
const {}
283 virtual void AddLinkRuntimeLibArgs(
const llvm::opt::ArgList &Args,
284 llvm::opt::ArgStringList &CmdArgs)
const;
287 llvm::opt::ArgStringList &CmdArgs)
const {
291 llvm::opt::ArgStringList &CmdArgs)
const {}
300 void AddLinkRuntimeLib(
const llvm::opt::ArgList &Args,
301 llvm::opt::ArgStringList &CmdArgs,
302 StringRef DarwinLibName,
bool AlwaysLink =
false,
303 bool IsEmbedded =
false,
bool AddRPath =
false)
const;
308 llvm::opt::ArgStringList &CmdArgs)
const override {
316 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
319 types::ID LookupTypeForExtension(
const char *Ext)
const override;
321 bool HasNativeLLVMSupport()
const override;
323 llvm::opt::DerivedArgList *
324 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
325 const char *BoundArch)
const override;
343 return getTriple().getArch() != llvm::Triple::x86;
348 bool IsUnwindTablesDefault()
const override;
354 bool isPICDefault()
const override;
355 bool isPIEDefault()
const override;
356 bool isPICDefaultForced()
const override;
358 bool SupportsProfiling()
const override;
362 bool UseDwarfDebugFlags()
const override;
397 void AddDeploymentTarget(llvm::opt::DerivedArgList &Args)
const;
401 const llvm::opt::ArgList &Args);
404 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
410 void addMinVersionArgs(
const llvm::opt::ArgList &Args,
411 llvm::opt::ArgStringList &CmdArgs)
const override;
413 void addStartObjectFileArgs(
const llvm::opt::ArgList &Args,
414 llvm::opt::ArgStringList &CmdArgs)
const override;
417 return (!(isTargetIPhoneOS() && !isIPhoneOSVersionLT(6, 0)) &&
421 void addProfileRTLibs(
const llvm::opt::ArgList &Args,
422 llvm::opt::ArgStringList &CmdArgs)
const override;
432 unsigned Micro)
const {
435 if (TargetInitialized && TargetPlatform == Platform &&
439 assert(!TargetInitialized &&
"Target already initialized!");
440 TargetInitialized =
true;
441 TargetPlatform = Platform;
446 assert(TargetInitialized &&
"Target not initialized!");
447 return TargetPlatform == IPhoneOS || TargetPlatform == TvOS;
451 assert(TargetInitialized &&
"Target not initialized!");
452 return TargetPlatform == IPhoneOSSimulator ||
453 TargetPlatform == TvOSSimulator;
457 assert(TargetInitialized &&
"Target not initialized!");
458 return isTargetIPhoneOS() || isTargetIOSSimulator();
462 assert(TargetInitialized &&
"Target not initialized!");
463 return TargetPlatform == TvOS;
467 assert(TargetInitialized &&
"Target not initialized!");
468 return TargetPlatform == TvOSSimulator;
472 assert(TargetInitialized &&
"Target not initialized!");
473 return TargetPlatform == TvOS || TargetPlatform == TvOSSimulator;
477 assert(TargetInitialized &&
"Target not initialized!");
478 return TargetPlatform == WatchOS;
482 assert(TargetInitialized &&
"Target not initialized!");
483 return TargetPlatform == WatchOSSimulator;
487 assert(TargetInitialized &&
"Target not initialized!");
488 return TargetPlatform == WatchOS || TargetPlatform == WatchOSSimulator;
492 assert(TargetInitialized &&
"Target not initialized!");
493 return TargetPlatform == MacOS;
499 assert(TargetInitialized &&
"Target not initialized!");
500 return TargetVersion;
504 unsigned V2 = 0)
const {
505 assert(isTargetIOSBased() &&
"Unexpected call for non iOS target!");
510 assert(isTargetMacOS() &&
"Unexpected call for non OS X target!");
514 StringRef getPlatformFamily()
const;
515 static StringRef getSDKName(StringRef isysroot);
516 StringRef getOSLibraryNameSuffix()
const;
528 llvm::opt::DerivedArgList *
529 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
530 const char *BoundArch)
const override;
532 CXXStdlibType GetDefaultCXXStdlibType()
const override;
533 ObjCRuntime getDefaultObjCRuntime(
bool isNonFragile)
const override;
534 bool hasBlocksRuntime()
const override;
540 return !(isTargetMacOS() && isMacosxVersionLT(10, 6));
546 if (isTargetIOSBased() || isTargetWatchOSBased())
548 else if (isTargetMacOS() && !isMacosxVersionLT(10, 6))
550 else if (isTargetMacOS() && !isMacosxVersionLT(10, 5) && !KernelOrKext)
556 bool SupportsObjCGC()
const override;
558 void CheckObjCARC()
const override;
560 bool UseSjLjExceptions(
const llvm::opt::ArgList &Args)
const override;
562 bool SupportsEmbeddedBitcode()
const override;
571 const llvm::opt::ArgList &Args);
576 void AddLinkRuntimeLibArgs(
const llvm::opt::ArgList &Args,
577 llvm::opt::ArgStringList &CmdArgs)
const override;
579 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
580 llvm::opt::ArgStringList &CmdArgs)
const override;
582 void AddCCKextLibArgs(
const llvm::opt::ArgList &Args,
583 llvm::opt::ArgStringList &CmdArgs)
const override;
585 void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args)
const override;
587 void AddLinkARCArgs(
const llvm::opt::ArgList &Args,
588 llvm::opt::ArgStringList &CmdArgs)
const override;
595 return llvm::DebuggerKind::LLDB;
601 void AddLinkSanitizerLibArgs(
const llvm::opt::ArgList &Args,
602 llvm::opt::ArgStringList &CmdArgs,
603 StringRef Sanitizer)
const;
607 virtual void anchor();
611 const llvm::opt::ArgList &Args)
614 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
615 llvm::opt::ArgStringList &CC1Args)
const override;
621 const llvm::opt::ArgList &Args);
631 void AddClangCXXStdlibIncludeArgs(
632 const llvm::opt::ArgList &DriverArgs,
633 llvm::opt::ArgStringList &CC1Args)
const override;
634 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
635 llvm::opt::ArgStringList &CmdArgs)
const override;
637 bool isPIEDefault()
const override;
642 Tool *buildLinker()
const override;
648 const llvm::opt::ArgList &Args);
652 void AddClangCXXStdlibIncludeArgs(
653 const llvm::opt::ArgList &DriverArgs,
654 llvm::opt::ArgStringList &CC1Args)
const override;
659 Tool *buildAssembler()
const override;
660 Tool *buildLinker()
const override;
666 const llvm::opt::ArgList &Args);
668 bool IsIntegratedAssemblerDefault()
const override;
669 bool IsUnwindTablesDefault()
const override;
670 bool isPICDefault()
const override;
671 bool isPIEDefault()
const override;
672 bool isPICDefaultForced()
const override;
673 bool UseSEHExceptions()
const;
676 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
677 llvm::opt::ArgStringList &CC1Args)
const override;
678 void AddClangCXXStdlibIncludeArgs(
679 const llvm::opt::ArgList &DriverArgs,
680 llvm::opt::ArgStringList &CC1Args)
const override;
684 Tool *buildLinker()
const override;
685 Tool *buildAssembler()
const override;
689 std::string GccLibDir;
692 mutable std::unique_ptr<tools::gcc::Preprocessor>
Preprocessor;
693 mutable std::unique_ptr<tools::gcc::Compiler> Compiler;
694 void findGccLibDir();
700 const llvm::opt::ArgList &Args);
702 bool isPIEDefault()
const override {
return getTriple().getArch() == llvm::Triple::x86_64; }
705 AddClangCXXStdlibIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
706 llvm::opt::ArgStringList &CC1Args)
const override;
712 const llvm::opt::ArgList &Args);
724 Tool *buildAssembler()
const override;
725 Tool *buildLinker()
const override;
731 const llvm::opt::ArgList &Args);
736 CXXStdlibType GetDefaultCXXStdlibType()
const override;
737 void AddClangCXXStdlibIncludeArgs(
738 const llvm::opt::ArgList &DriverArgs,
739 llvm::opt::ArgStringList &CC1Args)
const override;
740 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
741 llvm::opt::ArgStringList &CmdArgs)
const override;
747 Tool *buildAssembler()
const override;
748 Tool *buildLinker()
const override;
754 const llvm::opt::ArgList &Args);
755 bool HasNativeLLVMSupport()
const override;
760 CXXStdlibType GetDefaultCXXStdlibType()
const override;
761 void AddClangCXXStdlibIncludeArgs(
762 const llvm::opt::ArgList &DriverArgs,
763 llvm::opt::ArgStringList &CC1Args)
const override;
764 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
765 llvm::opt::ArgStringList &CmdArgs)
const override;
767 bool UseSjLjExceptions(
const llvm::opt::ArgList &Args)
const override;
768 bool isPIEDefault()
const override;
776 Tool *buildAssembler()
const override;
777 Tool *buildLinker()
const override;
783 const llvm::opt::ArgList &Args);
788 CXXStdlibType GetDefaultCXXStdlibType()
const override;
790 void AddClangCXXStdlibIncludeArgs(
791 const llvm::opt::ArgList &DriverArgs,
792 llvm::opt::ArgStringList &CC1Args)
const override;
796 Tool *buildAssembler()
const override;
797 Tool *buildLinker()
const override;
803 const llvm::opt::ArgList &Args);
806 Tool *buildAssembler()
const override;
807 Tool *buildLinker()
const override;
813 const llvm::opt::ArgList &Args);
818 Tool *buildAssembler()
const override;
819 Tool *buildLinker()
const override;
825 const llvm::opt::ArgList &Args);
827 bool HasNativeLLVMSupport()
const override;
830 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
831 llvm::opt::ArgStringList &CC1Args)
const override;
832 void AddClangCXXStdlibIncludeArgs(
833 const llvm::opt::ArgList &DriverArgs,
834 llvm::opt::ArgStringList &CC1Args)
const override;
835 void AddCudaIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
836 llvm::opt::ArgStringList &CC1Args)
const override;
837 void AddIAMCUIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
838 llvm::opt::ArgStringList &CC1Args)
const override;
839 bool isPIEDefault()
const override;
841 void addProfileRTLibs(
const llvm::opt::ArgList &Args,
842 llvm::opt::ArgStringList &CmdArgs)
const override;
843 virtual std::string computeSysRoot()
const;
845 virtual std::string getDynamicLinker(
const llvm::opt::ArgList &Args)
const;
850 Tool *buildAssembler()
const override;
851 Tool *buildLinker()
const override;
857 const llvm::opt::ArgList &Args);
859 llvm::opt::DerivedArgList *
860 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
861 const char *BoundArch)
const override;
862 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
863 llvm::opt::ArgStringList &CC1Args)
const override;
869 void AddCudaIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
870 llvm::opt::ArgStringList &CC1Args)
const override;
873 return CudaInstallation;
876 return CudaInstallation;
880 Tool *buildAssembler()
const override;
881 Tool *buildLinker()
const override;
886 Tool *buildLinker()
const override;
890 const llvm::opt::ArgList &Args);
893 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
894 llvm::opt::ArgStringList &CC1Args)
const override;
896 CXXStdlibType GetCXXStdlibType(
const llvm::opt::ArgList &Args)
const override;
898 void AddClangCXXStdlibIncludeArgs(
899 const llvm::opt::ArgList &DriverArgs,
900 llvm::opt::ArgStringList &CC1Args)
const override;
902 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
903 llvm::opt::ArgStringList &CmdArgs)
const override;
905 std::string
getCompilerRT(
const llvm::opt::ArgList &Args, StringRef Component,
906 bool Shared =
false)
const override;
908 std::string computeSysRoot()
const override;
911 return GCCInstallation.isValid() ? RuntimeLibType::RLT_Libgcc
912 : RuntimeLibType::RLT_CompilerRT;
917 std::string LibSuffix;
923 const llvm::opt::ArgList &Args)
931 Tool *buildAssembler()
const override;
932 Tool *buildLinker()
const override;
936 const llvm::opt::ArgList &Args);
940 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
941 llvm::opt::ArgStringList &CC1Args)
const override;
942 void AddClangCXXStdlibIncludeArgs(
943 const llvm::opt::ArgList &DriverArgs,
944 llvm::opt::ArgStringList &CC1Args)
const override;
945 CXXStdlibType GetCXXStdlibType(
const llvm::opt::ArgList &Args)
const override;
952 std::string getHexagonTargetDir(
953 const std::string &InstalledDir,
955 void getHexagonLibraryPaths(
const llvm::opt::ArgList &Args,
958 static const StringRef GetDefaultCPU();
959 static const StringRef GetTargetCPUVersion(
const llvm::opt::ArgList &Args);
962 const llvm::opt::ArgList &Args);
967 Tool *buildLinker()
const override;
971 const llvm::opt::ArgList &Args);
979 const llvm::opt::ArgList &Args);
982 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
983 llvm::opt::ArgStringList &CC1Args)
const override;
984 void AddClangCXXStdlibIncludeArgs(
985 const llvm::opt::ArgList &DriverArgs,
986 llvm::opt::ArgStringList &CC1Args)
const override;
988 CXXStdlibType GetCXXStdlibType(
const llvm::opt::ArgList &Args)
const override;
990 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
991 llvm::opt::ArgStringList &CmdArgs)
const override;
994 return getTriple().getArch() == llvm::Triple::mipsel;
1002 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
1006 Tool *buildLinker()
const override;
1007 Tool *buildAssembler()
const override;
1010 std::string NaClArmMacrosPath;
1018 const llvm::opt::ArgList &Args);
1021 bool IsMathErrnoDefault()
const override;
1022 bool isPICDefault()
const override;
1023 bool isPIEDefault()
const override;
1024 bool isPICDefaultForced()
const override;
1030 const llvm::opt::ArgList &Args);
1032 llvm::opt::DerivedArgList *
1033 TranslateArgs(
const llvm::opt::DerivedArgList &Args,
1034 const char *BoundArch)
const override;
1036 bool IsIntegratedAssemblerDefault()
const override;
1037 bool IsUnwindTablesDefault()
const override;
1038 bool isPICDefault()
const override;
1039 bool isPIEDefault()
const override;
1040 bool isPICDefaultForced()
const override;
1043 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
1044 llvm::opt::ArgStringList &CC1Args)
const override;
1045 void AddClangCXXStdlibIncludeArgs(
1046 const llvm::opt::ArgList &DriverArgs,
1047 llvm::opt::ArgStringList &CC1Args)
const override;
1049 bool getWindowsSDKDir(std::string &path,
int &major,
1050 std::string &windowsSDKIncludeVersion,
1051 std::string &windowsSDKLibVersion)
const;
1052 bool getWindowsSDKLibraryPath(std::string &path)
const;
1054 bool useUniversalCRT(std::string &visualStudioDir)
const;
1055 bool getUniversalCRTSdkDir(std::string &path, std::string &ucrtVersion)
const;
1056 bool getUniversalCRTLibraryPath(std::string &path)
const;
1057 bool getVisualStudioInstallDir(std::string &path)
const;
1058 bool getVisualStudioBinariesFolder(
const char *clangProgramPath,
1059 std::string &path)
const;
1062 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
1067 void AddSystemIncludeWithSubfolder(
const llvm::opt::ArgList &DriverArgs,
1068 llvm::opt::ArgStringList &CC1Args,
1069 const std::string &folder,
1070 const Twine &subfolder1,
1071 const Twine &subfolder2 =
"",
1072 const Twine &subfolder3 =
"")
const;
1074 Tool *buildLinker()
const override;
1075 Tool *buildAssembler()
const override;
1081 const llvm::opt::ArgList &Args);
1084 bool IsUnwindTablesDefault()
const override;
1085 bool isPICDefault()
const override;
1086 bool isPIEDefault()
const override;
1087 bool isPICDefaultForced()
const override;
1094 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
1095 llvm::opt::ArgStringList &CC1Args)
const override;
1096 void AddClangCXXStdlibIncludeArgs(
1097 const llvm::opt::ArgList &DriverArgs,
1098 llvm::opt::ArgStringList &CC1Args)
const override;
1099 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
1100 llvm::opt::ArgStringList &CmdArgs)
const override;
1105 Tool *buildLinker()
const override;
1106 Tool *buildAssembler()
const override;
1112 const llvm::opt::ArgList &Args);
1115 Tool *buildAssembler()
const override;
1116 Tool *buildLinker()
const override;
1119 bool isPICDefault()
const override;
1120 bool isPIEDefault()
const override;
1121 bool isPICDefaultForced()
const override;
1122 bool SupportsProfiling()
const override;
1123 bool hasBlocksRuntime()
const override;
1125 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
1126 llvm::opt::ArgStringList &CC1Args)
const override;
1127 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
1128 llvm::opt::ArgStringList &CC1Args)
const override;
1129 void AddClangCXXStdlibIncludeArgs(
1130 const llvm::opt::ArgList &DriverArgs,
1131 llvm::opt::ArgStringList &CC1Args)
const override;
1132 void AddCXXStdlibLibArgs(
const llvm::opt::ArgList &Args,
1133 llvm::opt::ArgStringList &CmdArgs)
const override;
1141 const llvm::opt::ArgList &Args);
1145 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
1146 llvm::opt::ArgStringList &CC1Args)
const override;
1147 void AddClangCXXStdlibIncludeArgs(
1148 const llvm::opt::ArgList &DriverArgs,
1149 llvm::opt::ArgStringList &CC1Args)
const override;
1154 Tool *buildLinker()
const override;
1156 return T.getArch() == llvm::Triple::shave;
1160 mutable std::unique_ptr<Tool> Compiler;
1161 mutable std::unique_ptr<Tool> Assembler;
1167 const llvm::opt::ArgList &Args);
1170 bool IsMathErrnoDefault()
const override;
1171 bool IsObjCNonFragileABIDefault()
const override;
1172 bool UseObjCMixedDispatch()
const override;
1173 bool isPICDefault()
const override;
1174 bool isPIEDefault()
const override;
1175 bool isPICDefaultForced()
const override;
1176 bool IsIntegratedAssemblerDefault()
const override;
1177 bool hasBlocksRuntime()
const override;
1178 bool SupportsObjCGC()
const override;
1179 bool SupportsProfiling()
const override;
1180 bool HasNativeLLVMSupport()
const override;
1181 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
1182 llvm::opt::ArgStringList &CC1Args)
const override;
1184 CXXStdlibType GetCXXStdlibType(
const llvm::opt::ArgList &Args)
const override;
1185 void AddClangSystemIncludeArgs(
1186 const llvm::opt::ArgList &DriverArgs,
1187 llvm::opt::ArgStringList &CC1Args)
const override;
1188 void AddClangCXXStdlibIncludeArgs(
1189 const llvm::opt::ArgList &DriverArgs,
1190 llvm::opt::ArgStringList &CC1Args)
const override;
1192 Tool *buildLinker()
const override;
1198 const llvm::opt::ArgList &Args);
1202 bool HasNativeLLVMSupport()
const override;
1203 bool isPICDefault()
const override;
1210 return llvm::DebuggerKind::SCE;
1216 Tool *buildAssembler()
const override;
1217 Tool *buildLinker()
const override;
1224 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_H
Represents a version number in the form major[.minor[.subminor[.build]]].
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
This corresponds to a single GCC Multilib, or a segment of one controlled by a command line flag...
The basic abstraction for the target Objective-C runtime.
Defines the clang::VersionTuple class, which represents a version in the form major[.minor[.subminor]].
Engages in a tight little dance with the lexer to efficiently preprocess tokens.