git: 4cfb25743893 - main - net-p2p/xmrig: Fix build with clang15 on i386

From: Emanuel Haupt <ehaupt_at_FreeBSD.org>
Date: Sun, 19 Feb 2023 10:14:44 UTC
The branch main has been updated by ehaupt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=4cfb25743893e2abc3c9cda87e2e720f420c39f1

commit 4cfb25743893e2abc3c9cda87e2e720f420c39f1
Author:     Emanuel Haupt <ehaupt@FreeBSD.org>
AuthorDate: 2023-02-19 10:14:16 +0000
Commit:     Emanuel Haupt <ehaupt@FreeBSD.org>
CommitDate: 2023-02-19 10:14:39 +0000

    net-p2p/xmrig: Fix build with clang15 on i386
    
    Upstream issue: https://github.com/xmrig/xmrig/issues/3212
---
 net-p2p/xmrig/Makefile                                     |  2 --
 net-p2p/xmrig/files/patch-src_crypto_cn_CryptoNight__x86.h | 11 +++++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/net-p2p/xmrig/Makefile b/net-p2p/xmrig/Makefile
index 4867f6c7b049..330693d4674d 100644
--- a/net-p2p/xmrig/Makefile
+++ b/net-p2p/xmrig/Makefile
@@ -12,8 +12,6 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BROKEN_powerpc64=	fails to compile: g++9: error: unrecognized command line option '-maes'; did you mean '-mads'?
 BROKEN_riscv64=		fails to compile: /nxb-bin/usr/lib/clang/11.0.0/include/cpuid.h:11:2: error: this header is for x86 only
-# See: https://github.com/xmrig/xmrig/issues/3212
-BROKEN_FreeBSD_14_i386=	fails to compile with llvm15 on i386
 
 USES=		cmake compiler:c++11-lang ssl
 USE_GITHUB=	yes
diff --git a/net-p2p/xmrig/files/patch-src_crypto_cn_CryptoNight__x86.h b/net-p2p/xmrig/files/patch-src_crypto_cn_CryptoNight__x86.h
new file mode 100644
index 000000000000..97b199971b98
--- /dev/null
+++ b/net-p2p/xmrig/files/patch-src_crypto_cn_CryptoNight__x86.h
@@ -0,0 +1,11 @@
+--- src/crypto/cn/CryptoNight_x86.h.orig	2023-02-02 04:51:11 UTC
++++ src/crypto/cn/CryptoNight_x86.h
+@@ -80,7 +80,7 @@ static inline void do_skein_hash(const uint8_t *input,
+ void (* const extra_hashes[4])(const uint8_t *, size_t, uint8_t *) = {do_blake_hash, do_groestl_hash, do_jh_hash, do_skein_hash};
+ 
+ 
+-#if defined(__i386__) || defined(_M_IX86)
++#if (defined(__i386__) || defined(_M_IX86)) && !(defined(__clang__) && defined(__clang_major__) && (__clang_major__ >= 15))
+ static inline int64_t _mm_cvtsi128_si64(__m128i a)
+ {
+     return ((uint64_t)(uint32_t)_mm_cvtsi128_si32(a) | ((uint64_t)(uint32_t)_mm_cvtsi128_si32(_mm_srli_si128(a, 4)) << 32));