]>
Commit | Line | Data |
---|---|---|
f2b60f7d | 1 | use crate::spec::{cvs, TargetOptions}; |
5e7ed085 | 2 | use std::borrow::Cow; |
1b1a35ee XL |
3 | |
4 | use Arch::*; | |
5 | #[allow(non_camel_case_types)] | |
6 | #[derive(Copy, Clone)] | |
7 | pub enum Arch { | |
8 | Armv7, | |
923072b8 | 9 | Armv7k, |
1b1a35ee XL |
10 | Armv7s, |
11 | Arm64, | |
923072b8 | 12 | Arm64_32, |
1b1a35ee XL |
13 | I386, |
14 | X86_64, | |
15 | X86_64_macabi, | |
fc512014 | 16 | Arm64_macabi, |
6a06907d | 17 | Arm64_sim, |
1b1a35ee XL |
18 | } |
19 | ||
064997fb FG |
20 | fn target_arch_name(arch: Arch) -> &'static str { |
21 | match arch { | |
22 | Armv7 => "armv7", | |
23 | Armv7k => "armv7k", | |
24 | Armv7s => "armv7s", | |
25 | Arm64 | Arm64_macabi | Arm64_sim => "arm64", | |
26 | Arm64_32 => "arm64_32", | |
27 | I386 => "i386", | |
28 | X86_64 | X86_64_macabi => "x86_64", | |
29 | } | |
30 | } | |
31 | ||
5e7ed085 | 32 | fn target_abi(arch: Arch) -> &'static str { |
136023e0 | 33 | match arch { |
923072b8 | 34 | Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 => "", |
136023e0 XL |
35 | X86_64_macabi | Arm64_macabi => "macabi", |
36 | Arm64_sim => "sim", | |
37 | } | |
136023e0 XL |
38 | } |
39 | ||
5e7ed085 | 40 | fn target_cpu(arch: Arch) -> &'static str { |
1b1a35ee XL |
41 | match arch { |
42 | Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher | |
923072b8 | 43 | Armv7k => "cortex-a8", |
1b1a35ee XL |
44 | Armv7s => "cortex-a9", |
45 | Arm64 => "apple-a7", | |
923072b8 | 46 | Arm64_32 => "apple-s4", |
1b1a35ee XL |
47 | I386 => "yonah", |
48 | X86_64 => "core2", | |
49 | X86_64_macabi => "core2", | |
fc512014 | 50 | Arm64_macabi => "apple-a12", |
6a06907d | 51 | Arm64_sim => "apple-a12", |
1b1a35ee | 52 | } |
1b1a35ee XL |
53 | } |
54 | ||
5e7ed085 | 55 | fn link_env_remove(arch: Arch) -> Cow<'static, [Cow<'static, str>]> { |
1b1a35ee | 56 | match arch { |
923072b8 | 57 | Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 | Arm64_sim => { |
5e7ed085 | 58 | cvs!["MACOSX_DEPLOYMENT_TARGET"] |
6a06907d | 59 | } |
5e7ed085 | 60 | X86_64_macabi | Arm64_macabi => cvs!["IPHONEOS_DEPLOYMENT_TARGET"], |
1b1a35ee XL |
61 | } |
62 | } | |
63 | ||
5e7ed085 | 64 | pub fn opts(os: &'static str, arch: Arch) -> TargetOptions { |
1b1a35ee | 65 | TargetOptions { |
5e7ed085 FG |
66 | abi: target_abi(arch).into(), |
67 | cpu: target_cpu(arch).into(), | |
1b1a35ee | 68 | link_env_remove: link_env_remove(arch), |
a2a8927a | 69 | has_thread_local: false, |
f2b60f7d | 70 | ..super::apple_base::opts(os, target_arch_name(arch), target_abi(arch)) |
1b1a35ee XL |
71 | } |
72 | } |