git: bf02e174350c - main - science/qt6-quick3dphysics: Add SIMD option
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 28 Oct 2023 17:31:05 UTC
The branch main has been updated by jhale:
URL: https://cgit.FreeBSD.org/ports/commit/?id=bf02e174350cd0b77640d114941a18517cd5f26f
commit bf02e174350cd0b77640d114941a18517cd5f26f
Author: Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-10-28 17:01:41 +0000
Commit: Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-10-28 17:31:00 +0000
science/qt6-quick3dphysics: Add SIMD option
This fixes building on i386 when SSE2 instructions are not available [1].
Vector intrinsics require either SSE2 or NEON intruction sets, so this
option is only available for aarch64, amd64, armv7, and i386. Off by
default on i386, since the package builders build for the least common
denominator and don't assume that the processor has SSE2 like the
headers in PhysX do.
Reported by: pkg-fallout [1]
---
science/qt6-quick3dphysics/Makefile | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/science/qt6-quick3dphysics/Makefile b/science/qt6-quick3dphysics/Makefile
index 2f8ac5d7d9f6..578413a0b34a 100644
--- a/science/qt6-quick3dphysics/Makefile
+++ b/science/qt6-quick3dphysics/Makefile
@@ -1,5 +1,6 @@
PORTNAME= quick3dphysics
DISTVERSION= ${QT6_VERSION}
+PORTREVISION= 1
CATEGORIES= science
PKGNAMEPREFIX= qt6-
@@ -12,7 +13,32 @@ LIB_DEPENDS= libxkbcommon.so:x11/libxkbcommon
USES= cmake compiler:c++17-lang gl pkgconfig qt-dist:6
USE_GL= opengl
+USE_LDCONFIG= yes
USE_LOCALE= C.UTF-8
USE_QT= base declarative quick3d shadertools
+OPTIONS_DEFINE_aarch64= SIMD
+OPTIONS_DEFINE_amd64= SIMD
+OPTIONS_DEFINE_armv7= SIMD
+OPTIONS_DEFINE_i386= SIMD
+OPTIONS_DEFAULT_aarch64=SIMD
+OPTIONS_DEFAULT_amd64= SIMD
+OPTIONS_DEFAULT_armv7= SIMD
+
+.include <bsd.port.options.mk>
+
+# Either SSE2 or NEON instruction sets are required on i386/amd64 or armv7/
+# aarch64, respectively, to compile vector intrinsics. However i386 does not
+# guarantee SSE2, nor does armv7 NEON, but from what I understand, llvm implies
+# NEON for armv7. If the SIMD option is selected on i386 and SSE2 is not
+# available, we ignore. SIMD support on other platforms is not implemented.
+
+.if ${PORT_OPTIONS:MSIMD}
+. if ${ARCH} == "i386" && empty(MACHINE_CPU:Msse2)
+IGNORE= sse2 instructions required
+. endif
+.else
+CFLAGS+= -DPX_SIMD_DISABLED
+.endif
+
.include <bsd.port.mk>