11use crate :: spec:: { cvs, TargetOptions } ;
22use std:: borrow:: Cow ;
33
4+ #[ cfg( test) ]
5+ #[ path = "apple/tests.rs" ]
6+ mod tests;
7+
48use Arch :: * ;
59#[ allow( non_camel_case_types) ]
610#[ derive( Copy , Clone ) ]
@@ -12,6 +16,7 @@ pub enum Arch {
1216 Arm64_32 ,
1317 I386 ,
1418 X86_64 ,
19+ X86_64_sim ,
1520 X86_64_macabi ,
1621 Arm64_macabi ,
1722 Arm64_sim ,
@@ -25,15 +30,17 @@ fn target_arch_name(arch: Arch) -> &'static str {
2530 Arm64 | Arm64_macabi | Arm64_sim => "arm64" ,
2631 Arm64_32 => "arm64_32" ,
2732 I386 => "i386" ,
28- X86_64 | X86_64_macabi => "x86_64" ,
33+ X86_64 | X86_64_sim | X86_64_macabi => "x86_64" ,
2934 }
3035}
3136
3237fn target_abi ( arch : Arch ) -> & ' static str {
3338 match arch {
3439 Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 => "" ,
3540 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" ,
3744 }
3845}
3946
@@ -45,7 +52,7 @@ fn target_cpu(arch: Arch) -> &'static str {
4552 Arm64 => "apple-a7" ,
4653 Arm64_32 => "apple-s4" ,
4754 I386 => "yonah" ,
48- X86_64 => "core2" ,
55+ X86_64 | X86_64_sim => "core2" ,
4956 X86_64_macabi => "core2" ,
5057 Arm64_macabi => "apple-a12" ,
5158 Arm64_sim => "apple-a12" ,
@@ -54,19 +61,20 @@ fn target_cpu(arch: Arch) -> &'static str {
5461
5562fn link_env_remove ( arch : Arch ) -> Cow < ' static , [ Cow < ' static , str > ] > {
5663 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 => {
5865 cvs ! [ "MACOSX_DEPLOYMENT_TARGET" ]
5966 }
6067 X86_64_macabi | Arm64_macabi => cvs ! [ "IPHONEOS_DEPLOYMENT_TARGET" ] ,
6168 }
6269}
6370
6471pub fn opts ( os : & ' static str , arch : Arch ) -> TargetOptions {
72+ let abi = target_abi ( arch) ;
6573 TargetOptions {
66- abi : target_abi ( arch ) . into ( ) ,
74+ abi : abi . into ( ) ,
6775 cpu : target_cpu ( arch) . into ( ) ,
6876 link_env_remove : link_env_remove ( arch) ,
6977 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 )
7179 }
7280}
0 commit comments