git: 1b34b3e10c02 - main - www/ffsend: Fix build on aarch64.

Mikael Urankar mikael at FreeBSD.org
Fri Sep 24 14:13:18 UTC 2021


The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1b34b3e10c028b9132ddf99b6a60a29988427c4f

commit 1b34b3e10c028b9132ddf99b6a60a29988427c4f
Author:     Mikael Urankar <mikael at FreeBSD.org>
AuthorDate: 2021-09-24 12:24:40 +0000
Commit:     Mikael Urankar <mikael at FreeBSD.org>
CommitDate: 2021-09-24 14:13:04 +0000

    www/ffsend: Fix build on aarch64.
    
    Approved by:    portmgr (build fix blanket)
---
 www/ffsend/files/patch-cargo-crates_ring-0.16.20 | 125 +++++++++++++++++++++++
 1 file changed, 125 insertions(+)

diff --git a/www/ffsend/files/patch-cargo-crates_ring-0.16.20 b/www/ffsend/files/patch-cargo-crates_ring-0.16.20
new file mode 100644
index 000000000000..0ef106dec289
--- /dev/null
+++ b/www/ffsend/files/patch-cargo-crates_ring-0.16.20
@@ -0,0 +1,125 @@
+https://github.com/briansmith/ring/pull/1007
+
+--- cargo-crates/ring-0.16.20/Cargo.toml.orig	2020-12-02 03:20:32.000000000 +0100
++++ cargo-crates/ring-0.16.20/Cargo.toml	2020-12-09 09:54:26.615745000 +0100
+@@ -64,10 +64,10 @@ wasm32_c = []
+ version = "0.3.37"
+ features = ["Crypto", "Window"]
+ default-features = false
+-[target."cfg(any(target_arch = \"x86\",target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))".dependencies.spin]
++[target."cfg(any(target_arch = \"x86\",target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"freebsd\", target_os = \"fuchsia\", target_os = \"linux\"))))".dependencies.spin]
+ version = "0.5.2"
+ default-features = false
+-[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.libc]
++[target."cfg(any(target_os = \"android\", target_os = \"freebsd\", target_os = \"linux\"))".dependencies.libc]
+ version = "0.2.69"
+ default-features = false
+ 
+--- cargo-crates/ring-0.16.20/src/cpu.rs.orig	2020-11-30 21:30:03.000000000 +0100
++++ cargo-crates/ring-0.16.20/src/cpu.rs	2020-12-09 09:53:52.469225000 +0100
+@@ -31,7 +31,7 @@ pub(crate) fn features() -> Features {
+         target_arch = "x86_64",
+         all(
+             any(target_arch = "aarch64", target_arch = "arm"),
+-            any(target_os = "android", target_os = "fuchsia", target_os = "linux")
++            any(target_os = "android", target_os = "fuchsia", target_os = "freebsd", target_os = "linux")
+         )
+     ))]
+     {
+@@ -49,7 +49,7 @@ pub(crate) fn features() -> Features {
+ 
+             #[cfg(all(
+                 any(target_arch = "aarch64", target_arch = "arm"),
+-                any(target_os = "android", target_os = "fuchsia", target_os = "linux")
++                any(target_os = "android", target_os = "fuchsia", target_os = "freebsd", target_os = "linux")
+             ))]
+             {
+                 arm::setup();
+@@ -62,28 +62,58 @@ pub(crate) fn features() -> Features {
+ 
+ pub(crate) mod arm {
+     #[cfg(all(
+-        any(target_os = "android", target_os = "linux"),
++        any(target_os = "android", target_os = "freebsd", target_os = "linux"),
+         any(target_arch = "aarch64", target_arch = "arm")
+     ))]
+     pub fn setup() {
+         use libc::c_ulong;
++        #[cfg(target_os = "freebsd")]
++        use libc::{c_int, c_void};
++        #[cfg(target_os = "freebsd")]
++        extern crate std;
+ 
+         // XXX: The `libc` crate doesn't provide `libc::getauxval` consistently
+         // across all Android/Linux targets, e.g. musl.
++        #[cfg(any(target_os = "android", target_os = "linux"))]
+         extern "C" {
+             fn getauxval(type_: c_ulong) -> c_ulong;
+         }
+ 
++        #[cfg(target_os = "freebsd")]
++        extern "C" {
++            fn elf_aux_info(aux: c_int, buf: *mut c_void, buflen: c_int) -> c_int;
++        }
++
++        #[cfg(not(target_os = "freebsd"))]
+         const AT_HWCAP: c_ulong = 16;
+ 
++        #[cfg(target_os = "freebsd")]
++        const AT_HWCAP: c_int = 25;
++
+         #[cfg(target_arch = "aarch64")]
+         const HWCAP_NEON: c_ulong = 1 << 1;
+ 
+         #[cfg(target_arch = "arm")]
+         const HWCAP_NEON: c_ulong = 1 << 12;
+ 
++        #[cfg(not(target_os = "freebsd"))]
+         let caps = unsafe { getauxval(AT_HWCAP) };
+ 
++        #[cfg(target_os = "freebsd")]
++        let caps: c_ulong = 0;
++
++        #[cfg(target_os = "freebsd")]
++        {
++            let buffer : *mut c_void = { let t: *const c_ulong = ∩︀ t} as *mut c_void;
++            unsafe {
++                let _ret = elf_aux_info(
++                    AT_HWCAP,
++                    buffer,
++                    std::mem::size_of_val(&caps) as i32
++                );
++            }
++        }
++
+         // We assume NEON is available on AARCH64 because it is a required
+         // feature.
+         #[cfg(target_arch = "aarch64")]
+@@ -100,11 +130,26 @@ pub(crate) mod arm {
+             #[cfg(target_arch = "arm")]
+             const OFFSET: c_ulong = 0;
+ 
+-            #[cfg(target_arch = "arm")]
++            #[cfg(target_os = "freebsd")]
++            let buffer : *mut c_void = { let t: *const c_ulong = ∩︀ t} as *mut c_void;
++
++            #[cfg(not(target_os = "freebsd"))]
+             let caps = {
+                 const AT_HWCAP2: c_ulong = 26;
+                 unsafe { getauxval(AT_HWCAP2) }
+             };
++
++            #[cfg(target_os = "freebsd")]
++            {
++                const AT_HWCAP2: c_int = 26;
++                unsafe {
++                    let _ret = elf_aux_info(
++                        AT_HWCAP2,
++                        buffer,
++                        std::mem::size_of_val(&caps) as i32
++                    );
++                };
++            }
+ 
+             const HWCAP_AES: c_ulong = 1 << 0 + OFFSET;
+             const HWCAP_PMULL: c_ulong = 1 << 1 + OFFSET;


More information about the dev-commits-ports-main mailing list