diff --git a/security/highwayhash/Makefile b/security/highwayhash/Makefile index 109fbf48241e..bd209fea27cf 100644 --- a/security/highwayhash/Makefile +++ b/security/highwayhash/Makefile @@ -1,35 +1,37 @@ PORTNAME= highwayhash PORTVERSION= g20240418 +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= security MAINTAINER= yuri@FreeBSD.org COMMENT= Fast strong hash functions: SipHash/HighwayHash WWW= https://github.com/google/highwayhash LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= aarch64 amd64 powerpc powerpc64 powerpc64le ONLY_FOR_ARCHS_REASON= assembly is implemented only for specific architectures in highwayhash/tsc_timer.h USES= compiler:c++11-lang gmake USE_LDCONFIG= yes USE_GITHUB= yes GH_ACCOUNT= google GH_TAGNAME= f8381f3 .include -.if ${ARCH:Mpowerpc*} -CXXFLAGS+= -mpower8-vector +.if ${ARCH} == powerpc64le +MAKE_ENV+= HH_POWER=1 HH_VSX=1 +.elif ${ARCH:Mpowerpc*} MAKE_ENV+= HH_POWER=1 .elif ${ARCH} == aarch64 || ${ARCH:Marmv*} MAKE_ENV+= HH_ARM=1 .endif post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libhighwayhash.so .include diff --git a/security/highwayhash/files/patch-Makefile b/security/highwayhash/files/patch-Makefile index d6ba3a52f0e6..06a41b2afcfe 100644 --- a/security/highwayhash/files/patch-Makefile +++ b/security/highwayhash/files/patch-Makefile @@ -1,11 +1,34 @@ ---- Makefile.orig 2020-04-29 18:43:05 UTC +--- Makefile.orig 2024-04-18 09:56:24 UTC +++ Makefile @@ -1,7 +1,7 @@ # We assume X64 unless HH_POWER, HH_ARM, or HH_AARCH64 are defined. - + override CPPFLAGS += -I. -override CXXFLAGS += -std=c++11 -Wall -O3 -fPIC -pthread +override CXXFLAGS += -std=c++11 -Wall -fPIC -pthread override LDFLAGS += -pthread - + PREFIX ?= /usr/local +@@ -39,8 +39,10 @@ HH_AARCH64 = 1 + else + ifdef HH_POWER + HH_X64 = ++ifdef HH_VSX + HIGHWAYHASH_OBJS += obj/hh_vsx.o + HIGHWAYHASH_TEST_OBJS += obj/highwayhash_test_vsx.o ++endif + else + HH_X64 = 1 + HIGHWAYHASH_OBJS += obj/hh_avx2.o obj/hh_sse41.o +@@ -95,9 +97,11 @@ obj/benchmark.o: CXXFLAGS+=-mavx2 + endif + + ifdef HH_POWER ++ifdef HH_VSX + obj/highwayhash_test_vsx.o: CXXFLAGS+=-mvsx + obj/hh_vsx.o: CXXFLAGS+=-mvsx + obj/benchmark.o: CXXFLAGS+=-mvsx ++endif + # Skip file - vector library/test not supported on PPC + obj/vector_test_target.o: CXXFLAGS+=-DHH_DISABLE_TARGET_SPECIFIC + obj/vector_test.o: CXXFLAGS+=-DHH_DISABLE_TARGET_SPECIFIC diff --git a/security/highwayhash/files/patch-highwayhash_instruction__sets.h b/security/highwayhash/files/patch-highwayhash_instruction__sets.h new file mode 100644 index 000000000000..9a8e5b0f6918 --- /dev/null +++ b/security/highwayhash/files/patch-highwayhash_instruction__sets.h @@ -0,0 +1,32 @@ +--- highwayhash/instruction_sets.h.orig 2024-04-18 09:56:24 UTC ++++ highwayhash/instruction_sets.h +@@ -38,7 +38,11 @@ class InstructionSets { + static TargetBits Supported(); + #elif HH_ARCH_PPC + static HH_INLINE TargetBits Supported() { ++#ifdef __LITTLE_ENDIAN__ + return HH_TARGET_VSX | HH_TARGET_Portable; ++#else ++ return HH_TARGET_Portable; ++#endif + } + #elif HH_ARCH_NEON + static HH_INLINE TargetBits Supported() { +@@ -64,7 +68,7 @@ class InstructionSets { + Func()(std::forward(args)...); + return HH_TARGET_SSE41; + } +-#elif HH_ARCH_PPC ++#elif HH_ARCH_PPC && defined(__LITTLE_ENDIAN__) + const TargetBits supported = Supported(); + if (supported & HH_TARGET_VSX) { + Func()(std::forward(args)...); +@@ -96,7 +100,7 @@ class InstructionSets { + if (supported & HH_TARGET_SSE41) { + Func()(std::forward(args)...); + } +-#elif HH_ARCH_PPC ++#elif HH_ARCH_PPC && defined(__LITTLE_ENDIAN__) + if (supported & HH_TARGET_VSX) { + Func()(std::forward(args)...); + }