Lines Matching full:darwin
1 //===--- Darwin.cpp - Darwin Tool and ToolChain Implementations -*- C++ -*-===//
9 #include "Darwin.h"
41 llvm::Triple::ArchType darwin::getArchTypeForMachOArchName(StringRef Str) { in getArchTypeForMachOArchName()
43 // archs which Darwin doesn't use. in getArchTypeForMachOArchName()
51 // This code must be kept in sync with Clang's Darwin specific argument in getArchTypeForMachOArchName()
77 void darwin::setTripleTypeForMachOArchName(llvm::Triple &T, StringRef Str) { in setTripleTypeForMachOArchName()
92 void darwin::Assembler::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
111 // If -fno-integrated-as is used add -Q to the darwin assembler driver to make in ConstructJob()
113 // Applicable to darwin11+ and Xcode 4+. darwin<10 lacked integrated-as. in ConstructJob()
160 void darwin::MachOTool::anchor() {} in anchor()
162 void darwin::MachOTool::AddMachOArch(const ArgList &Args, in AddMachOArch()
175 bool darwin::Linker::NeedsTempPath(const InputInfoList &Inputs) const { in NeedsTempPath()
209 void darwin::Linker::AddLinkArgs(Compilation &C, const ArgList &Args, in AddLinkArgs()
527 void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
769 void darwin::StaticLibTool::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
817 void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
840 void darwin::Dsymutil::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
861 void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA, in ConstructJob()
893 /// Darwin - Darwin tool chain for i386 and x86_64.
894 Darwin::Darwin(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) in Darwin() function in Darwin
901 // Darwin always preprocesses assembly files (unless -x is used explicitly). in LookupTypeForExtension()
910 ToolChain::CXXStdlibType Darwin::GetDefaultCXXStdlibType() const { in GetDefaultCXXStdlibType()
915 /// Darwin provides an ARC runtime starting in MacOS X 10.7 and iOS 5.0.
916 ObjCRuntime Darwin::getDefaultObjCRuntime(bool isNonFragile) const { in getDefaultObjCRuntime()
926 /// Darwin provides a blocks runtime starting in MacOS X 10.6 and iOS 3.2.
927 bool Darwin::hasBlocksRuntime() const { in hasBlocksRuntime()
933 assert(isTargetMacOSBased() && "unexpected darwin target"); in hasBlocksRuntime()
938 void Darwin::AddCudaIncludeArgs(const ArgList &DriverArgs, in AddCudaIncludeArgs()
943 void Darwin::AddHIPIncludeArgs(const ArgList &DriverArgs, in AddHIPIncludeArgs()
1037 Darwin::~Darwin() {} in ~Darwin()
1041 std::string Darwin::ComputeEffectiveClangTriple(const ArgList &Args, in ComputeEffectiveClangTriple()
1045 // If the target isn't initialized (e.g., an unknown Darwin platform, return in ComputeEffectiveClangTriple()
1071 Lipo.reset(new tools::darwin::Lipo(*this)); in getTool()
1075 Dsymutil.reset(new tools::darwin::Dsymutil(*this)); in getTool()
1079 VerifyDebug.reset(new tools::darwin::VerifyDebug(*this)); in getTool()
1086 Tool *MachO::buildLinker() const { return new tools::darwin::Linker(*this); } in buildLinker()
1089 return new tools::darwin::StaticLibTool(*this); in buildStaticLibTool()
1093 return new tools::darwin::Assembler(*this); in buildAssembler()
1098 : Darwin(D, Triple, Args) {} in DarwinClang()
1215 // an Darwin the builtins compomnent is not in the library name in AddLinkRuntimeLib()
1225 llvm::sys::path::append(Dir, "lib", "darwin"); in AddLinkRuntimeLib()
1259 StringRef Darwin::getPlatformFamily() const { in getPlatformFamily()
1277 StringRef Darwin::getSDKName(StringRef isysroot) { in getSDKName()
1289 StringRef Darwin::getOSLibraryNameSuffix(bool IgnoreSim) const { in getOSLibraryNameSuffix()
1332 /// expected page size for Darwin.
1344 void Darwin::addProfileRTLibs(const ArgList &Args, in addProfileRTLibs()
1397 << Value << "darwin"; in GetRuntimeLibType()
1409 // Darwin doesn't support real static executables, don't link any runtime in AddLinkRuntimeLibArgs()
1511 /// The Darwin OS that was selected or inferred from arguments / environment.
1528 using DarwinPlatformKind = Darwin::DarwinPlatformKind;
1529 using DarwinEnvironmentKind = Darwin::DarwinEnvironmentKind;
1611 llvm_unreachable("Unsupported Darwin Source Kind"); in getAsString()
1725 case llvm::Triple::Darwin: in getPlatformFromOS()
1737 llvm_unreachable("Unable to infer Darwin variant"); in getPlatformFromOS()
1774 return DarwinPlatform::createOSVersionArg(Darwin::MacOS, macOSVersion, in getDeploymentTargetFromOSVersionArg()
1783 Darwin::IPhoneOS, iOSVersion, in getDeploymentTargetFromOSVersionArg()
1793 Darwin::TvOS, TvOSVersion, in getDeploymentTargetFromOSVersionArg()
1798 Darwin::WatchOS, WatchOSVersion, in getDeploymentTargetFromOSVersionArg()
1809 std::string Targets[Darwin::LastDarwinPlatform + 1]; in getDeploymentTargetFromEnvironmentVariables()
1817 static_assert(std::size(EnvVars) == Darwin::LastDarwinPlatform + 1, in getDeploymentTargetFromEnvironmentVariables()
1826 if (!Targets[Darwin::MacOS].empty() && in getDeploymentTargetFromEnvironmentVariables()
1827 (!Targets[Darwin::IPhoneOS].empty() || in getDeploymentTargetFromEnvironmentVariables()
1828 !Targets[Darwin::WatchOS].empty() || !Targets[Darwin::TvOS].empty())) { in getDeploymentTargetFromEnvironmentVariables()
1832 Targets[Darwin::MacOS] = ""; in getDeploymentTargetFromEnvironmentVariables()
1834 Targets[Darwin::IPhoneOS] = Targets[Darwin::WatchOS] = in getDeploymentTargetFromEnvironmentVariables()
1835 Targets[Darwin::TvOS] = ""; in getDeploymentTargetFromEnvironmentVariables()
1853 (Darwin::DarwinPlatformKind)Target.index(), EnvVars[Target.index()], in getDeploymentTargetFromEnvironmentVariables()
1878 StringRef SDK = Darwin::getSDKName(isysroot); in inferDeploymentTargetFromSDK()
1901 Darwin::IPhoneOS, Version, in inferDeploymentTargetFromSDK()
1904 return DarwinPlatform::createFromSDK(Darwin::MacOS, in inferDeploymentTargetFromSDK()
1908 Darwin::WatchOS, Version, in inferDeploymentTargetFromSDK()
1912 Darwin::TvOS, Version, in inferDeploymentTargetFromSDK()
1915 return DarwinPlatform::createFromSDK(Darwin::DriverKit, Version); in inferDeploymentTargetFromSDK()
1929 case llvm::Triple::Darwin: in getOSVersion()
1969 inferDeploymentTargetFromArch(DerivedArgList &Args, const Darwin &Toolchain, in inferDeploymentTargetFromArch()
1996 if (Triple.getOS() == llvm::Triple::Darwin || in getDeploymentTargetFromTargetArg()
2078 void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { in AddDeploymentTarget()
2191 assert(OSTarget && "Unable to infer Darwin variant"); in AddDeploymentTarget()
2259 llvm_unreachable("unknown kind of Darwin platform"); in AddDeploymentTarget()
2410 // On Darwin, libc++ can be installed in one of the following two places: in AddClangCXXStdlibIncludeArgs()
2521 // it was previously found in the gcc lib dir. However, for all the Darwin in AddCXXStdlibLibArgs()
2557 // For Darwin platforms, use the compiler-rt-based support library in AddCCKextLibArgs()
2562 llvm::sys::path::append(P, "lib", "darwin"); in AddCCKextLibArgs()
2769 bool Darwin::isAlignedAllocationUnavailable() const { in isAlignedAllocationUnavailable()
2794 void Darwin::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, in addClangTargetOptions()
2818 void Darwin::addClangCC1ASTargetOptions( in addClangCC1ASTargetOptions()
2821 CC1ASArgs.push_back("-darwin-target-variant-triple"); in addClangCC1ASTargetOptions()
2854 OS << "-darwin-target-variant-sdk-version=" << SDKInfo->getVersion(); in addClangCC1ASTargetOptions()
2865 OS << "-darwin-target-variant-sdk-version=" << *SDKVersion; in addClangCC1ASTargetOptions()
2874 Darwin::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch, in TranslateArgs()
2876 // First get the generic Apple args, before moving onto Darwin-specific ones. in TranslateArgs()
2910 auto Arch = tools::darwin::getArchTypeForMachOArchName(BoundArch); in TranslateArgs()
2946 llvm::ExceptionHandling Darwin::GetExceptionModel(const ArgList &Args) const { in GetExceptionModel()
2947 // Darwin uses SjLj exceptions on ARM. in GetExceptionModel()
2960 bool Darwin::SupportsEmbeddedBitcode() const { in SupportsEmbeddedBitcode()
2981 void Darwin::addMinVersionArgs(const ArgList &Args, in addMinVersionArgs()
3031 static const char *getPlatformName(Darwin::DarwinPlatformKind Platform, in getPlatformName()
3032 Darwin::DarwinEnvironmentKind Environment) { in getPlatformName()
3034 case Darwin::MacOS: in getPlatformName()
3036 case Darwin::IPhoneOS: in getPlatformName()
3037 if (Environment == Darwin::MacCatalyst) in getPlatformName()
3040 case Darwin::TvOS: in getPlatformName()
3042 case Darwin::WatchOS: in getPlatformName()
3044 case Darwin::DriverKit: in getPlatformName()
3050 void Darwin::addPlatformVersionArgs(const llvm::opt::ArgList &Args, in addPlatformVersionArgs()
3053 [&](const VersionTuple &TV, Darwin::DarwinPlatformKind TargetPlatform, in addPlatformVersionArgs()
3054 Darwin::DarwinEnvironmentKind TargetEnvironment, in addPlatformVersionArgs()
3061 if (TargetEnvironment == Darwin::Simulator) in addPlatformVersionArgs()
3065 if ((TargetPlatform == Darwin::IPhoneOS || in addPlatformVersionArgs()
3066 TargetPlatform == Darwin::TvOS) && in addPlatformVersionArgs()
3119 Darwin::DarwinPlatformKind Platform; in addPlatformVersionArgs()
3120 Darwin::DarwinEnvironmentKind Environment; in addPlatformVersionArgs()
3124 Platform = Darwin::MacOS; in addPlatformVersionArgs()
3125 Environment = Darwin::NativeEnvironment; in addPlatformVersionArgs()
3131 Platform = Darwin::IPhoneOS; in addPlatformVersionArgs()
3132 Environment = Darwin::MacCatalyst; in addPlatformVersionArgs()
3139 static void addDynamicLibLinkArgs(const Darwin &D, const ArgList &Args, in addDynamicLibLinkArgs()
3157 static void addBundleLinkArgs(const Darwin &D, const ArgList &Args, in addBundleLinkArgs()
3168 static void addPgProfilingLinkArgs(const Darwin &D, const ArgList &Args, in addPgProfilingLinkArgs()
3192 static void addDefaultCRTLinkArgs(const Darwin &D, const ArgList &Args, in addDefaultCRTLinkArgs()
3216 void Darwin::addStartObjectFileArgs(const ArgList &Args, in addStartObjectFileArgs()
3239 void Darwin::CheckObjCARC() const { in CheckObjCARC()
3246 SanitizerMask Darwin::getSupportedSanitizers() const { in getSupportedSanitizers()
3274 void Darwin::printVerboseInfo(raw_ostream &OS) const { in printVerboseInfo()