1
1
use super :: TargetInfo ;
2
2
3
+ #[ derive( Copy , Clone , Debug , Eq , PartialEq ) ]
4
+ pub ( crate ) enum AppleEnv {
5
+ Simulator ,
6
+ MacCatalyst ,
7
+ }
8
+ pub ( crate ) use AppleEnv :: * ;
9
+
3
10
impl 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
+
4
19
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" ,
16
31
( os, _) => panic ! ( "invalid Apple target OS {}" , os) ,
17
32
}
18
33
}
@@ -30,19 +45,19 @@ impl TargetInfo<'_> {
30
45
// https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-mmacos-version-min
31
46
// https://clang.llvm.org/docs/AttributeReference.html#availability
32
47
// 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}" ) ,
42
57
// `-mxros-version-min` does not exist
43
58
// 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" ) ,
46
61
( os, _) => panic ! ( "invalid Apple target OS {}" , os) ,
47
62
}
48
63
}
0 commit comments