@@ -1049,10 +1049,14 @@ MachO::MachO(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
10491049 getProgramPaths ().push_back (getDriver ().Dir );
10501050}
10511051
1052+ AppleMachO::AppleMachO (const Driver &D, const llvm::Triple &Triple,
1053+ const ArgList &Args)
1054+ : MachO(D, Triple, Args), CudaInstallation(D, Triple, Args),
1055+ RocmInstallation(D, Triple, Args) {}
1056+
10521057// / Darwin - Darwin tool chain for i386 and x86_64.
10531058Darwin::Darwin (const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
1054- : MachO(D, Triple, Args), TargetInitialized(false ),
1055- CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) {}
1059+ : AppleMachO(D, Triple, Args), TargetInitialized(false ) {}
10561060
10571061types::ID MachO::LookupTypeForExtension (StringRef Ext) const {
10581062 types::ID Ty = ToolChain::LookupTypeForExtension (Ext);
@@ -1101,13 +1105,13 @@ bool Darwin::hasBlocksRuntime() const {
11011105 }
11021106}
11031107
1104- void Darwin ::AddCudaIncludeArgs (const ArgList &DriverArgs,
1105- ArgStringList &CC1Args) const {
1108+ void AppleMachO ::AddCudaIncludeArgs (const ArgList &DriverArgs,
1109+ ArgStringList &CC1Args) const {
11061110 CudaInstallation->AddCudaIncludeArgs (DriverArgs, CC1Args);
11071111}
11081112
1109- void Darwin ::AddHIPIncludeArgs (const ArgList &DriverArgs,
1110- ArgStringList &CC1Args) const {
1113+ void AppleMachO ::AddHIPIncludeArgs (const ArgList &DriverArgs,
1114+ ArgStringList &CC1Args) const {
11111115 RocmInstallation->AddHIPIncludeArgs (DriverArgs, CC1Args);
11121116}
11131117
@@ -1202,6 +1206,8 @@ VersionTuple MachO::getLinkerVersion(const llvm::opt::ArgList &Args) const {
12021206
12031207Darwin::~Darwin () {}
12041208
1209+ AppleMachO::~AppleMachO () {}
1210+
12051211MachO::~MachO () {}
12061212
12071213std::string Darwin::ComputeEffectiveClangTriple (const ArgList &Args,
@@ -2619,7 +2625,7 @@ static void AppendPlatformPrefix(SmallString<128> &Path,
26192625// Returns the effective sysroot from either -isysroot or --sysroot, plus the
26202626// platform prefix (if any).
26212627llvm::SmallString<128 >
2622- DarwinClang ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
2628+ AppleMachO ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
26232629 llvm::SmallString<128 > Path (" /" );
26242630 if (DriverArgs.hasArg (options::OPT_isysroot))
26252631 Path = DriverArgs.getLastArgValue (options::OPT_isysroot);
@@ -2632,8 +2638,9 @@ DarwinClang::GetEffectiveSysroot(const llvm::opt::ArgList &DriverArgs) const {
26322638 return Path;
26332639}
26342640
2635- void DarwinClang::AddClangSystemIncludeArgs (const llvm::opt::ArgList &DriverArgs,
2636- llvm::opt::ArgStringList &CC1Args) const {
2641+ void AppleMachO::AddClangSystemIncludeArgs (
2642+ const llvm::opt::ArgList &DriverArgs,
2643+ llvm::opt::ArgStringList &CC1Args) const {
26372644 const Driver &D = getDriver ();
26382645
26392646 llvm::SmallString<128 > Sysroot = GetEffectiveSysroot (DriverArgs);
@@ -2711,7 +2718,7 @@ bool DarwinClang::AddGnuCPlusPlusIncludePaths(const llvm::opt::ArgList &DriverAr
27112718 return getVFS ().exists (Base);
27122719}
27132720
2714- void DarwinClang ::AddClangCXXStdlibIncludeArgs (
2721+ void AppleMachO ::AddClangCXXStdlibIncludeArgs (
27152722 const llvm::opt::ArgList &DriverArgs,
27162723 llvm::opt::ArgStringList &CC1Args) const {
27172724 // The implementation from a base class will pass through the -stdlib to
@@ -2768,55 +2775,60 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
27682775 }
27692776
27702777 case ToolChain::CST_Libstdcxx:
2771- llvm::SmallString<128 > UsrIncludeCxx = Sysroot;
2772- llvm::sys::path::append (UsrIncludeCxx, " usr" , " include" , " c++" );
2773-
2774- llvm::Triple::ArchType arch = getTriple ().getArch ();
2775- bool IsBaseFound = true ;
2776- switch (arch) {
2777- default : break ;
2778-
2779- case llvm::Triple::x86:
2780- case llvm::Triple::x86_64:
2781- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2782- " 4.2.1" ,
2783- " i686-apple-darwin10" ,
2784- arch == llvm::Triple::x86_64 ? " x86_64" : " " );
2785- IsBaseFound |= AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2786- " 4.0.0" , " i686-apple-darwin8" ,
2787- " " );
2788- break ;
2778+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args);
2779+ break ;
2780+ }
2781+ }
27892782
2790- case llvm::Triple::arm:
2791- case llvm::Triple::thumb:
2792- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2793- " 4.2.1" ,
2794- " arm-apple-darwin10" ,
2795- " v7" );
2796- IsBaseFound |= AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2797- " 4.2.1" ,
2798- " arm-apple-darwin10" ,
2799- " v6" );
2800- break ;
2783+ void AppleMachO::AddGnuCPlusPlusIncludePaths (
2784+ const llvm::opt::ArgList &DriverArgs,
2785+ llvm::opt::ArgStringList &CC1Args) const {}
28012786
2802- case llvm::Triple::aarch64:
2803- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2804- " 4.2.1" ,
2805- " arm64-apple-darwin10" ,
2806- " " );
2807- break ;
2808- }
2787+ void DarwinClang::AddGnuCPlusPlusIncludePaths (
2788+ const llvm::opt::ArgList &DriverArgs,
2789+ llvm::opt::ArgStringList &CC1Args) const {
2790+ llvm::SmallString<128 > UsrIncludeCxx = GetEffectiveSysroot (DriverArgs);
2791+ llvm::sys::path::append (UsrIncludeCxx, " usr" , " include" , " c++" );
28092792
2810- if (!IsBaseFound) {
2811- getDriver ().Diag (diag::warn_drv_libstdcxx_not_found);
2812- }
2793+ llvm::Triple::ArchType arch = getTriple ().getArch ();
2794+ bool IsBaseFound = true ;
2795+ switch (arch) {
2796+ default :
2797+ break ;
28132798
2799+ case llvm::Triple::x86:
2800+ case llvm::Triple::x86_64:
2801+ IsBaseFound = AddGnuCPlusPlusIncludePaths (
2802+ DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" , " i686-apple-darwin10" ,
2803+ arch == llvm::Triple::x86_64 ? " x86_64" : " " );
2804+ IsBaseFound |= AddGnuCPlusPlusIncludePaths (
2805+ DriverArgs, CC1Args, UsrIncludeCxx, " 4.0.0" , " i686-apple-darwin8" , " " );
2806+ break ;
2807+
2808+ case llvm::Triple::arm:
2809+ case llvm::Triple::thumb:
2810+ IsBaseFound =
2811+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2812+ " arm-apple-darwin10" , " v7" );
2813+ IsBaseFound |=
2814+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2815+ " arm-apple-darwin10" , " v6" );
2816+ break ;
2817+
2818+ case llvm::Triple::aarch64:
2819+ IsBaseFound =
2820+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2821+ " arm64-apple-darwin10" , " " );
28142822 break ;
28152823 }
2824+
2825+ if (!IsBaseFound) {
2826+ getDriver ().Diag (diag::warn_drv_libstdcxx_not_found);
2827+ }
28162828}
28172829
2818- void DarwinClang ::AddCXXStdlibLibArgs (const ArgList &Args,
2819- ArgStringList &CmdArgs) const {
2830+ void AppleMachO ::AddCXXStdlibLibArgs (const ArgList &Args,
2831+ ArgStringList &CmdArgs) const {
28202832 CXXStdlibType Type = GetCXXStdlibType (Args);
28212833
28222834 switch (Type) {
@@ -3717,7 +3729,7 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
37173729 return Res;
37183730}
37193731
3720- void Darwin ::printVerboseInfo (raw_ostream &OS) const {
3732+ void AppleMachO ::printVerboseInfo (raw_ostream &OS) const {
37213733 CudaInstallation->print (OS);
37223734 RocmInstallation->print (OS);
37233735}
0 commit comments