1
1
use crate :: spec:: { cvs, TargetOptions } ;
2
2
use std:: borrow:: Cow ;
3
3
4
+ #[ cfg( test) ]
5
+ #[ path = "apple/tests.rs" ]
6
+ mod tests;
7
+
4
8
use Arch :: * ;
5
9
#[ allow( non_camel_case_types) ]
6
10
#[ derive( Copy , Clone ) ]
@@ -12,6 +16,7 @@ pub enum Arch {
12
16
Arm64_32 ,
13
17
I386 ,
14
18
X86_64 ,
19
+ X86_64_sim ,
15
20
X86_64_macabi ,
16
21
Arm64_macabi ,
17
22
Arm64_sim ,
@@ -25,15 +30,17 @@ fn target_arch_name(arch: Arch) -> &'static str {
25
30
Arm64 | Arm64_macabi | Arm64_sim => "arm64" ,
26
31
Arm64_32 => "arm64_32" ,
27
32
I386 => "i386" ,
28
- X86_64 | X86_64_macabi => "x86_64" ,
33
+ X86_64 | X86_64_sim | X86_64_macabi => "x86_64" ,
29
34
}
30
35
}
31
36
32
37
fn target_abi ( arch : Arch ) -> & ' static str {
33
38
match arch {
34
39
Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 => "" ,
35
40
X86_64_macabi | Arm64_macabi => "macabi" ,
36
- Arm64_sim => "sim" ,
41
+ // x86_64-apple-ios is a simulator target, even though it isn't
42
+ // declared that way in the target like the other ones...
43
+ Arm64_sim | X86_64_sim => "sim" ,
37
44
}
38
45
}
39
46
@@ -45,7 +52,7 @@ fn target_cpu(arch: Arch) -> &'static str {
45
52
Arm64 => "apple-a7" ,
46
53
Arm64_32 => "apple-s4" ,
47
54
I386 => "yonah" ,
48
- X86_64 => "core2" ,
55
+ X86_64 | X86_64_sim => "core2" ,
49
56
X86_64_macabi => "core2" ,
50
57
Arm64_macabi => "apple-a12" ,
51
58
Arm64_sim => "apple-a12" ,
@@ -54,19 +61,20 @@ fn target_cpu(arch: Arch) -> &'static str {
54
61
55
62
fn link_env_remove ( arch : Arch ) -> Cow < ' static , [ Cow < ' static , str > ] > {
56
63
match arch {
57
- Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 | Arm64_sim => {
64
+ Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 | X86_64_sim | Arm64_sim => {
58
65
cvs ! [ "MACOSX_DEPLOYMENT_TARGET" ]
59
66
}
60
67
X86_64_macabi | Arm64_macabi => cvs ! [ "IPHONEOS_DEPLOYMENT_TARGET" ] ,
61
68
}
62
69
}
63
70
64
71
pub fn opts ( os : & ' static str , arch : Arch ) -> TargetOptions {
72
+ let abi = target_abi ( arch) ;
65
73
TargetOptions {
66
- abi : target_abi ( arch ) . into ( ) ,
74
+ abi : abi . into ( ) ,
67
75
cpu : target_cpu ( arch) . into ( ) ,
68
76
link_env_remove : link_env_remove ( arch) ,
69
77
has_thread_local : false ,
70
- ..super :: apple_base:: opts ( os, target_arch_name ( arch) , target_abi ( arch ) )
78
+ ..super :: apple_base:: opts ( os, target_arch_name ( arch) , abi )
71
79
}
72
80
}
0 commit comments