]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_target/src/spec/apple_sdk_base.rs
New upstream version 1.55.0+dfsg1
[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
136023e0
XL
17fn 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
26fn 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
40fn 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 49pub 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}