@@ -961,15 +961,15 @@ void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA,
961961}
962962
963963MachO::MachO (const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
964- : ToolChain(D, Triple, Args) {
964+ : ToolChain(D, Triple, Args), CudaInstallation(D, Triple, Args),
965+ RocmInstallation(D, Triple, Args) {
965966 // We expect 'as', 'ld', etc. to be adjacent to our install dir.
966967 getProgramPaths ().push_back (getDriver ().Dir );
967968}
968969
969970// / Darwin - Darwin tool chain for i386 and x86_64.
970971Darwin::Darwin (const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
971- : MachO(D, Triple, Args), TargetInitialized(false ),
972- CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) {}
972+ : MachO(D, Triple, Args), TargetInitialized(false ) {}
973973
974974types::ID MachO::LookupTypeForExtension (StringRef Ext) const {
975975 types::ID Ty = ToolChain::LookupTypeForExtension (Ext);
@@ -1018,13 +1018,19 @@ bool Darwin::hasBlocksRuntime() const {
10181018 }
10191019}
10201020
1021- void Darwin::AddCudaIncludeArgs (const ArgList &DriverArgs,
1022- ArgStringList &CC1Args) const {
1021+ void MachO::AddCudaIncludeArgs (const ArgList &DriverArgs,
1022+ ArgStringList &CC1Args) const {
1023+ if (!isTargetAppleBased ())
1024+ return ToolChain::AddCudaIncludeArgs (DriverArgs, CC1Args);
1025+
10231026 CudaInstallation->AddCudaIncludeArgs (DriverArgs, CC1Args);
10241027}
10251028
1026- void Darwin::AddHIPIncludeArgs (const ArgList &DriverArgs,
1027- ArgStringList &CC1Args) const {
1029+ void MachO::AddHIPIncludeArgs (const ArgList &DriverArgs,
1030+ ArgStringList &CC1Args) const {
1031+ if (!isTargetAppleBased ())
1032+ return ToolChain::AddHIPIncludeArgs (DriverArgs, CC1Args);
1033+
10281034 RocmInstallation->AddHIPIncludeArgs (DriverArgs, CC1Args);
10291035}
10301036
@@ -2482,7 +2488,7 @@ static void AppendPlatformPrefix(SmallString<128> &Path,
24822488// Returns the effective sysroot from either -isysroot or --sysroot, plus the
24832489// platform prefix (if any).
24842490llvm::SmallString<128 >
2485- DarwinClang ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
2491+ MachO ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
24862492 llvm::SmallString<128 > Path (" /" );
24872493 if (DriverArgs.hasArg (options::OPT_isysroot))
24882494 Path = DriverArgs.getLastArgValue (options::OPT_isysroot);
@@ -2495,8 +2501,11 @@ DarwinClang::GetEffectiveSysroot(const llvm::opt::ArgList &DriverArgs) const {
24952501 return Path;
24962502}
24972503
2498- void DarwinClang::AddClangSystemIncludeArgs (const llvm::opt::ArgList &DriverArgs,
2499- llvm::opt::ArgStringList &CC1Args) const {
2504+ void MachO::AddClangSystemIncludeArgs (const llvm::opt::ArgList &DriverArgs,
2505+ llvm::opt::ArgStringList &CC1Args) const {
2506+ if (!isTargetAppleBased ())
2507+ return ToolChain::AddClangSystemIncludeArgs (DriverArgs, CC1Args);
2508+
25002509 const Driver &D = getDriver ();
25012510
25022511 llvm::SmallString<128 > Sysroot = GetEffectiveSysroot (DriverArgs);
@@ -2574,9 +2583,12 @@ bool DarwinClang::AddGnuCPlusPlusIncludePaths(const llvm::opt::ArgList &DriverAr
25742583 return getVFS ().exists (Base);
25752584}
25762585
2577- void DarwinClang ::AddClangCXXStdlibIncludeArgs (
2586+ void MachO ::AddClangCXXStdlibIncludeArgs (
25782587 const llvm::opt::ArgList &DriverArgs,
25792588 llvm::opt::ArgStringList &CC1Args) const {
2589+ if (!isTargetAppleBased ())
2590+ return ToolChain::AddClangCXXStdlibIncludeArgs (DriverArgs, CC1Args);
2591+
25802592 // The implementation from a base class will pass through the -stdlib to
25812593 // CC1Args.
25822594 // FIXME: this should not be necessary, remove usages in the frontend
@@ -2631,55 +2643,65 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
26312643 }
26322644
26332645 case ToolChain::CST_Libstdcxx:
2634- llvm::SmallString<128 > UsrIncludeCxx = Sysroot;
2635- llvm::sys::path::append (UsrIncludeCxx, " usr" , " include" , " c++" );
2636-
2637- llvm::Triple::ArchType arch = getTriple ().getArch ();
2638- bool IsBaseFound = true ;
2639- switch (arch) {
2640- default : break ;
2641-
2642- case llvm::Triple::x86:
2643- case llvm::Triple::x86_64:
2644- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2645- " 4.2.1" ,
2646- " i686-apple-darwin10" ,
2647- arch == llvm::Triple::x86_64 ? " x86_64" : " " );
2648- IsBaseFound |= AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2649- " 4.0.0" , " i686-apple-darwin8" ,
2650- " " );
2651- break ;
2646+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args);
2647+ break ;
2648+ }
2649+ }
26522650
2653- case llvm::Triple::arm:
2654- case llvm::Triple::thumb:
2655- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2656- " 4.2.1" ,
2657- " arm-apple-darwin10" ,
2658- " v7" );
2659- IsBaseFound |= AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2660- " 4.2.1" ,
2661- " arm-apple-darwin10" ,
2662- " v6" );
2663- break ;
2651+ void MachO::AddGnuCPlusPlusIncludePaths (
2652+ const llvm::opt::ArgList &DriverArgs,
2653+ llvm::opt::ArgStringList &CC1Args) const {}
26642654
2665- case llvm::Triple::aarch64:
2666- IsBaseFound = AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx,
2667- " 4.2.1" ,
2668- " arm64-apple-darwin10" ,
2669- " " );
2670- break ;
2671- }
2655+ void DarwinClang::AddGnuCPlusPlusIncludePaths (
2656+ const llvm::opt::ArgList &DriverArgs,
2657+ llvm::opt::ArgStringList &CC1Args) const {
2658+ llvm::SmallString<128 > Sysroot = GetEffectiveSysroot (DriverArgs);
26722659
2673- if (!IsBaseFound) {
2674- getDriver ().Diag (diag::warn_drv_libstdcxx_not_found);
2675- }
2660+ llvm::SmallString<128 > UsrIncludeCxx = Sysroot;
2661+ llvm::sys::path::append (UsrIncludeCxx, " usr" , " include" , " c++" );
2662+
2663+ llvm::Triple::ArchType arch = getTriple ().getArch ();
2664+ bool IsBaseFound = true ;
2665+ switch (arch) {
2666+ default :
2667+ break ;
26762668
2669+ case llvm::Triple::x86:
2670+ case llvm::Triple::x86_64:
2671+ IsBaseFound = AddGnuCPlusPlusIncludePaths (
2672+ DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" , " i686-apple-darwin10" ,
2673+ arch == llvm::Triple::x86_64 ? " x86_64" : " " );
2674+ IsBaseFound |= AddGnuCPlusPlusIncludePaths (
2675+ DriverArgs, CC1Args, UsrIncludeCxx, " 4.0.0" , " i686-apple-darwin8" , " " );
2676+ break ;
2677+
2678+ case llvm::Triple::arm:
2679+ case llvm::Triple::thumb:
2680+ IsBaseFound =
2681+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2682+ " arm-apple-darwin10" , " v7" );
2683+ IsBaseFound |=
2684+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2685+ " arm-apple-darwin10" , " v6" );
2686+ break ;
2687+
2688+ case llvm::Triple::aarch64:
2689+ IsBaseFound =
2690+ AddGnuCPlusPlusIncludePaths (DriverArgs, CC1Args, UsrIncludeCxx, " 4.2.1" ,
2691+ " arm64-apple-darwin10" , " " );
26772692 break ;
26782693 }
2694+
2695+ if (!IsBaseFound) {
2696+ getDriver ().Diag (diag::warn_drv_libstdcxx_not_found);
2697+ }
26792698}
26802699
2681- void DarwinClang::AddCXXStdlibLibArgs (const ArgList &Args,
2682- ArgStringList &CmdArgs) const {
2700+ void MachO::AddCXXStdlibLibArgs (const ArgList &Args,
2701+ ArgStringList &CmdArgs) const {
2702+ if (!isTargetAppleBased ())
2703+ return ToolChain::AddCXXStdlibLibArgs (Args, CmdArgs);
2704+
26832705 CXXStdlibType Type = GetCXXStdlibType (Args);
26842706
26852707 switch (Type) {
@@ -3615,7 +3637,10 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
36153637 return Res;
36163638}
36173639
3618- void Darwin::printVerboseInfo (raw_ostream &OS) const {
3640+ void MachO::printVerboseInfo (raw_ostream &OS) const {
3641+ if (!isTargetAppleBased ())
3642+ return ToolChain::printVerboseInfo (OS);
3643+
36193644 CudaInstallation->print (OS);
36203645 RocmInstallation->print (OS);
36213646}
0 commit comments