git: 064036198c23 - main - devel/sse2neon: SSE to NEON compatibility shim

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Mon, 21 Oct 2024 09:37:09 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=064036198c23d84372f51266cba47fc8d0a8b897

commit 064036198c23d84372f51266cba47fc8d0a8b897
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2024-10-15 14:21:16 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2024-10-21 09:36:00 +0000

    devel/sse2neon: SSE to NEON compatibility shim
    
    sse2neon is a translator of Intel SSE (Streaming SIMD Extensions)
    intrinsics to Arm NEON, shortening the time needed to get an Arm working
    program that then can be used to extract profiles and to identify hot
    paths in the code. The header file sse2neon.h contains several of the
    functions provided by Intel intrinsic headers such as <xmmintrin.h>,
    only implemented with NEON-based counterparts to produce the exact
    semantics of the intrinsics.
    
    WWW: https://github.com/DLTcollab/sse2neon
---
 devel/Makefile                        |  1 +
 devel/sse2neon/Makefile               | 30 ++++++++++++++++++++++++++++++
 devel/sse2neon/distinfo               |  3 +++
 devel/sse2neon/files/patch-Makefile   | 13 +++++++++++++
 devel/sse2neon/files/patch-sse2neon.h | 11 +++++++++++
 devel/sse2neon/pkg-descr              |  7 +++++++
 6 files changed, 65 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 8a13bd400ae0..8608317a2d25 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -8100,6 +8100,7 @@
     SUBDIR += spread-sheet-widget
     SUBDIR += spyder
     SUBDIR += srecord
+    SUBDIR += sse2neon
     SUBDIR += st
     SUBDIR += stack
     SUBDIR += staf
diff --git a/devel/sse2neon/Makefile b/devel/sse2neon/Makefile
new file mode 100644
index 000000000000..25b87b2668a5
--- /dev/null
+++ b/devel/sse2neon/Makefile
@@ -0,0 +1,30 @@
+PORTNAME=	sse2neon
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.7.0
+CATEGORIES=	devel
+
+MAINTAINER=	fuz@FreeBSD.org
+COMMENT=	SSE to NEON compatibility shim
+WWW=		https://github.com/DLTcollab/sse2neon
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+ONLY_FOR_ARCHS=	aarch64 amd64 armv7 i386
+ONLY_FOR_ARCHS_REASON=	requires x86 SSE or ARM NEON to work
+
+BROKEN_i386=	wants to use amd64-only SSE intrinsics
+
+TEST_TARGET=	check
+NO_ARCH=	yes
+NO_BUILD=	yes
+PLIST_FILES=	include/sse2neon.h
+
+USES=		gmake
+USE_GITHUB=	yes
+GH_ACCOUNT=	DLTcollab
+
+do-install:
+	${INSTALL_DATA} ${WRKSRC}/sse2neon.h ${STAGEDIR}${PREFIX}/include/
+
+.include <bsd.port.mk>
diff --git a/devel/sse2neon/distinfo b/devel/sse2neon/distinfo
new file mode 100644
index 000000000000..56f52515c359
--- /dev/null
+++ b/devel/sse2neon/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1729001713
+SHA256 (DLTcollab-sse2neon-v1.7.0_GH0.tar.gz) = cee6d54922dbc9d4fa57749e3e4b46161b7f435a22e592db9da008051806812a
+SIZE (DLTcollab-sse2neon-v1.7.0_GH0.tar.gz) = 134103
diff --git a/devel/sse2neon/files/patch-Makefile b/devel/sse2neon/files/patch-Makefile
new file mode 100644
index 000000000000..4530299b8fc5
--- /dev/null
+++ b/devel/sse2neon/files/patch-Makefile
@@ -0,0 +1,13 @@
+--- Makefile.orig	2024-10-15 14:24:20 UTC
++++ Makefile
+@@ -40,8 +40,8 @@ ifdef ARCH_CFLAGS_IS_SET
+ ifdef ARCH_CFLAGS_IS_SET
+     ifeq ($(processor),$(filter $(processor),aarch64 arm64))
+         override ARCH_CFLAGS := -march=armv8-a+fp+simd
+-    else ifeq ($(processor),$(filter $(processor),i386 x86_64))
+-        override ARCH_CFLAGS := -maes -mpclmul -mssse3 -msse4.2
++    else ifeq ($(processor),$(filter $(processor),amd64 i386 x86_64))
++        override ARCH_CFLAGS := -maes -mpclmul -msse -msse2 -msse3 -mssse3 -msse4.2
+     else ifeq ($(processor),$(filter $(processor),arm armv7 armv7l))
+         override ARCH_CFLAGS := -mfpu=neon
+     else
diff --git a/devel/sse2neon/files/patch-sse2neon.h b/devel/sse2neon/files/patch-sse2neon.h
new file mode 100644
index 000000000000..ee025ebb7c55
--- /dev/null
+++ b/devel/sse2neon/files/patch-sse2neon.h
@@ -0,0 +1,11 @@
+--- sse2neon.h.orig	2024-10-15 17:08:16 UTC
++++ sse2neon.h
+@@ -104,7 +104,7 @@
+ #pragma message("Macro name collisions may happen with unsupported compilers.")
+ #endif
+ 
+-#if defined(__GNUC__) && __GNUC__ < 10
++#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 10
+ #warning "GCC versions earlier than 10 are not supported."
+ #endif
+ 
diff --git a/devel/sse2neon/pkg-descr b/devel/sse2neon/pkg-descr
new file mode 100644
index 000000000000..3330a74b0951
--- /dev/null
+++ b/devel/sse2neon/pkg-descr
@@ -0,0 +1,7 @@
+sse2neon is a translator of Intel SSE (Streaming SIMD Extensions)
+intrinsics to Arm NEON, shortening the time needed to get an Arm working
+program that then can be used to extract profiles and to identify hot
+paths in the code. The header file sse2neon.h contains several of the
+functions provided by Intel intrinsic headers such as <xmmintrin.h>,
+only implemented with NEON-based counterparts to produce the exact
+semantics of the intrinsics.