about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_target/spec/apple_ios_base.rs10
-rw-r--r--src/librustc_target/spec/mod.rs1
-rw-r--r--src/librustc_target/spec/x86_64_apple_ios_macabi.rs23
3 files changed, 31 insertions, 3 deletions
diff --git a/src/librustc_target/spec/apple_ios_base.rs b/src/librustc_target/spec/apple_ios_base.rs
index f46ad06ba43..6d3900c0b20 100644
--- a/src/librustc_target/spec/apple_ios_base.rs
+++ b/src/librustc_target/spec/apple_ios_base.rs
@@ -13,7 +13,8 @@ pub enum Arch {
     Armv7s,
     Arm64,
     I386,
-    X86_64
+    X86_64,
+    X86_64_macabi,
 }
 
 impl Arch {
@@ -23,7 +24,8 @@ impl Arch {
             Armv7s => "armv7s",
             Arm64 => "arm64",
             I386 => "i386",
-            X86_64 => "x86_64"
+            X86_64 => "x86_64",
+            X86_64_macabi => "x86_64"
         }
     }
 }
@@ -67,7 +69,8 @@ pub fn get_sdk_root(sdk_name: &str) -> Result<String, String> {
 fn build_pre_link_args(arch: Arch) -> Result<LinkArgs, String> {
     let sdk_name = match arch {
         Armv7 | Armv7s | Arm64 => "iphoneos",
-        I386 | X86_64 => "iphonesimulator"
+        I386 | X86_64 => "iphonesimulator",
+        X86_64_macabi => "macosx10.15",
     };
 
     let arch_name = arch.to_string();
@@ -93,6 +96,7 @@ fn target_cpu(arch: Arch) -> String {
         Arm64 => "cyclone",
         I386 => "yonah",
         X86_64 => "core2",
+        X86_64_macabi => "core2",
     }.to_string()
 }
 
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
index ec72c00c28f..bb68f2a833c 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
@@ -425,6 +425,7 @@ supported_targets! {
     ("aarch64-apple-ios", aarch64_apple_ios),
     ("armv7-apple-ios", armv7_apple_ios),
     ("armv7s-apple-ios", armv7s_apple_ios),
+    ("x86_64-apple-ios-macabi", x86_64_apple_ios_macabi),
 
     ("armebv7r-none-eabi", armebv7r_none_eabi),
     ("armebv7r-none-eabihf", armebv7r_none_eabihf),
diff --git a/src/librustc_target/spec/x86_64_apple_ios_macabi.rs b/src/librustc_target/spec/x86_64_apple_ios_macabi.rs
new file mode 100644
index 00000000000..2ce77282e90
--- /dev/null
+++ b/src/librustc_target/spec/x86_64_apple_ios_macabi.rs
@@ -0,0 +1,23 @@
+use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use super::apple_ios_base::{opts, Arch};
+
+pub fn target() -> TargetResult {
+    let base = opts(Arch::X86_64_macabi)?;
+    Ok(Target {
+        llvm_target: "x86_64-apple-ios13.0-macabi".to_string(),
+        target_endian: "little".to_string(),
+        target_pointer_width: "64".to_string(),
+        target_c_int_width: "32".to_string(),
+        data_layout: "e-m:o-i64:64-f80:128-n8:16:32:64-S128".to_string(),
+        arch: "x86_64".to_string(),
+        target_os: "ios".to_string(),
+        target_env: String::new(),
+        target_vendor: "apple".to_string(),
+        linker_flavor: LinkerFlavor::Gcc,
+        options: TargetOptions {
+            max_atomic_width: Some(64),
+            stack_probes: true,
+            .. base
+        }
+    })
+}