Add arm64e-apple-darwin target
This commit is contained in:
parent
f5e3492194
commit
a78720807c
6 changed files with 67 additions and 0 deletions
|
@ -1544,6 +1544,7 @@ supported_targets! {
|
||||||
("i686-unknown-hurd-gnu", i686_unknown_hurd_gnu),
|
("i686-unknown-hurd-gnu", i686_unknown_hurd_gnu),
|
||||||
|
|
||||||
("aarch64-apple-darwin", aarch64_apple_darwin),
|
("aarch64-apple-darwin", aarch64_apple_darwin),
|
||||||
|
("arm64e-apple-darwin", arm64e_apple_darwin),
|
||||||
("x86_64-apple-darwin", x86_64_apple_darwin),
|
("x86_64-apple-darwin", x86_64_apple_darwin),
|
||||||
("x86_64h-apple-darwin", x86_64h_apple_darwin),
|
("x86_64h-apple-darwin", x86_64h_apple_darwin),
|
||||||
("i686-apple-darwin", i686_apple_darwin),
|
("i686-apple-darwin", i686_apple_darwin),
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
|
||||||
|
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
|
||||||
|
|
||||||
|
pub fn target() -> Target {
|
||||||
|
let arch = Arch::Arm64e;
|
||||||
|
let mut base = opts("macos", arch);
|
||||||
|
base.cpu = "apple-m1".into();
|
||||||
|
base.max_atomic_width = Some(128);
|
||||||
|
|
||||||
|
// FIXME: The leak sanitizer currently fails the tests, see #88132.
|
||||||
|
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::THREAD;
|
||||||
|
|
||||||
|
Target {
|
||||||
|
// Clang automatically chooses a more specific target based on
|
||||||
|
// MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
|
||||||
|
// correctly, we do too.
|
||||||
|
llvm_target: macos_llvm_target(arch).into(),
|
||||||
|
pointer_width: 64,
|
||||||
|
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
|
||||||
|
arch: arch.target_arch(),
|
||||||
|
options: TargetOptions {
|
||||||
|
mcount: "\u{1}mcount".into(),
|
||||||
|
frame_pointer: FramePointer::NonLeaf,
|
||||||
|
..base
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,6 +16,7 @@
|
||||||
- [Target Tier Policy](target-tier-policy.md)
|
- [Target Tier Policy](target-tier-policy.md)
|
||||||
- [Template for Target-specific Documentation](platform-support/TEMPLATE.md)
|
- [Template for Target-specific Documentation](platform-support/TEMPLATE.md)
|
||||||
- [arm64e-apple-ios.md](platform-support/arm64e-apple-ios.md)
|
- [arm64e-apple-ios.md](platform-support/arm64e-apple-ios.md)
|
||||||
|
- [arm64e-apple-darwin.md](platform-support/arm64e-apple-darwin.md)
|
||||||
- [aarch64-apple-ios-sim](platform-support/aarch64-apple-ios-sim.md)
|
- [aarch64-apple-ios-sim](platform-support/aarch64-apple-ios-sim.md)
|
||||||
- [\*-apple-tvos](platform-support/apple-tvos.md)
|
- [\*-apple-tvos](platform-support/apple-tvos.md)
|
||||||
- [\*-apple-watchos\*](platform-support/apple-watchos.md)
|
- [\*-apple-watchos\*](platform-support/apple-watchos.md)
|
||||||
|
|
|
@ -217,6 +217,7 @@ host tools.
|
||||||
target | std | host | notes
|
target | std | host | notes
|
||||||
-------|:---:|:----:|-------
|
-------|:---:|:----:|-------
|
||||||
[`arm64e-apple-ios`](platform-support/arm64e-apple-ios.md) | ✓ | | ARM64e Apple iOS
|
[`arm64e-apple-ios`](platform-support/arm64e-apple-ios.md) | ✓ | | ARM64e Apple iOS
|
||||||
|
[`arm64e-apple-darwin`](platform-support/arm64e-apple-darwin.md) | ✓ | ✓ | ARM64e Apple Darwin
|
||||||
`aarch64-apple-ios-macabi` | ? | | Apple Catalyst on ARM64
|
`aarch64-apple-ios-macabi` | ? | | Apple Catalyst on ARM64
|
||||||
[`aarch64-apple-tvos`](platform-support/apple-tvos.md) | ? | | ARM64 tvOS
|
[`aarch64-apple-tvos`](platform-support/apple-tvos.md) | ? | | ARM64 tvOS
|
||||||
[`aarch64-apple-tvos-sim`](platform-support/apple-tvos.md) | ? | | ARM64 tvOS Simulator
|
[`aarch64-apple-tvos-sim`](platform-support/apple-tvos.md) | ? | | ARM64 tvOS Simulator
|
||||||
|
|
36
src/doc/rustc/src/platform-support/arm64e-apple-darwin.md
Normal file
36
src/doc/rustc/src/platform-support/arm64e-apple-darwin.md
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
# `arm64e-apple-darwin`
|
||||||
|
|
||||||
|
**Tier: 3 (with Host Tools)**
|
||||||
|
|
||||||
|
ARM64e macOS (11.0+, Big Sur+)
|
||||||
|
|
||||||
|
## Target maintainers
|
||||||
|
|
||||||
|
- Artyom Tetyukhin ([@arttet](https://github.com/https://github.com/arttet))
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Target for `macOS` on late-generation `M` series Apple chips.
|
||||||
|
|
||||||
|
## Building the target
|
||||||
|
|
||||||
|
You can build Rust with support for the targets by adding it to the `target` list in `config.toml`:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[build]
|
||||||
|
target = [ "arm64e-apple-darwin" ]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building Rust programs
|
||||||
|
|
||||||
|
Rust does not yet ship pre-compiled artifacts for this target.
|
||||||
|
To compile for this target, you will need to build Rust with the target enabled (see [Building the target](#building-the-target) above).
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
The target does support running binaries on macOS platforms with `arm64e` architecture.
|
||||||
|
|
||||||
|
## Cross-compilation toolchains and C code
|
||||||
|
|
||||||
|
The targets do support `C` code.
|
||||||
|
To build compatible `C` code, you have to use XCode with the same compiler and flags.
|
|
@ -50,6 +50,7 @@ static HOSTS: &[&str] = &[
|
||||||
|
|
||||||
static TARGETS: &[&str] = &[
|
static TARGETS: &[&str] = &[
|
||||||
"aarch64-apple-darwin",
|
"aarch64-apple-darwin",
|
||||||
|
"arm64e-apple-darwin",
|
||||||
"aarch64-apple-ios",
|
"aarch64-apple-ios",
|
||||||
"arm64e-apple-ios",
|
"arm64e-apple-ios",
|
||||||
"aarch64-apple-ios-sim",
|
"aarch64-apple-ios-sim",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue