Make LLVM target contain correct deployment target info on Mac Catalyst

This commit is contained in:
Mads Marquart 2024-02-19 12:45:11 +01:00
parent 94ddbb615d
commit 92d4b313eb
3 changed files with 23 additions and 16 deletions

View File

@ -106,11 +106,9 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
}
.into();
let arch = arch.target_name();
let mut args = TargetOptions::link_args(
LinkerFlavor::Darwin(Cc::No, Lld::No),
&["-arch", arch, "-platform_version"],
&["-arch", arch.target_name(), "-platform_version"],
);
add_link_args_iter(
&mut args,
@ -118,7 +116,17 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
[platform_name, platform_version.clone(), platform_version].into_iter(),
);
if abi != "macabi" {
add_link_args(&mut args, LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-arch", arch]);
add_link_args(
&mut args,
LinkerFlavor::Darwin(Cc::Yes, Lld::No),
&["-arch", arch.target_name()],
);
} else {
add_link_args_iter(
&mut args,
LinkerFlavor::Darwin(Cc::Yes, Lld::No),
["-target".into(), mac_catalyst_llvm_target(arch).into()].into_iter(),
);
}
args
@ -326,6 +334,11 @@ pub fn ios_llvm_target(arch: Arch) -> String {
format!("{}-apple-ios{}.{}.0", arch.target_name(), major, minor)
}
pub fn mac_catalyst_llvm_target(arch: Arch) -> String {
let (major, minor) = mac_catalyst_deployment_target();
format!("{}-apple-ios{}.{}.0-macabi", arch.target_name(), major, minor)
}
fn ios_lld_platform_version(arch: Arch) -> String {
let (major, minor) = ios_deployment_target(arch);
format!("{major}.{minor}")

View File

@ -1,16 +1,13 @@
use crate::spec::base::apple::{opts, Arch};
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
use crate::spec::base::apple::{mac_catalyst_llvm_target, opts, Arch};
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
let llvm_target = "arm64-apple-ios14.0-macabi";
let arch = Arch::Arm64_macabi;
let mut base = opts("ios", arch);
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
Target {
llvm_target: llvm_target.into(),
llvm_target: mac_catalyst_llvm_target(arch).into(),
pointer_width: 64,
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
arch: arch.target_arch(),

View File

@ -1,16 +1,13 @@
use crate::spec::base::apple::{opts, Arch};
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
use crate::spec::base::apple::{mac_catalyst_llvm_target, opts, Arch};
use crate::spec::{SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
let llvm_target = "x86_64-apple-ios14.0-macabi";
let arch = Arch::X86_64_macabi;
let mut base = opts("ios", arch);
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
Target {
llvm_target: llvm_target.into(),
llvm_target: mac_catalyst_llvm_target(arch).into(),
pointer_width: 64,
data_layout:
"e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128".into(),