diff options
author | Mikael Urankar <mikael@FreeBSD.org> | 2020-11-09 23:59:42 +0800 |
---|---|---|
committer | Mikael Urankar <mikael@FreeBSD.org> | 2020-11-09 23:59:42 +0800 |
commit | 7a6e9183c80f36238ee30cdee37808a2f99cbcb5 (patch) | |
tree | 1efa3c5677fc0d7be6d1a19300760d2b0c3ecdc9 /databases/galera26 | |
parent | 528f8f72111437c448833cb1af491998dbfc09d8 (diff) | |
download | freebsd-ports-gnome-7a6e9183c80f36238ee30cdee37808a2f99cbcb5.tar.gz freebsd-ports-gnome-7a6e9183c80f36238ee30cdee37808a2f99cbcb5.tar.zst freebsd-ports-gnome-7a6e9183c80f36238ee30cdee37808a2f99cbcb5.zip |
databases/galera26: fix build on aarch64
The __bswapXX_var macro are not available on arm*, use bswapXX instead
Add cpu feature detection on arm*
PR: 250664
Reported by: Vincent Milum Jr
Approved by: portmgr (tier-2 blanket)
Diffstat (limited to 'databases/galera26')
4 files changed, 50 insertions, 3 deletions
diff --git a/databases/galera26/Makefile b/databases/galera26/Makefile index 0ace864dd7d1..7a5c2c84fb11 100644 --- a/databases/galera26/Makefile +++ b/databases/galera26/Makefile @@ -13,9 +13,6 @@ COMMENT= Synchronous multi-master replication engine LICENSE= GPLv2 -BROKEN_aarch64= fails to compile: gu_int128.h: use of undeclared identifier '__bswap64_var' -BROKEN_armv6= fails to compile: gu_int128.h: use of undeclared identifier '__bswap64_var' -BROKEN_armv7= fails to compile: gu_int128.h: use of undeclared identifier '__bswap64_var' NOT_FOR_ARCHS= i386 # On i386 older versions of clang produce: # cannot compile this atomic library call yet ... __atomic_add_fetch diff --git a/databases/galera26/files/patch-galerautils_SConscript b/databases/galera26/files/patch-galerautils_SConscript new file mode 100644 index 000000000000..70e82cba8867 --- /dev/null +++ b/databases/galera26/files/patch-galerautils_SConscript @@ -0,0 +1,12 @@ +--- galerautils/SConscript.orig 2020-10-27 20:24:02 UTC ++++ galerautils/SConscript +@@ -48,7 +48,9 @@ if not crc32c_no_hardware: + + int main() + { ++ #if defined(__linux__) + (void)getauxval(AT_HWCAP); ++ #endif + + (void)__crc32b(0, 0); + (void)__crc32h(0, 0); diff --git a/databases/galera26/files/patch-galerautils_src_gu__byteswap.h b/databases/galera26/files/patch-galerautils_src_gu__byteswap.h new file mode 100644 index 000000000000..42b5b5af8525 --- /dev/null +++ b/databases/galera26/files/patch-galerautils_src_gu__byteswap.h @@ -0,0 +1,22 @@ +--- galerautils/src/gu_byteswap.h.orig 2020-10-12 06:33:51 UTC ++++ galerautils/src/gu_byteswap.h +@@ -54,10 +54,15 @@ static GU_FORCE_INLINE uint64_t GU_ROTL64 (uint64_t x, + # define gu_bswap32 _OSSwapInt32 + # define gu_bswap64 _OSSwapInt64 + #elif defined(__FreeBSD__) +-/* do not use bswapXX, because gcc44 gives old-style cast warnings */ +-# define gu_bswap16 __bswap16_var +-# define gu_bswap32 __bswap32_var +-# define gu_bswap64 __bswap64_var ++# if defined(__aarch64__) || defined(__arm__) ++# define gu_bswap16 bswap16 ++# define gu_bswap32 bswap32 ++# define gu_bswap64 bswap64 ++# else ++# define gu_bswap16 __bswap16_var ++# define gu_bswap32 __bswap32_var ++# define gu_bswap64 __bswap64_var ++# endif // __FreeBSD__ + #elif defined(__sun__) + # define gu_bswap16 BSWAP_16 + # define gu_bswap32 BSWAP_32 diff --git a/databases/galera26/files/patch-galerautils_src_gu__crc32c__arm64.c b/databases/galera26/files/patch-galerautils_src_gu__crc32c__arm64.c new file mode 100644 index 000000000000..1f39bc6ba863 --- /dev/null +++ b/databases/galera26/files/patch-galerautils_src_gu__crc32c__arm64.c @@ -0,0 +1,16 @@ +--- galerautils/src/gu_crc32c_arm64.c.orig 2020-10-27 20:24:41 UTC ++++ galerautils/src/gu_crc32c_arm64.c +@@ -74,7 +74,13 @@ gu_crc32c_arm64(gu_crc32c_t state, const void* data, s + gu_crc32c_func_t + gu_crc32c_hardware() + { ++#if defined(__linux__) + unsigned long int const hwcaps = getauxval(AT_HWCAP); ++#endif ++#if defined(__FreeBSD__) ++ unsigned long hwcaps; ++ elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps)); ++#endif + if (hwcaps & HWCAP_CRC32) + { + gu_info ("CRC-32C: using hardware acceleration."); |