aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Engberg <diizzy@FreeBSD.org>2023-06-27 10:08:02 +0000
committerGanael LAPLANCHE <martymac@FreeBSD.org>2023-06-27 10:13:32 +0000
commit10076c84866711af04e6c1425cdc6085ac936bfe (patch)
tree55f86bc99474d0611e2c83e4cb1ed7c77f5a800c
parentf23812a6dad55f203800721af9378320e52c4f22 (diff)
emulators/pcsx2: Fix SIGILL crash
Do not pass -march=native as that can bring pre-built packages with instructions not supported by end users and lead to a SIGILL crash. If CPUTYPE is not defined, set arch to the oldest CPU that supports SSE 4.1 (penryn), else let the build system try to build with whatever is set. Add a message indicating that the port should be rebuilt with CPUTYPE defined for best performance. While here, use zstd from ports (now detected). PR: 272192 Reported by: Patrick McMunn <doctorwhoguy@gmail.com>
-rw-r--r--emulators/pcsx2/Makefile17
-rw-r--r--emulators/pcsx2/Makefile.tuples1
-rw-r--r--emulators/pcsx2/distinfo2
-rw-r--r--emulators/pcsx2/files/extra-patch-no-march-minimum-req11
-rw-r--r--emulators/pcsx2/files/extra-patch-no-march-native11
-rw-r--r--emulators/pcsx2/pkg-message7
6 files changed, 42 insertions, 7 deletions
diff --git a/emulators/pcsx2/Makefile b/emulators/pcsx2/Makefile
index ee09f40b5634..6f1b5582fc24 100644
--- a/emulators/pcsx2/Makefile
+++ b/emulators/pcsx2/Makefile
@@ -1,7 +1,7 @@
PORTNAME= pcsx2
PORTVERSION= 1.7.4097
DISTVERSIONPREFIX= v
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= emulators
MAINTAINER= martymac@FreeBSD.org
@@ -16,7 +16,6 @@ ONLY_FOR_ARCHS= amd64
# Notes on dependencies (see cmake/SearchForStuff.cmake):
# - rapidyaml (and c4core) come from 3rdparty/ (0.4.0 is needed)
# - glad comes from 3rdparty/ (conflicts with libglvnd)
-# - zstd comes from 3rdparty/ (not detected yet)
# - zydis comes from 3rdparty/
LIB_DEPENDS= libpng.so:graphics/png \
libavcodec.so:multimedia/ffmpeg \
@@ -30,10 +29,10 @@ LIB_DEPENDS= libpng.so:graphics/png \
libcurl.so:ftp/curl \
libpulse.so:audio/pulseaudio \
libjack.so:audio/jack \
- libsndio.so:audio/sndio
+ libsndio.so:audio/sndio \
+ libzstd.so:archivers/zstd
# libryml.so:devel/rapidyaml \
# libglad.so:graphics/glad \
-# libzstd.so:archivers/zstd
USES= cmake desktop-file-utils gl pkgconfig qt:6 sdl xorg
@@ -46,6 +45,16 @@ USE_SDL= sdl2
USE_XORG= ice x11 xcb xext xpm xrandr
USE_QT= base tools
+# SSE 4.1 instructions are a hard requirement, if CPUTYPE is defined
+# use whatever is set and let the build fail if it falls below
+# baseline requirements. If it's undefined set penryn as target
+# as it's the oldest CPU arch that supports SSE 4.1
+.if defined(CPUTYPE)
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-no-march-native
+.else
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-no-march-minimum-req
+.endif
+
# See: cmake/BuildParameters.cmake
CMAKE_ARGS+= \
-DCMAKE_REQUIRED_INCLUDES:STRING=${LOCALBASE}/include/ \
diff --git a/emulators/pcsx2/Makefile.tuples b/emulators/pcsx2/Makefile.tuples
index e9a97511f72f..44efae57512e 100644
--- a/emulators/pcsx2/Makefile.tuples
+++ b/emulators/pcsx2/Makefile.tuples
@@ -1,7 +1,6 @@
GH_TUPLE= \
rtissera:libchdr:5de1a59019815ccdbba0fe07c71b31406d023248:libchdr/3rdparty/libchdr/libchdr \
biojppm:rapidyaml:213b201d264139cd1b887790197e08850af628e3:rapidyaml/3rdparty/rapidyaml/rapidyaml \
- facebook:zstd:e47e674cd09583ff0503f0f6defd6d23d8b718d3:zstd/3rdparty/zstd/zstd \
RetroAchievements:rcheevos:31f8788fe0e694e99db7ce138d45a655c556fa96:rcheevos/3rdparty/rcheevos/rcheevos \
biojppm:c4core:d35c7c9bf370134595699d791e6ff8db018ddc8d:c4core/3rdparty/rapidyaml/rapidyaml/ext/c4core \
biojppm:cmake:371982300ff5a076d7c3199057ebed77bbe3472f:cmake/3rdparty/rapidyaml/rapidyaml/ext/c4core/cmake \
diff --git a/emulators/pcsx2/distinfo b/emulators/pcsx2/distinfo
index 858e3ab69441..68e5fba4abda 100644
--- a/emulators/pcsx2/distinfo
+++ b/emulators/pcsx2/distinfo
@@ -5,8 +5,6 @@ SHA256 (rtissera-libchdr-5de1a59019815ccdbba0fe07c71b31406d023248_GH0.tar.gz) =
SIZE (rtissera-libchdr-5de1a59019815ccdbba0fe07c71b31406d023248_GH0.tar.gz) = 414409
SHA256 (biojppm-rapidyaml-213b201d264139cd1b887790197e08850af628e3_GH0.tar.gz) = c206d4565ccfa721991a8df90821d1a1f747e68385a0f3f5b9ab995e191c06be
SIZE (biojppm-rapidyaml-213b201d264139cd1b887790197e08850af628e3_GH0.tar.gz) = 446070
-SHA256 (facebook-zstd-e47e674cd09583ff0503f0f6defd6d23d8b718d3_GH0.tar.gz) = 2a7b7e5d3f8c759894f0fea9917a590733600574d20cb53f3be827c7c62862e1
-SIZE (facebook-zstd-e47e674cd09583ff0503f0f6defd6d23d8b718d3_GH0.tar.gz) = 1952167
SHA256 (RetroAchievements-rcheevos-31f8788fe0e694e99db7ce138d45a655c556fa96_GH0.tar.gz) = ffe7020e443f724299352e72abdd9bee432fc00d3d260fbc0fee9fb28ce4f678
SIZE (RetroAchievements-rcheevos-31f8788fe0e694e99db7ce138d45a655c556fa96_GH0.tar.gz) = 522855
SHA256 (biojppm-c4core-d35c7c9bf370134595699d791e6ff8db018ddc8d_GH0.tar.gz) = b768c8fb5dd4740317b7e1a3e43a0b32615d4d4e1e974d7ab515a80d2f1f318d
diff --git a/emulators/pcsx2/files/extra-patch-no-march-minimum-req b/emulators/pcsx2/files/extra-patch-no-march-minimum-req
new file mode 100644
index 000000000000..6e560dbe56c1
--- /dev/null
+++ b/emulators/pcsx2/files/extra-patch-no-march-minimum-req
@@ -0,0 +1,11 @@
+--- cmake/BuildParameters.cmake.orig 2023-06-25 15:34:40 UTC
++++ cmake/BuildParameters.cmake
+@@ -120,7 +120,7 @@ if(${PCSX2_TARGET_ARCHITECTURES} MATCHES "x86_64")
+ endif()
+ else()
+ #set(ARCH_FLAG "-march=native -fabi-version=6")
+- set(ARCH_FLAG "-march=native")
++ set(ARCH_FLAG "-march=penryn")
+ endif()
+ endif()
+ list(APPEND PCSX2_DEFS _ARCH_64=1 _M_X86=1)
diff --git a/emulators/pcsx2/files/extra-patch-no-march-native b/emulators/pcsx2/files/extra-patch-no-march-native
new file mode 100644
index 000000000000..ea0b7c821181
--- /dev/null
+++ b/emulators/pcsx2/files/extra-patch-no-march-native
@@ -0,0 +1,11 @@
+--- cmake/BuildParameters.cmake.orig 2023-06-25 15:34:40 UTC
++++ cmake/BuildParameters.cmake
+@@ -120,7 +120,7 @@ if(${PCSX2_TARGET_ARCHITECTURES} MATCHES "x86_64")
+ endif()
+ else()
+ #set(ARCH_FLAG "-march=native -fabi-version=6")
+- set(ARCH_FLAG "-march=native")
++ #set(ARCH_FLAG "-march=native")
+ endif()
+ endif()
+ list(APPEND PCSX2_DEFS _ARCH_64=1 _M_X86=1)
diff --git a/emulators/pcsx2/pkg-message b/emulators/pcsx2/pkg-message
new file mode 100644
index 000000000000..1481761cdc0c
--- /dev/null
+++ b/emulators/pcsx2/pkg-message
@@ -0,0 +1,7 @@
+[
+{ type: install
+ message: <<EOM
+PCSX2 should be recompiled with CPUTYPE defined for best performance.
+EOM
+}
+]