Skip to content

Commit 92d4b31

Browse files
committed
Make LLVM target contain correct deployment target info on Mac Catalyst
1 parent 94ddbb6 commit 92d4b31

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

compiler/rustc_target/src/spec/base/apple/mod.rs

+17-4
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,27 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
106106
}
107107
.into();
108108

109-
let arch = arch.target_name();
110-
111109
let mut args = TargetOptions::link_args(
112110
LinkerFlavor::Darwin(Cc::No, Lld::No),
113-
&["-arch", arch, "-platform_version"],
111+
&["-arch", arch.target_name(), "-platform_version"],
114112
);
115113
add_link_args_iter(
116114
&mut args,
117115
LinkerFlavor::Darwin(Cc::No, Lld::No),
118116
[platform_name, platform_version.clone(), platform_version].into_iter(),
119117
);
120118
if abi != "macabi" {
121-
add_link_args(&mut args, LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-arch", arch]);
119+
add_link_args(
120+
&mut args,
121+
LinkerFlavor::Darwin(Cc::Yes, Lld::No),
122+
&["-arch", arch.target_name()],
123+
);
124+
} else {
125+
add_link_args_iter(
126+
&mut args,
127+
LinkerFlavor::Darwin(Cc::Yes, Lld::No),
128+
["-target".into(), mac_catalyst_llvm_target(arch).into()].into_iter(),
129+
);
122130
}
123131

124132
args
@@ -326,6 +334,11 @@ pub fn ios_llvm_target(arch: Arch) -> String {
326334
format!("{}-apple-ios{}.{}.0", arch.target_name(), major, minor)
327335
}
328336

337+
pub fn mac_catalyst_llvm_target(arch: Arch) -> String {
338+
let (major, minor) = mac_catalyst_deployment_target();
339+
format!("{}-apple-ios{}.{}.0-macabi", arch.target_name(), major, minor)
340+
}
341+
329342
fn ios_lld_platform_version(arch: Arch) -> String {
330343
let (major, minor) = ios_deployment_target(arch);
331344
format!("{major}.{minor}")

compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
use crate::spec::base::apple::{opts, Arch};
2-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::base::apple::{mac_catalyst_llvm_target, opts, Arch};
2+
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
5-
let llvm_target = "arm64-apple-ios14.0-macabi";
6-
75
let arch = Arch::Arm64_macabi;
86
let mut base = opts("ios", arch);
9-
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
107
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
118

129
Target {
13-
llvm_target: llvm_target.into(),
10+
llvm_target: mac_catalyst_llvm_target(arch).into(),
1411
pointer_width: 64,
1512
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
1613
arch: arch.target_arch(),

compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
use crate::spec::base::apple::{opts, Arch};
2-
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::base::apple::{mac_catalyst_llvm_target, opts, Arch};
2+
use crate::spec::{SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
5-
let llvm_target = "x86_64-apple-ios14.0-macabi";
6-
75
let arch = Arch::X86_64_macabi;
86
let mut base = opts("ios", arch);
9-
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
107
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
118

129
Target {
13-
llvm_target: llvm_target.into(),
10+
llvm_target: mac_catalyst_llvm_target(arch).into(),
1411
pointer_width: 64,
1512
data_layout:
1613
"e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128".into(),

0 commit comments

Comments
 (0)