git: 9638af3be2e4 - main - security/hashcat: Fix build on aarch64

From: Mikael Urankar <mikael_at_FreeBSD.org>
Date: Fri, 25 Mar 2022 08:24:52 UTC
The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9638af3be2e4c5c876f507a0e018a9be8d30b1e2

commit 9638af3be2e4c5c876f507a0e018a9be8d30b1e2
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2022-03-25 08:24:07 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2022-03-25 08:24:07 +0000

    security/hashcat: Fix build on aarch64
    
    Same fix as archivers/7-zip
    
    Approved by:    portmgr (build fix blanket)
---
 security/hashcat/Makefile                          |  5 ++--
 .../hashcat/files/patch-deps_LZMA-SDK_C_CpuArch.c  | 34 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/security/hashcat/Makefile b/security/hashcat/Makefile
index 7fc1e358d8e2..d545635c385d 100644
--- a/security/hashcat/Makefile
+++ b/security/hashcat/Makefile
@@ -11,9 +11,8 @@ COMMENT=	Advanced CPU-based password recovery utility
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/docs/license.txt
 
-NOT_FOR_ARCHS=	aarch64 powerpc powerpc64 powerpcspe sparc64
+NOT_FOR_ARCHS=	powerpc powerpc64 powerpcspe sparc64
 NOT_FOR_ARCHS_REASON=	fails to compile: compiling for big-endian architecture not supported
-NOT_FOR_ARCHS_REASON_aarch64=	fails to compile
 
 BUILD_DEPENDS=	minizip:archivers/minizip
 
@@ -40,6 +39,8 @@ BRAIN_DESC=		Build Hashcat Brain
 BRAIN_MAKE_ARGS_OFF=	ENABLE_BRAIN=0
 BRAIN_CFLAGS=		-DWITH_BRAIN -Ideps/git/xxHash
 
+CFLAGS_aarch64+=	-march=armv8-a+crc+crypto
+
 pre-install:
 	${STRIP_CMD} ${WRKSRC}/libhashcat.so.${PORTVERSION}
 	${STRIP_CMD} ${WRKSRC}/modules/*.so
diff --git a/security/hashcat/files/patch-deps_LZMA-SDK_C_CpuArch.c b/security/hashcat/files/patch-deps_LZMA-SDK_C_CpuArch.c
new file mode 100644
index 000000000000..a788aaec3e8b
--- /dev/null
+++ b/security/hashcat/files/patch-deps_LZMA-SDK_C_CpuArch.c
@@ -0,0 +1,34 @@
+--- deps/LZMA-SDK/C/CpuArch.c.orig	2022-03-25 08:13:08 UTC
++++ deps/LZMA-SDK/C/CpuArch.c
+@@ -384,6 +384,23 @@ BoolInt CPU_IsSupported_AES (void) { return APPLE_CRYP
+ 
+ #include <sys/auxv.h>
+ 
++#if defined(__FreeBSD__)
++static UInt64 get_hwcap() {
++  unsigned long hwcap;
++  if(elf_aux_info(AT_HWCAP, &hwcap, sizeof(unsigned long)) != 0) {
++        return(0);
++  }
++  return hwcap;
++}
++
++BoolInt CPU_IsSupported_CRC32(void) { return get_hwcap() & HWCAP_CRC32; }
++BoolInt CPU_IsSupported_NEON(void) { return 1; }
++BoolInt CPU_IsSupported_SHA1(void){ return get_hwcap() & HWCAP_SHA1; }
++BoolInt CPU_IsSupported_SHA2(void) { return get_hwcap() & HWCAP_SHA2; }
++BoolInt CPU_IsSupported_AES(void) { return get_hwcap() & HWCAP_AES; }
++
++#else // __FreeBSD__
++
+ #define USE_HWCAP
+ 
+ #ifdef USE_HWCAP
+@@ -410,6 +427,7 @@ MY_HWCAP_CHECK_FUNC (SHA1)
+ MY_HWCAP_CHECK_FUNC (SHA2)
+ MY_HWCAP_CHECK_FUNC (AES)
+ 
++#endif // FreeBSD
+ #endif // __APPLE__
+ #endif // _WIN32
+