Skip to content

Commit

Permalink
Merge pull request #590 from QuentinPerez/master
Browse files Browse the repository at this point in the history
Add Apple visionOS support
  • Loading branch information
Amanieu authored May 22, 2024
2 parents 30f4071 + f35530f commit 841bdaf
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 26 deletions.
13 changes: 2 additions & 11 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -377,11 +377,7 @@ mod c {

// On iOS and 32-bit OSX these are all just empty intrinsics, no need to
// include them.
if target_os != "ios"
&& target_os != "watchos"
&& target_os != "tvos"
&& (target_vendor != "apple" || target_arch != "x86")
{
if target_vendor != "apple" || target_arch != "x86" {
sources.extend(&[
("__absvti2", "absvti2.c"),
("__addvti3", "addvti3.c"),
Expand Down Expand Up @@ -431,12 +427,7 @@ mod c {
}
}

if target_arch == "arm"
&& target_os != "ios"
&& target_os != "watchos"
&& target_os != "tvos"
&& target_env != "msvc"
{
if target_arch == "arm" && target_vendor != "apple" && target_env != "msvc" {
sources.extend(&[
("__aeabi_div0", "arm/aeabi_div0.c"),
("__aeabi_drsub", "arm/aeabi_drsub.c"),
Expand Down
30 changes: 15 additions & 15 deletions src/arm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@

use core::intrinsics;

// iOS symbols have a leading underscore.
#[cfg(target_os = "ios")]
// Apple symbols have a leading underscore.
#[cfg(target_vendor = "apple")]
macro_rules! bl {
($func:literal) => {
concat!("bl _", $func)
};
}
#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
macro_rules! bl {
($func:literal) => {
concat!("bl ", $func)
Expand Down Expand Up @@ -82,12 +82,12 @@ intrinsics! {

// FIXME: The `*4` and `*8` variants should be defined as aliases.

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memcpy(dest: *mut u8, src: *const u8, n: usize) {
crate::mem::memcpy(dest, src, n);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memcpy4(dest: *mut u8, src: *const u8, n: usize) {
// We are guaranteed 4-alignment, so accessing at u32 is okay.
let mut dest = dest as *mut u32;
Expand All @@ -104,33 +104,33 @@ intrinsics! {
__aeabi_memcpy(dest as *mut u8, src as *const u8, n);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memcpy8(dest: *mut u8, src: *const u8, n: usize) {
__aeabi_memcpy4(dest, src, n);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memmove(dest: *mut u8, src: *const u8, n: usize) {
crate::mem::memmove(dest, src, n);
}

#[cfg(not(any(target_os = "ios", target_env = "msvc")))]
#[cfg(not(any(target_vendor = "apple", target_env = "msvc")))]
pub unsafe extern "aapcs" fn __aeabi_memmove4(dest: *mut u8, src: *const u8, n: usize) {
__aeabi_memmove(dest, src, n);
}

#[cfg(not(any(target_os = "ios", target_env = "msvc")))]
#[cfg(not(any(target_vendor = "apple", target_env = "msvc")))]
pub unsafe extern "aapcs" fn __aeabi_memmove8(dest: *mut u8, src: *const u8, n: usize) {
__aeabi_memmove(dest, src, n);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memset(dest: *mut u8, n: usize, c: i32) {
// Note the different argument order
crate::mem::memset(dest, c, n);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memset4(dest: *mut u8, n: usize, c: i32) {
let mut dest = dest as *mut u32;
let mut n = n;
Expand All @@ -147,22 +147,22 @@ intrinsics! {
__aeabi_memset(dest as *mut u8, n, byte as i32);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memset8(dest: *mut u8, n: usize, c: i32) {
__aeabi_memset4(dest, n, c);
}

#[cfg(not(target_os = "ios"))]
#[cfg(not(target_vendor = "apple"))]
pub unsafe extern "aapcs" fn __aeabi_memclr(dest: *mut u8, n: usize) {
__aeabi_memset(dest, n, 0);
}

#[cfg(not(any(target_os = "ios", target_env = "msvc")))]
#[cfg(not(any(target_vendor = "apple", target_env = "msvc")))]
pub unsafe extern "aapcs" fn __aeabi_memclr4(dest: *mut u8, n: usize) {
__aeabi_memset4(dest, n, 0);
}

#[cfg(not(any(target_os = "ios", target_env = "msvc")))]
#[cfg(not(any(target_vendor = "apple", target_env = "msvc")))]
pub unsafe extern "aapcs" fn __aeabi_memclr8(dest: *mut u8, n: usize) {
__aeabi_memset4(dest, n, 0);
}
Expand Down

0 comments on commit 841bdaf

Please sign in to comment.