11use super :: TargetInfo ;
22
3+ #[ derive( Copy , Clone , Debug , Eq , PartialEq ) ]
4+ pub ( crate ) enum AppleEnv {
5+ Simulator ,
6+ MacCatalyst ,
7+ }
8+ pub ( crate ) use AppleEnv :: * ;
9+
310impl TargetInfo < ' _ > {
11+ pub ( crate ) fn get_apple_env ( & self ) -> Option < AppleEnv > {
12+ match ( self . env , self . abi ) {
13+ ( "sim" , _) | ( _, "sim" ) => Some ( Simulator ) ,
14+ ( "macabi" , _) | ( _, "macabi" ) => Some ( MacCatalyst ) ,
15+ _ => None ,
16+ }
17+ }
18+
419 pub ( crate ) fn apple_sdk_name ( & self ) -> & ' static str {
5- match ( self . os , self . abi ) {
6- ( "macos" , "" ) => "macosx" ,
7- ( "ios" , "" ) => "iphoneos" ,
8- ( "ios" , "sim" ) => "iphonesimulator" ,
9- ( "ios" , "macabi" ) => "macosx" ,
10- ( "tvos" , "" ) => "appletvos" ,
11- ( "tvos" , "sim" ) => "appletvsimulator" ,
12- ( "watchos" , "" ) => "watchos" ,
13- ( "watchos" , "sim" ) => "watchsimulator" ,
14- ( "visionos" , "" ) => "xros" ,
15- ( "visionos" , "sim" ) => "xrsimulator" ,
20+ match ( self . os , self . get_apple_env ( ) ) {
21+ ( "macos" , None ) => "macosx" ,
22+ ( "ios" , None ) => "iphoneos" ,
23+ ( "ios" , Some ( Simulator ) ) => "iphonesimulator" ,
24+ ( "ios" , Some ( MacCatalyst ) ) => "macosx" ,
25+ ( "tvos" , None ) => "appletvos" ,
26+ ( "tvos" , Some ( Simulator ) ) => "appletvsimulator" ,
27+ ( "watchos" , None ) => "watchos" ,
28+ ( "watchos" , Some ( Simulator ) ) => "watchsimulator" ,
29+ ( "visionos" , None ) => "xros" ,
30+ ( "visionos" , Some ( Simulator ) ) => "xrsimulator" ,
1631 ( os, _) => panic ! ( "invalid Apple target OS {}" , os) ,
1732 }
1833 }
@@ -30,19 +45,19 @@ impl TargetInfo<'_> {
3045 // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-mmacos-version-min
3146 // https://clang.llvm.org/docs/AttributeReference.html#availability
3247 // https://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html#index-mmacosx-version-min
33- match ( self . os , self . abi ) {
34- ( "macos" , "" ) => format ! ( "-mmacosx-version-min={min_version}" ) ,
35- ( "ios" , "" ) => format ! ( "-miphoneos-version-min={min_version}" ) ,
36- ( "ios" , "sim" ) => format ! ( "-mios-simulator-version-min={min_version}" ) ,
37- ( "ios" , "macabi" ) => format ! ( "-mtargetos=ios{min_version}-macabi" ) ,
38- ( "tvos" , "" ) => format ! ( "-mappletvos-version-min={min_version}" ) ,
39- ( "tvos" , "sim" ) => format ! ( "-mappletvsimulator-version-min={min_version}" ) ,
40- ( "watchos" , "" ) => format ! ( "-mwatchos-version-min={min_version}" ) ,
41- ( "watchos" , "sim" ) => format ! ( "-mwatchsimulator-version-min={min_version}" ) ,
48+ match ( self . os , self . get_apple_env ( ) ) {
49+ ( "macos" , None ) => format ! ( "-mmacosx-version-min={min_version}" ) ,
50+ ( "ios" , None ) => format ! ( "-miphoneos-version-min={min_version}" ) ,
51+ ( "ios" , Some ( Simulator ) ) => format ! ( "-mios-simulator-version-min={min_version}" ) ,
52+ ( "ios" , Some ( MacCatalyst ) ) => format ! ( "-mtargetos=ios{min_version}-macabi" ) ,
53+ ( "tvos" , None ) => format ! ( "-mappletvos-version-min={min_version}" ) ,
54+ ( "tvos" , Some ( Simulator ) ) => format ! ( "-mappletvsimulator-version-min={min_version}" ) ,
55+ ( "watchos" , None ) => format ! ( "-mwatchos-version-min={min_version}" ) ,
56+ ( "watchos" , Some ( Simulator ) ) => format ! ( "-mwatchsimulator-version-min={min_version}" ) ,
4257 // `-mxros-version-min` does not exist
4358 // https://github.com/llvm/llvm-project/issues/88271
44- ( "visionos" , "" ) => format ! ( "-mtargetos=xros{min_version}" ) ,
45- ( "visionos" , "sim" ) => format ! ( "-mtargetos=xros{min_version}-simulator" ) ,
59+ ( "visionos" , None ) => format ! ( "-mtargetos=xros{min_version}" ) ,
60+ ( "visionos" , Some ( Simulator ) ) => format ! ( "-mtargetos=xros{min_version}-simulator" ) ,
4661 ( os, _) => panic ! ( "invalid Apple target OS {}" , os) ,
4762 }
4863 }
0 commit comments