diff --git a/emulators/rpcs3/Makefile b/emulators/rpcs3/Makefile index ea9fe21e6d29..76f57f49c593 100644 --- a/emulators/rpcs3/Makefile +++ b/emulators/rpcs3/Makefile @@ -1,109 +1,132 @@ PORTNAME= rpcs3 DISTVERSIONPREFIX= v DISTVERSION= 0.0.25 # git rev-list --count HEAD DISTVERSIONSUFFIX= -14358-ga00f9e4211 CATEGORIES= emulators wayland MAINTAINER= jbeich@FreeBSD.org COMMENT= PS3 emulator/debugger WWW= https://rpcs3.net/ LICENSE= APACHE20 ISCL GPLv2 MIT ZLIB LICENSE_COMB= multi LICENSE_FILE_ISCL= ${WRKSRC_cubeb}/LICENSE LICENSE_FILE_ZLIB= ${WRKSRC_asmjit}/LICENSE.md +FLAVORS= qt5 qt6 + BUILD_DEPENDS= flatc:devel/flatbuffers LIB_DEPENDS= libxxhash.so:devel/xxhash \ libcurl.so:ftp/curl \ libpng.so:graphics/png \ libavcodec.so:multimedia/ffmpeg \ libpugixml.so:textproc/pugixml ONLY_FOR_ARCHS= aarch64 amd64 ONLY_FOR_ARCHS_REASON= requires int128 and SSE2 USE_GITHUB= yes GH_ACCOUNT= RPCS3 GH_TUPLE= RPCS3:hidapi:hidapi-0.12.0-2-gc2aa9dd:hidapi/3rdparty/hidapi/hidapi \ RPCS3:llvm-mirror:9b52b6c39ae9:llvm/llvm \ RPCS3:soundtouch:2.3.1-16-g83cfba6:soundtouch/3rdparty/SoundTouch/soundtouch \ asmjit:asmjit:06d0bad:asmjit/3rdparty/asmjit/asmjit \ jbeder:yaml-cpp:yaml-cpp-0.7.0-1-g0b67821:yamlcpp/3rdparty/yaml-cpp/yaml-cpp \ KhronosGroup:SPIRV-Headers:1.5.4.raytracing.fixed-172-g36c0c15:spirv_headers/3rdparty/SPIRV/SPIRV-Headers \ KhronosGroup:SPIRV-Tools:v2022.2-71-g5e61ea20:spirv_tools/3rdparty/SPIRV/SPIRV-Tools \ KhronosGroup:glslang:11.11.0-2-g10423ec6:glslang/3rdparty/glslang/glslang \ kinetiknz:cubeb:cubeb-0.2-1391-gdc511c6:cubeb/3rdparty/cubeb/cubeb \ wolfSSL:wolfssl:v5.4.0-stable:wolfssl/3rdparty/wolfssl/wolfssl USES= cmake compiler:c++17-lang elfctl gl iconv:wchar_t localbase:ldflags \ openal:soft pkgconfig python:3.4+,build qt:5 xorg USE_GL= gl glew USE_QT= qmake:build buildtools:build core concurrent dbus gui multimedia svg widgets USE_XORG= x11 CMAKE_ON= CMAKE_SKIP_RPATH ${CURL FFMPEG FLATBUFFERS LIBPNG PUGIXML XXHASH:L:S/^/USE_SYSTEM_/} CMAKE_ON+= BUNDLE_SPEEX # only used by cubeb tests CMAKE_OFF= USE_NATIVE_INSTRUCTIONS USE_PRECOMPILED_HEADERS LDFLAGS+= -Wl,--as-needed # GLU ELF_FEATURES= +noaslr,wxneeded:bin/${PORTNAME} +.if ${FLAVOR:U} == qt6 || make(makesum) || make(fetch) +PATCH_SITES+= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/:qt6 +PATCHFILES+= 052d8cceb679.patch:-p1:qt6 # https://github.com/RPCS3/rpcs3/pull/12471 +PKGNAMESUFFIX= -${FLAVOR} +USES:= ${USES:S/qt:5/qt:6/} +USE_QT= base multimedia svg +PKGMESSAGE= ${.CURDIR}/pkg-message.${FLAVOR} + +CONFLICTS_INSTALL= ${PORTNAME} + +post-patch: ${FLAVOR}-post-patch +${FLAVOR}-post-patch: +# patch(1) doesn't support renames unlike git-apply(1) + @${MV} ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_surface.cpp \ + ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_sink.cpp + @${MV} ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_surface.h \ + ${WRKSRC}/rpcs3/rpcs3qt/qt_camera_video_sink.h +.else +CONFLICTS_INSTALL= ${PORTNAME}-qt6 +.endif + OPTIONS_DEFINE= ALSA EVDEV FAUDIO PULSEAUDIO JACK SNDIO VULKAN OPTIONS_DEFAULT=EVDEV FAUDIO PULSEAUDIO JACK SNDIO VULKAN ALSA_BUILD_DEPENDS= alsa-lib>0:audio/alsa-lib ALSA_CMAKE_BOOL= USE_ALSA EVDEV_DESC= libevdev-based joystick support EVDEV_CMAKE_BOOL= USE_LIBEVDEV EVDEV_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto EVDEV_LIB_DEPENDS= libevdev.so:devel/libevdev FAUDIO_DESC= FAudio audio support FAUDIO_LIB_DEPENDS= libFAudio.so:audio/faudio FAUDIO_CMAKE_BOOL= USE_FAUDIO USE_SYSTEM_FAUDIO JACK_BUILD_DEPENDS= jackit>0:audio/jack JACK_CMAKE_BOOL= USE_JACK PULSEAUDIO_BUILD_DEPENDS=pulseaudio>0:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= USE_PULSE SNDIO_BUILD_DEPENDS= sndio>0:audio/sndio SNDIO_CMAKE_BOOL= USE_SNDIO VULKAN_DESC= Vulkan renderer VULKAN_BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader VULKAN_CMAKE_BOOL= USE_VULKAN post-patch: @${REINPLACE_CMD} -e '/GIT_BRANCH/s/local_build/master/' \ -e '/GIT_FULL_BRANCH/s/local_build/${GH_ACCOUNT}\/${GH_PROJECT}\/master/' \ -e '/GIT_VERSION/s/local_build/${GH_TAGNAME:C/[^-]*-//}/' \ ${WRKSRC}/${PORTNAME}/git-version.cmake .include # Ignore Mk/bsd.default-versions.mk but respect make.conf(5) .if !defined(DEFAULT_VERSIONS) || ! ${DEFAULT_VERSIONS:Mllvm*} LLVM_DEFAULT= 13 # bump if not latest release .endif BUILD_DEPENDS+= clang++${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} USES:= ${USES:Ncompiler*} CC= clang${LLVM_DEFAULT} CXX= clang++${LLVM_DEFAULT} CPP= clang-cpp${LLVM_DEFAULT} # XXX Move into separate port and standardize via USES GH_TUPLE+= llvm:llvm-project:llvmorg-13.0.1-rc1:libcxx CXXFLAGS+= -nostdinc++ -isystem${WRKDIR}/libcxx_prefix/include/c++/v1 LDFLAGS+= -nostdlib++ -L${WRKDIR}/libcxx_prefix/lib -l:libc++.a -lcxxrt pre-configure: bundled-libcxx bundled-libcxx: @${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS:M*Ninja*} \ -DCMAKE_INSTALL_PREFIX:PATH=${WRKDIR}/libcxx_prefix \ -B ${WRKDIR}/libcxx_build -S ${WRKSRC_libcxx}/libcxx @${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build .include diff --git a/emulators/rpcs3/distinfo b/emulators/rpcs3/distinfo index 9f59f45db5d0..4af2988fa1be 100644 --- a/emulators/rpcs3/distinfo +++ b/emulators/rpcs3/distinfo @@ -1,25 +1,27 @@ TIMESTAMP = 1667339408 SHA256 (RPCS3-rpcs3-v0.0.25-14358-ga00f9e4211_GH0.tar.gz) = dfa0fd0e670abe24189f685000d6001567f5c68a30171218c5c9ae9094f6093f SIZE (RPCS3-rpcs3-v0.0.25-14358-ga00f9e4211_GH0.tar.gz) = 8670253 SHA256 (RPCS3-hidapi-hidapi-0.12.0-2-gc2aa9dd_GH0.tar.gz) = 0670ad9e58476c51775fd3a0b9e995eab5a544b498f00e802023acd265f07a3e SIZE (RPCS3-hidapi-hidapi-0.12.0-2-gc2aa9dd_GH0.tar.gz) = 239244 SHA256 (RPCS3-llvm-mirror-9b52b6c39ae9_GH0.tar.gz) = 9df78a8282453a0e1a3653664ef11ef47b8ab4d2b86e486922770ed2240788b0 SIZE (RPCS3-llvm-mirror-9b52b6c39ae9_GH0.tar.gz) = 29968896 SHA256 (RPCS3-soundtouch-2.3.1-16-g83cfba6_GH0.tar.gz) = 56863dbed27510742ed4ced54e9a5fba8658bcbfbb1cc5cdb978d7d537a3a874 SIZE (RPCS3-soundtouch-2.3.1-16-g83cfba6_GH0.tar.gz) = 524625 SHA256 (asmjit-asmjit-06d0bad_GH0.tar.gz) = e48728f90c17ddd785b2a94489bd0396dffe086195fc046b547619b2fd363e3c SIZE (asmjit-asmjit-06d0bad_GH0.tar.gz) = 972948 SHA256 (jbeder-yaml-cpp-yaml-cpp-0.7.0-1-g0b67821_GH0.tar.gz) = 97ed209bb218153ba1cd8096e4d259e559ce7119bfc93013fc843c83651047ae SIZE (jbeder-yaml-cpp-yaml-cpp-0.7.0-1-g0b67821_GH0.tar.gz) = 1033619 SHA256 (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-172-g36c0c15_GH0.tar.gz) = 774effebc67ea2a56204fd6c6d514a86dbbd6d4efaaf2499393a62c94f857980 SIZE (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-172-g36c0c15_GH0.tar.gz) = 437404 SHA256 (KhronosGroup-SPIRV-Tools-v2022.2-71-g5e61ea20_GH0.tar.gz) = f6bda80845ade5055707172a76203d2c53785bb0e4c9e53cac2cdc580b1d9d60 SIZE (KhronosGroup-SPIRV-Tools-v2022.2-71-g5e61ea20_GH0.tar.gz) = 3034320 SHA256 (KhronosGroup-glslang-11.11.0-2-g10423ec6_GH0.tar.gz) = 444052c288ee2507f6bc22409333d90f2d91d3272e13f619b6b61ce2bac61dde SIZE (KhronosGroup-glslang-11.11.0-2-g10423ec6_GH0.tar.gz) = 3543809 SHA256 (kinetiknz-cubeb-cubeb-0.2-1391-gdc511c6_GH0.tar.gz) = 904cbd1e3abc0983efa99cf0b21af211d827ce9232bac20eed60ee7219443f75 SIZE (kinetiknz-cubeb-cubeb-0.2-1391-gdc511c6_GH0.tar.gz) = 223020 SHA256 (wolfSSL-wolfssl-v5.4.0-stable_GH0.tar.gz) = dc36cc19dad197253e5c2ecaa490c7eef579ad448706e55d73d79396e814098b SIZE (wolfSSL-wolfssl-v5.4.0-stable_GH0.tar.gz) = 20972285 SHA256 (llvm-llvm-project-llvmorg-13.0.1-rc1_GH0.tar.gz) = c9411f1882eaf0c190fd5b412deb0bd7dba61a48df243d3408298cc6f53b6921 SIZE (llvm-llvm-project-llvmorg-13.0.1-rc1_GH0.tar.gz) = 147284646 +SHA256 (052d8cceb679.patch) = 5e8e600ca1a6889a4f19b574275af1379a7c0b57de776f4d955dc95fdcb2c973 +SIZE (052d8cceb679.patch) = 111096 diff --git a/emulators/rpcs3/pkg-message.qt6 b/emulators/rpcs3/pkg-message.qt6 new file mode 100644 index 000000000000..b2171411dfd0 --- /dev/null +++ b/emulators/rpcs3/pkg-message.qt6 @@ -0,0 +1,24 @@ +{ type: install + message: < Audio -> Music Handler then change Qt to Null. + +Process 84361 stopped +* thread #1, name = 'rpcs3', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) + frame #0: 0x0000000805112583 libQt6Multimedia.so.6`QMediaDevices::audioOutputs() at qmediadevices.cpp:133:47 + 130 */ + 131 QList QMediaDevices::audioOutputs() + 132 { +-> 133 return QPlatformMediaDevices::instance()->audioOutputs(); + 134 } + 135 + 136 /*! +(lldb) bt +* thread #1, name = 'rpcs3', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) + * frame #0: 0x0000000805112583 libQt6Multimedia.so.6`QMediaDevices::audioOutputs() at qmediadevices.cpp:133:47 + frame #1: 0x000000080511274e libQt6Multimedia.so.6`QMediaDevices::defaultAudioOutput() at qmediadevices.cpp:190:26 + frame #2: 0x00000008050c86ef libQt6Multimedia.so.6`QAudioOutput::QAudioOutput(this=0x0000000899ff05e0, parent=0x0000000000000000) at qaudiooutput.cpp:54:20 +[...] +EOM +} +]