]>
Commit | Line | Data |
---|---|---|
1b1a35ee XL |
1 | use crate::spec::TargetOptions; |
2 | ||
3 | use Arch::*; | |
4 | #[allow(non_camel_case_types)] | |
5 | #[derive(Copy, Clone)] | |
6 | pub enum Arch { | |
7 | Armv7, | |
8 | Armv7s, | |
9 | Arm64, | |
10 | I386, | |
11 | X86_64, | |
12 | X86_64_macabi, | |
fc512014 | 13 | Arm64_macabi, |
6a06907d | 14 | Arm64_sim, |
1b1a35ee XL |
15 | } |
16 | ||
136023e0 XL |
17 | fn target_abi(arch: Arch) -> String { |
18 | match arch { | |
19 | Armv7 | Armv7s | Arm64 | I386 | X86_64 => "", | |
20 | X86_64_macabi | Arm64_macabi => "macabi", | |
21 | Arm64_sim => "sim", | |
22 | } | |
23 | .to_string() | |
24 | } | |
25 | ||
1b1a35ee XL |
26 | fn target_cpu(arch: Arch) -> String { |
27 | match arch { | |
28 | Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher | |
29 | Armv7s => "cortex-a9", | |
30 | Arm64 => "apple-a7", | |
31 | I386 => "yonah", | |
32 | X86_64 => "core2", | |
33 | X86_64_macabi => "core2", | |
fc512014 | 34 | Arm64_macabi => "apple-a12", |
6a06907d | 35 | Arm64_sim => "apple-a12", |
1b1a35ee XL |
36 | } |
37 | .to_string() | |
38 | } | |
39 | ||
40 | fn link_env_remove(arch: Arch) -> Vec<String> { | |
41 | match arch { | |
6a06907d XL |
42 | Armv7 | Armv7s | Arm64 | I386 | X86_64 | Arm64_sim => { |
43 | vec!["MACOSX_DEPLOYMENT_TARGET".to_string()] | |
44 | } | |
fc512014 | 45 | X86_64_macabi | Arm64_macabi => vec!["IPHONEOS_DEPLOYMENT_TARGET".to_string()], |
1b1a35ee XL |
46 | } |
47 | } | |
48 | ||
29967ef6 | 49 | pub fn opts(os: &str, arch: Arch) -> TargetOptions { |
1b1a35ee | 50 | TargetOptions { |
136023e0 | 51 | abi: target_abi(arch), |
1b1a35ee | 52 | cpu: target_cpu(arch), |
29967ef6 | 53 | dynamic_linking: false, |
1b1a35ee XL |
54 | executables: true, |
55 | link_env_remove: link_env_remove(arch), | |
56 | has_elf_tls: false, | |
29967ef6 | 57 | ..super::apple_base::opts(os) |
1b1a35ee XL |
58 | } |
59 | } |