]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_target/src/spec/apple_sdk_base.rs
New upstream version 1.65.0+dfsg1
[rustc.git] / compiler / rustc_target / src / spec / apple_sdk_base.rs
CommitLineData
f2b60f7d 1use crate::spec::{cvs, TargetOptions};
5e7ed085 2use std::borrow::Cow;
1b1a35ee
XL
3
4use Arch::*;
5#[allow(non_camel_case_types)]
6#[derive(Copy, Clone)]
7pub 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
20fn 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 32fn 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 40fn 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 55fn 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 64pub 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}