mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
www/jwt-cli: Fix build on aarch64.
Approved by: portmgr (build fix blanket)
This commit is contained in:
parent
247218a506
commit
b0548610f8
1 changed files with 125 additions and 0 deletions
125
www/jwt-cli/files/patch-cargo-crates_ring-0.16.20
Normal file
125
www/jwt-cli/files/patch-cargo-crates_ring-0.16.20
Normal file
|
@ -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;
|
Loading…
Add table
Reference in a new issue