@@ -961,15 +961,15 @@ void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA,
961
961
}
962
962
963
963
MachO::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) {
965
966
// We expect 'as', 'ld', etc. to be adjacent to our install dir.
966
967
getProgramPaths ().push_back (getDriver ().Dir );
967
968
}
968
969
969
970
// / Darwin - Darwin tool chain for i386 and x86_64.
970
971
Darwin::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 ) {}
973
973
974
974
types::ID MachO::LookupTypeForExtension (StringRef Ext) const {
975
975
types::ID Ty = ToolChain::LookupTypeForExtension (Ext);
@@ -1018,13 +1018,19 @@ bool Darwin::hasBlocksRuntime() const {
1018
1018
}
1019
1019
}
1020
1020
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
+
1023
1026
CudaInstallation->AddCudaIncludeArgs (DriverArgs, CC1Args);
1024
1027
}
1025
1028
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
+
1028
1034
RocmInstallation->AddHIPIncludeArgs (DriverArgs, CC1Args);
1029
1035
}
1030
1036
@@ -2482,7 +2488,7 @@ static void AppendPlatformPrefix(SmallString<128> &Path,
2482
2488
// Returns the effective sysroot from either -isysroot or --sysroot, plus the
2483
2489
// platform prefix (if any).
2484
2490
llvm::SmallString<128 >
2485
- DarwinClang ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
2491
+ MachO ::GetEffectiveSysroot (const llvm::opt::ArgList &DriverArgs) const {
2486
2492
llvm::SmallString<128 > Path (" /" );
2487
2493
if (DriverArgs.hasArg (options::OPT_isysroot))
2488
2494
Path = DriverArgs.getLastArgValue (options::OPT_isysroot);
@@ -2495,8 +2501,11 @@ DarwinClang::GetEffectiveSysroot(const llvm::opt::ArgList &DriverArgs) const {
2495
2501
return Path;
2496
2502
}
2497
2503
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
+
2500
2509
const Driver &D = getDriver ();
2501
2510
2502
2511
llvm::SmallString<128 > Sysroot = GetEffectiveSysroot (DriverArgs);
@@ -2574,9 +2583,12 @@ bool DarwinClang::AddGnuCPlusPlusIncludePaths(const llvm::opt::ArgList &DriverAr
2574
2583
return getVFS ().exists (Base);
2575
2584
}
2576
2585
2577
- void DarwinClang ::AddClangCXXStdlibIncludeArgs (
2586
+ void MachO ::AddClangCXXStdlibIncludeArgs (
2578
2587
const llvm::opt::ArgList &DriverArgs,
2579
2588
llvm::opt::ArgStringList &CC1Args) const {
2589
+ if (!isTargetAppleBased ())
2590
+ return ToolChain::AddClangCXXStdlibIncludeArgs (DriverArgs, CC1Args);
2591
+
2580
2592
// The implementation from a base class will pass through the -stdlib to
2581
2593
// CC1Args.
2582
2594
// FIXME: this should not be necessary, remove usages in the frontend
@@ -2631,55 +2643,65 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
2631
2643
}
2632
2644
2633
2645
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
+ }
2652
2650
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 {}
2664
2654
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);
2672
2659
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 ;
2676
2668
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" , " " );
2677
2692
break ;
2678
2693
}
2694
+
2695
+ if (!IsBaseFound) {
2696
+ getDriver ().Diag (diag::warn_drv_libstdcxx_not_found);
2697
+ }
2679
2698
}
2680
2699
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
+
2683
2705
CXXStdlibType Type = GetCXXStdlibType (Args);
2684
2706
2685
2707
switch (Type) {
@@ -3615,7 +3637,10 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
3615
3637
return Res;
3616
3638
}
3617
3639
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
+
3619
3644
CudaInstallation->print (OS);
3620
3645
RocmInstallation->print (OS);
3621
3646
}
0 commit comments