Hi, Here's an update for snes9x to latest version. Of potential interest, there is now a Vulkan renderer support. Full changelog at [0].
Port-wise, the build system changed CMake and dropped support for GTK+2 by means of depending on x11/gtk3mm. A BDEP on graphics/spirv-cross, new port submitted by op@ [1], is added. I take maintainership of the port, too. Two hours of Tales of Phantasia says it works fine, but I had to play a bit with the graphics knobs (sync method, renderer and such). The same happens for me with 1.60 in OpenBSD tho, but unlike it, 1.62.3 doesn't segafults with ToP. Lucas [0]: https://github.com/snes9xgit/snes9x/blob/8b82d487937d9ea39f7229d280c6f6686c415fe7/docs/changes.txt [1]: https://marc.info/?l=openbsd-ports&m=169425942810919&w=2 diff refs/heads/master e14db6acb0f48070fb1febc60a268aa130ace464 commit - 54426ad93a79e323ee2417eab27e4ccd56016ec6 commit + e14db6acb0f48070fb1febc60a268aa130ace464 blob - ab84f23d442dc217b3a6fe003fe3a3f42a7727d5 blob + c6e70210161c95d54108ec1052ba849ae30c0f61 --- emulators/snes9x/Makefile +++ emulators/snes9x/Makefile @@ -4,41 +4,56 @@ BROKEN-hppa = ICE/failure on filter/hq2x.cpp GH_ACCOUNT = snes9xgit GH_PROJECT = snes9x -GH_TAGNAME = 1.60 -REVISION = 3 +GH_TAGNAME = 1.62.3 CATEGORIES = emulators games HOMEPAGE = http://www.snes9x.com/ +MAINTAINER = Lucas Gabriel Vuotto <lu...@sexy.is> + # non-commercial PERMIT_PACKAGE = Yes -WANTLIB += ${COMPILER_LIBCXX} SDL2 X11 Xext Xrandr Xv atk-1.0 -WANTLIB += c cairo cairo-gobject epoxy gdk-3 gdk_pixbuf-2.0 gio-2.0 -WANTLIB += glib-2.0 gobject-2.0 gtk-3 intl m pango-1.0 pangocairo-1.0 -WANTLIB += png z +WANTLIB += ${COMPILER_LIBCXX} HLSL SDL2 SPIRV X11 Xext Xrandr +WANTLIB += Xv atk-1.0 atkmm-1.6 c cairo cairo-gobject cairomm-1.0 +WANTLIB += epoxy gdk-3 gdk_pixbuf-2.0 gdkmm-3.0 gio-2.0 giomm-2.4 +WANTLIB += glib-2.0 glibmm-2.4 glslang gobject-2.0 gthread-2.0 +WANTLIB += gtk-3 gtkmm-3.0 harfbuzz intl m pango-1.0 pangocairo-1.0 +WANTLIB += pangomm-1.4 png sigc-2.0 z -RUN_DEPENDS = devel/desktop-file-utils \ +# libvulkan seems opened via dlopen, as the ports builds and links without it. +# Runtime will abort if Vulkan is used as the renderer and vulkan-loader isn't +# installed. +RUN_DEPENDS += devel/desktop-file-utils \ + graphics/vulkan-loader \ x11/gtk+4,-guic -LIB_DEPENDS = devel/sdl2 \ +BUILD_DEPENDS += graphics/spirv-cross \ + graphics/vulkan-headers + +LIB_DEPENDS += devel/sdl2 \ + graphics/glslang \ graphics/png \ - x11/gtk+3 + x11/gtk3mm -MODULES = devel/meson \ +MODULES += devel/cmake \ textproc/intltool +# C++17 COMPILER = base-clang ports-gcc -CONFIGURE_ENV = LDFLAGS="-L${X11BASE}/lib" +CONFIGURE_ARGS += -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ + -DCMAKE_INSTALL_DATAROOTDIR="share" \ + -DUSE_PORTAUDIO=OFF \ + -DUSE_OSS=OFF \ + -DUSE_ALSA=OFF \ + -DUSE_WAYLAND=OFF \ + -DUSE_PULSEAUDIO=OFF \ + -DUSE_SYSTEMZIP=OFF -CONFIGURE_ARGS = -Dportaudio=false \ - -Doss=false \ - -Dalsa=false \ - -Dwayland=false \ - -Dpulseaudio=false \ - -Dsystem-zip=false +CXXFLAGS += -I${LOCALBASE}/include +MODCMAKE_LDFLAGS = -L${X11BASE}/lib -L${LOCALBASE}/lib NO_TEST = Yes blob - a4f13126a1919840b7a743e26d3739c3e902fa1c blob + aa512deed30667594991d6675dcc00a8c9ced997 --- emulators/snes9x/distinfo +++ emulators/snes9x/distinfo @@ -1,2 +1,2 @@ -SHA256 (snes9x-1.60.tar.gz) = hhyMCrHTAtnfUeWsRxegBpszYUo/Ir86sX6/NAXlhyI= -SIZE (snes9x-1.60.tar.gz) = 2863228 +SHA256 (snes9x-1.62.3.tar.gz) = aRLGkpCuhU6iKxsskX2IWxxKGpWsvnPNQkPMsgcWAP4= +SIZE (snes9x-1.62.3.tar.gz) = 3423799 blob - 7b2214a02cf371b0df11ac6b4b4cd291b3daa04d (mode 644) blob + /dev/null --- emulators/snes9x/patches/patch-gtk_meson_build +++ /dev/null @@ -1,16 +0,0 @@ -No -ldl on OpenBSD. - -Index: gtk/meson.build ---- gtk/meson.build.orig -+++ gtk/meson.build -@@ -50,10 +50,8 @@ deps += gtk_dep - - x11_dep = c_compiler.find_library('X11') - xext_dep = c_compiler.find_library('Xext') --dl_dep = c_compiler.find_library('dl') - deps += x11_dep - deps += xext_dep --deps += dl_dep - - xrandr_dep = dependency('xrandr') - deps += xrandr_dep blob - /dev/null blob + 07d5562e9328d32823deda19667bb7eb78466195 (mode 644) --- /dev/null +++ emulators/snes9x/patches/patch-gtk_CMakeLists_txt @@ -0,0 +1,43 @@ +No -ldl on OpenBSD. +Use system glslang and SPIRV-Cross. +Don't reach for Wayland headers. + +Index: gtk/CMakeLists.txt +--- gtk/CMakeLists.txt.orig ++++ gtk/CMakeLists.txt +@@ -63,7 +63,6 @@ pkg_check_modules(XRANDR REQUIRED xrandr) + + find_library(X11 X11 REQUIRED) + find_library(XEXT Xext REQUIRED) +-find_library(DL dl REQUIRED) + list(APPEND ARGS ${SDL2_CFLAGS} ${GTK_CFLAGS} ${XRANDR_CFLAGS}) + list(APPEND LIBS ${X11} ${XEXT} ${DL} ${SDL2_LIBRARIES} ${GTK_LIBRARIES} ${XRANDR_LIBRARIES}) + +@@ -78,16 +77,11 @@ list(APPEND SOURCES src/gtk_display_driver_opengl.cpp + + if(USE_SLANG) + list(APPEND SOURCES ../shaders/slang.cpp) +- list(APPEND INCLUDES ../external/glslang) + + set(SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS CACHE BOOL ON) + set(BUILD_TESTING CACHE BOOL OFF) +- add_subdirectory("../external/glslang" "glslang" EXCLUDE_FROM_ALL) +- add_subdirectory("../external/SPIRV-Cross" "SPIRV-Cross" EXCLUDE_FROM_ALL) + list(APPEND LIBS glslang +- OGLCompiler + HLSL +- OSDependent + SPIRV + glslang-default-resource-limits) + list(APPEND LIBS spirv-cross-core +@@ -95,10 +89,8 @@ if(USE_SLANG) + spirv-cross-reflect + spirv-cross-cpp) + list(APPEND DEFINES "USE_SLANG") +- list(APPEND INCLUDES "../external/glslang") + + list(APPEND DEFINES "VK_USE_PLATFORM_XLIB_KHR" +- "VK_USE_PLATFORM_WAYLAND_KHR" + "VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1" + "VMA_DYNAMIC_VULKAN_FUNCTIONS=1" + "VMA_STATIC_VULKAN_FUNCTIONS=0") blob - /dev/null blob + a58ef96a08e45028a0ba337bf704cb0567b07a9e (mode 644) --- /dev/null +++ emulators/snes9x/patches/patch-shaders_slang_cpp @@ -0,0 +1,22 @@ +Use system glslang and SPIRV-Cross. + +Index: shaders/slang.cpp +--- shaders/slang.cpp.orig ++++ shaders/slang.cpp +@@ -9,11 +9,11 @@ + #include <vector> + #include <string> + #include <sstream> +-#include "external/glslang/glslang/Public/ShaderLang.h" +-#include "external/glslang/SPIRV/GlslangToSpv.h" +-#include "external/glslang/glslang/Public/ResourceLimits.h" +-#include "external/SPIRV-Cross/spirv_cross.hpp" +-#include "external/SPIRV-Cross/spirv_glsl.hpp" ++#include <glslang/Public/ShaderLang.h> ++#include <glslang/SPIRV/GlslangToSpv.h> ++#include <glslang/Public/ResourceLimits.h> ++#include <spirv_cross/spirv_cross.hpp> ++#include <spirv_cross/spirv_glsl.hpp> + + std::string GLSLShader::slang_get_stage(std::vector<std::string> &lines, + std::string name) blob - /dev/null blob + 35b9cd34323b31b78e0186b062e24345af2a69e3 (mode 644) --- /dev/null +++ emulators/snes9x/patches/patch-vulkan_slang_preset_cpp @@ -0,0 +1,23 @@ +Use system glslang and SPIRV-Cross. + +Index: vulkan/slang_preset.cpp +--- vulkan/slang_preset.cpp.orig ++++ vulkan/slang_preset.cpp +@@ -1,5 +1,5 @@ + #include "slang_preset.hpp" +-#include "../external/SPIRV-Cross/spirv.hpp" ++#include <spirv_cross/spirv.hpp> + #include "slang_helpers.hpp" + #include "slang_preset_ini.hpp" + +@@ -12,8 +12,8 @@ + #include <fstream> + #include <filesystem> + #include <future> +-#include "../external/SPIRV-Cross/spirv_cross.hpp" +-#include "../external/SPIRV-Cross/spirv_glsl.hpp" ++#include <spirv_cross/spirv_cross.hpp> ++#include <spirv_cross/spirv_glsl.hpp> + #include "slang_shader.hpp" + + using std::string; blob - /dev/null blob + 3d3bccdcb81d227199b19ec762e81bb368fa900b (mode 644) --- /dev/null +++ emulators/snes9x/patches/patch-vulkan_slang_shader_cpp @@ -0,0 +1,18 @@ +Use system glslang and SPIRV-Cross. + +Index: vulkan/slang_shader.cpp +--- vulkan/slang_shader.cpp.orig ++++ vulkan/slang_shader.cpp +@@ -7,9 +7,9 @@ + #include <sstream> + #include <vector> + #include <fstream> +-#include "../external/glslang/glslang/Public/ShaderLang.h" +-#include "../external/glslang/SPIRV/GlslangToSpv.h" +-#include "../external/glslang/glslang/Public/ResourceLimits.h" ++#include <glslang/Public/ShaderLang.h> ++#include <glslang/SPIRV/GlslangToSpv.h> ++#include <glslang/Public/ResourceLimits.h> + + using std::string; + using std::vector; blob - 7f665dc9e088cf757109cca9a760b4823b834461 blob + 5b50d138131ae300012210c8ec47aad0890cc706 --- emulators/snes9x/pkg/PLIST +++ emulators/snes9x/pkg/PLIST @@ -7,12 +7,15 @@ share/doc/snes9x/controls.txt share/doc/snes9x/snapshots.txt share/examples/snes9x/ share/examples/snes9x/snes9x.conf.default +@tag gtk-update-icon-cache %D/share/icons/hicolor +@tag update-desktop-database share/icons/hicolor/128x128/apps/snes9x.png share/icons/hicolor/16x16/apps/snes9x.png share/icons/hicolor/24x24/apps/snes9x.png share/icons/hicolor/256x256/apps/snes9x.png share/icons/hicolor/32x32/apps/snes9x.png share/icons/hicolor/64x64/apps/snes9x.png +share/icons/hicolor/scalable/apps/snes9x.svg share/locale/es/LC_MESSAGES/snes9x-gtk.mo share/locale/fr_FR/ share/locale/fr_FR/LC_MESSAGES/ @@ -21,7 +24,7 @@ share/locale/ja/LC_MESSAGES/snes9x-gtk.mo share/locale/pt_BR/LC_MESSAGES/snes9x-gtk.mo share/locale/ru/LC_MESSAGES/snes9x-gtk.mo share/locale/sr@latin/LC_MESSAGES/snes9x-gtk.mo +share/locale/uk/LC_MESSAGES/snes9x-gtk.mo +share/locale/zh_CN/LC_MESSAGES/snes9x-gtk.mo share/snes9x/ share/snes9x/cheats.bml -@tag gtk-update-icon-cache %D/share/icons/hicolor -@tag update-desktop-database