]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_target/src/spec/apple_sdk_base.rs
Auto merge of #77618 - fusion-engineering-forks:windows-parker, r=Amanieu
[rust.git] / compiler / rustc_target / src / spec / apple_sdk_base.rs
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,
13     Arm64_macabi,
14 }
15
16 fn target_cpu(arch: Arch) -> String {
17     match arch {
18         Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher
19         Armv7s => "cortex-a9",
20         Arm64 => "apple-a7",
21         I386 => "yonah",
22         X86_64 => "core2",
23         X86_64_macabi => "core2",
24         Arm64_macabi => "apple-a12",
25     }
26     .to_string()
27 }
28
29 fn link_env_remove(arch: Arch) -> Vec<String> {
30     match arch {
31         Armv7 | Armv7s | Arm64 | I386 | X86_64 => vec!["MACOSX_DEPLOYMENT_TARGET".to_string()],
32         X86_64_macabi | Arm64_macabi => vec!["IPHONEOS_DEPLOYMENT_TARGET".to_string()],
33     }
34 }
35
36 pub fn opts(os: &str, arch: Arch) -> TargetOptions {
37     TargetOptions {
38         cpu: target_cpu(arch),
39         dynamic_linking: false,
40         executables: true,
41         link_env_remove: link_env_remove(arch),
42         has_elf_tls: false,
43         eliminate_frame_pointer: false,
44         ..super::apple_base::opts(os)
45     }
46 }