]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_target/src/spec/apple_sdk_base.rs
Merge tag 'debian/1.52.1+dfsg1-1_exp2' into proxmox/buster
[rustc.git] / compiler / rustc_target / src / spec / apple_sdk_base.rs
CommitLineData
1b1a35ee
XL
1use crate::spec::TargetOptions;
2
3use Arch::*;
4#[allow(non_camel_case_types)]
5#[derive(Copy, Clone)]
6pub 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
17fn target_cpu(arch: Arch) -> String {
18 match arch {
19 Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher
20 Armv7s => "cortex-a9",
21 Arm64 => "apple-a7",
22 I386 => "yonah",
23 X86_64 => "core2",
24 X86_64_macabi => "core2",
fc512014 25 Arm64_macabi => "apple-a12",
6a06907d 26 Arm64_sim => "apple-a12",
1b1a35ee
XL
27 }
28 .to_string()
29}
30
31fn link_env_remove(arch: Arch) -> Vec<String> {
32 match arch {
6a06907d
XL
33 Armv7 | Armv7s | Arm64 | I386 | X86_64 | Arm64_sim => {
34 vec!["MACOSX_DEPLOYMENT_TARGET".to_string()]
35 }
fc512014 36 X86_64_macabi | Arm64_macabi => vec!["IPHONEOS_DEPLOYMENT_TARGET".to_string()],
1b1a35ee
XL
37 }
38}
39
29967ef6 40pub fn opts(os: &str, arch: Arch) -> TargetOptions {
1b1a35ee
XL
41 TargetOptions {
42 cpu: target_cpu(arch),
29967ef6 43 dynamic_linking: false,
1b1a35ee
XL
44 executables: true,
45 link_env_remove: link_env_remove(arch),
46 has_elf_tls: false,
47 eliminate_frame_pointer: false,
29967ef6 48 ..super::apple_base::opts(os)
1b1a35ee
XL
49 }
50}