summaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorGanael LAPLANCHE <martymac@FreeBSD.org>2024-07-11 12:48:18 +0200
committerGanael LAPLANCHE <martymac@FreeBSD.org>2024-07-11 12:54:00 +0200
commit64e2bf7a6a258b0afcb83faa8b7dfe143295e3ba (patch)
treeace0a5434fba89fe57aa82c56a19fbd50259a6a8 /emulators
parentnet/freerdp3: update 3.6.2 → 3.6.3 (diff)
emulators/duckstation: Update to 20240614
Also, add missing dependencies + disable Vulkan support for now (Duckstation needs a patched version of shaderc and cannot use graphics/shaderc from ports yet).
Diffstat (limited to 'emulators')
-rw-r--r--emulators/duckstation/Makefile27
-rw-r--r--emulators/duckstation/distinfo6
-rw-r--r--emulators/duckstation/files/patch-dep-cubeb-CMakeLists.txt30
-rw-r--r--emulators/duckstation/files/patch-dep-discord-rpc-CMakeLists.txt11
-rw-r--r--emulators/duckstation/files/patch-relocate-resources.txt48
-rw-r--r--emulators/duckstation/files/patch-src-util-CMakeLists.txt11
-rw-r--r--emulators/duckstation/files/patch-src-util-platform_misc_unix.cpp20
-rw-r--r--emulators/duckstation/pkg-plist48
8 files changed, 155 insertions, 46 deletions
diff --git a/emulators/duckstation/Makefile b/emulators/duckstation/Makefile
index f538cb20608c..851bd5fbdd33 100644
--- a/emulators/duckstation/Makefile
+++ b/emulators/duckstation/Makefile
@@ -1,5 +1,5 @@
PORTNAME= duckstation
-PORTVERSION= 20240125
+PORTVERSION= 20240614
DISTVERSIONPREFIX= v
CATEGORIES= emulators
@@ -12,30 +12,41 @@ LICENSE= GPLv3
NOT_FOR_ARCHS= i386
NOT_FOR_ARCHS_REASON= src/common/fastjmp.cpp:186:2: error: Unknown platform
-LIB_DEPENDS= libcurl.so:ftp/curl \
+LIB_DEPENDS= libzstd.so:archivers/zstd \
+ libwebp.so:graphics/webp \
+ libpng.so:graphics/png \
+ libfreetype.so:print/freetype2 \
+ libcurl.so:ftp/curl \
+ libwayland-client.so:graphics/wayland \
+ libwayland-egl.so:graphics/wayland \
libbacktrace.so:devel/libbacktrace \
- libxkbcommon.so:x11/libxkbcommon \
libpulse.so:audio/pulseaudio \
libjack.so:audio/jack \
libsndio.so:audio/sndio \
- libdbus-1.so:devel/dbus
+ libdbus-1.so:devel/dbus \
+ libxkbcommon.so:x11/libxkbcommon
# XXX Necessary for Qt6/FindWrapVulkanHeaders.cmake
-BUILD_DEPENDS= vulkan-headers>0:graphics/vulkan-headers
+#BUILD_DEPENDS= vulkan-headers>0:graphics/vulkan-headers
-USES= cmake compiler:c++20-lang gl pkgconfig qt:6 sdl xorg
+USES= cmake compiler:c++20-lang gl jpeg kde:5 pkgconfig qt:6 sdl xorg
USE_GITHUB= yes
GH_ACCOUNT= stenzek
# See: https://github.com/stenzek/duckstation/commits/latest
-GH_TAGNAME= a38d692
+GH_TAGNAME= v0.1-6937
USE_GL= egl
USE_SDL= sdl2
USE_XORG= ice x11 xext xrandr xrender
USE_QT= base tools
+USE_KDE= ecm:build
+# XXX Vulkan support needs libshaderc_shared.so:graphics/shaderc but
+# Duckstation embeds its own -patched/incompatible- version
+# (see: scripts/shaderc-changes.patch) so we just disable it for now.
CMAKE_ARGS+= \
- -DDUCKSTATION_APPLICATION_DIR_PATH:STRING=${DATADIR}
+ -DDUCKSTATION_APPLICATION_DIR_PATH:STRING=${DATADIR} \
+ -DENABLE_VULKAN:BOOL=OFF
# - Program and resources are copied from target dir ${CONFIGURE_WRKSRC}/bin
# because only necessary resources are installed there
diff --git a/emulators/duckstation/distinfo b/emulators/duckstation/distinfo
index 6b7e6ff11e85..d95a853d7969 100644
--- a/emulators/duckstation/distinfo
+++ b/emulators/duckstation/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1706300245
-SHA256 (stenzek-duckstation-v20240125-a38d692_GH0.tar.gz) = 4b1fcecfeba05f0921d65beb7331fcbedde6f4e13eb9ed7cf7f9275c15c36c8e
-SIZE (stenzek-duckstation-v20240125-a38d692_GH0.tar.gz) = 13984655
+TIMESTAMP = 1720199749
+SHA256 (stenzek-duckstation-v20240614-v0.1-6937_GH0.tar.gz) = 6f7aff4484fa8aa67bb84f6be6f6d04c9097c5cb45b80a7667bf2999a062231d
+SIZE (stenzek-duckstation-v20240614-v0.1-6937_GH0.tar.gz) = 13548770
diff --git a/emulators/duckstation/files/patch-dep-cubeb-CMakeLists.txt b/emulators/duckstation/files/patch-dep-cubeb-CMakeLists.txt
new file mode 100644
index 000000000000..1dd09f688586
--- /dev/null
+++ b/emulators/duckstation/files/patch-dep-cubeb-CMakeLists.txt
@@ -0,0 +1,30 @@
+--- dep/cubeb/CMakeLists.txt.orig 2024-06-14 05:59:32 UTC
++++ dep/cubeb/CMakeLists.txt
+@@ -15,6 +15,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+ set(CMAKE_CXX_STANDARD 17)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
++set(CMAKE_REQUIRED_INCLUDES "${CMAKE_INSTALL_PREFIX}/include")
+
+ set(CMAKE_CXX_WARNING_LEVEL 4)
+ if(NOT MSVC)
+@@ -33,8 +34,10 @@ add_library(cubeb
+ src/cubeb_strings.c
+ src/cubeb_utils.cpp
+ )
+-target_include_directories(cubeb
+- PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>
++target_include_directories(cubeb PUBLIC
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
++ $<BUILD_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
++ $<INSTALL_INTERFACE:include>
+ )
+
+ add_library(speex OBJECT subprojects/speex/resample.c)
+@@ -178,4 +181,4 @@ endif()
+ endif()
+ endif()
+ endif()
+-endif()
+\ No newline at end of file
++endif()
diff --git a/emulators/duckstation/files/patch-dep-discord-rpc-CMakeLists.txt b/emulators/duckstation/files/patch-dep-discord-rpc-CMakeLists.txt
new file mode 100644
index 000000000000..983c74832dbc
--- /dev/null
+++ b/emulators/duckstation/files/patch-dep-discord-rpc-CMakeLists.txt
@@ -0,0 +1,11 @@
+--- dep/discord-rpc/CMakeLists.txt.orig 2024-06-14 05:59:32 UTC
++++ dep/discord-rpc/CMakeLists.txt
+@@ -25,7 +25,7 @@ elseif(APPLE)
+ src/connection_unix.cpp
+ src/discord_register_osx.m
+ )
+-elseif(LINUX OR FREEBSD)
++elseif(CMAKE_SYSTEM_NAME MATCHES "(Linux|FreeBSD)")
+ target_sources(discord-rpc PRIVATE
+ src/connection_unix.cpp
+ src/discord_register_linux.cpp
diff --git a/emulators/duckstation/files/patch-relocate-resources.txt b/emulators/duckstation/files/patch-relocate-resources.txt
index 412399c8770c..9288b4e70807 100644
--- a/emulators/duckstation/files/patch-relocate-resources.txt
+++ b/emulators/duckstation/files/patch-relocate-resources.txt
@@ -1,20 +1,21 @@
Allow relocation of resource files and translations
---- CMakeLists.txt.orig 2023-10-16 12:57:57 UTC
+--- CMakeLists.txt.orig 2024-06-14 05:59:32 UTC
+++ CMakeLists.txt
-@@ -44,6 +44,9 @@ endif()
- endif()
- endif()
+@@ -34,6 +34,10 @@ include(DuckStationBuildOptions)
+ # Build options. Depends on system attributes.
+ include(DuckStationBuildOptions)
+if(DEFINED DUCKSTATION_APPLICATION_DIR_PATH)
+ add_compile_definitions(DUCKSTATION_APPLICATION_DIR_PATH="${DUCKSTATION_APPLICATION_DIR_PATH}")
+endif()
-
- # Required libraries.
- if(ENABLE_SDL2)
---- src/duckstation-qt/qthost.cpp.orig 2023-11-20 14:04:38 UTC
++
+ # Set _DEBUG macro for Debug builds.
+ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
+--- src/duckstation-qt/qthost.cpp.orig 2024-06-14 05:59:32 UTC
+++ src/duckstation-qt/qthost.cpp
-@@ -259,6 +259,10 @@ void QtHost::SetResourcesDirectory()
+@@ -503,6 +503,10 @@ void QtHost::SetResourcesDirectory()
void QtHost::SetResourcesDirectory()
{
@@ -25,38 +26,17 @@ Allow relocation of resource files and translations
#ifndef __APPLE__
// On Windows/Linux, these are in the binary directory.
EmuFolders::Resources = Path::Combine(EmuFolders::AppRoot, "resources");
-@@ -266,6 +270,7 @@ void QtHost::SetResourcesDirectory()
- // On macOS, this is in the bundle resources directory.
- EmuFolders::Resources = Path::Canonicalize(Path::Combine(EmuFolders::AppRoot, "../Resources"));
- #endif
-+#endif // DUCKSTATION_APPLICATION_DIR_PATH
- }
-
- void QtHost::SetDataDirectory()
---- src/duckstation-nogui/nogui_host.cpp.orig 2023-10-16 12:57:57 UTC
-+++ src/duckstation-nogui/nogui_host.cpp
-@@ -156,6 +156,10 @@ void NoGUIHost::SetResourcesDirectory()
-
- void NoGUIHost::SetResourcesDirectory()
- {
-+#ifdef DUCKSTATION_APPLICATION_DIR_PATH
-+ // Resources' path specified at compile time
-+ EmuFolders::Resources = Path::Canonicalize(DUCKSTATION_APPLICATION_DIR_PATH "/resources");
-+#else
- #ifndef __APPLE__NOT_USED // Not using bundles yet.
- // On Windows/Linux, these are in the binary directory.
- EmuFolders::Resources = Path::Combine(EmuFolders::AppRoot, "resources");
-@@ -163,6 +167,7 @@ void NoGUIHost::SetResourcesDirectory()
+@@ -510,6 +514,7 @@ void QtHost::SetResourcesDirectory()
// On macOS, this is in the bundle resources directory.
EmuFolders::Resources = Path::Canonicalize(Path::Combine(EmuFolders::AppRoot, "../Resources"));
#endif
+#endif // DUCKSTATION_APPLICATION_DIR_PATH
}
- void NoGUIHost::SetDataDirectory()
---- src/duckstation-qt/qttranslations.cpp.orig 2023-10-16 12:57:57 UTC
+ bool QtHost::SetDataDirectory()
+--- src/duckstation-qt/qttranslations.cpp.orig 2024-06-14 05:59:32 UTC
+++ src/duckstation-qt/qttranslations.cpp
-@@ -73,11 +73,15 @@ void QtHost::InstallTranslator()
+@@ -80,11 +80,15 @@ void QtHost::InstallTranslator(QWidget* dialog_parent)
FixLanguageName(QString::fromStdString(Host::GetBaseStringSettingValue("Main", "Language", GetDefaultLanguage())));
// install the base qt translation first
diff --git a/emulators/duckstation/files/patch-src-util-CMakeLists.txt b/emulators/duckstation/files/patch-src-util-CMakeLists.txt
new file mode 100644
index 000000000000..003ca38b6151
--- /dev/null
+++ b/emulators/duckstation/files/patch-src-util-CMakeLists.txt
@@ -0,0 +1,11 @@
+--- src/util/CMakeLists.txt.orig 2024-06-14 05:59:32 UTC
++++ src/util/CMakeLists.txt
+@@ -114,7 +114,7 @@ if(ENABLE_OPENGL)
+ target_link_libraries(util PRIVATE "opengl32.lib")
+ endif()
+
+- if(LINUX OR FREEBSD OR ANDROID)
++ if(CMAKE_SYSTEM_NAME MATCHES "(Linux|FreeBSD|Android)")
+ target_sources(util PRIVATE
+ opengl_context_egl.cpp
+ opengl_context_egl.h
diff --git a/emulators/duckstation/files/patch-src-util-platform_misc_unix.cpp b/emulators/duckstation/files/patch-src-util-platform_misc_unix.cpp
new file mode 100644
index 000000000000..68e543b0fdaa
--- /dev/null
+++ b/emulators/duckstation/files/patch-src-util-platform_misc_unix.cpp
@@ -0,0 +1,20 @@
+--- src/util/platform_misc_unix.cpp.orig 2024-06-14 05:59:32 UTC
++++ src/util/platform_misc_unix.cpp
+@@ -134,6 +134,7 @@ size_t PlatformMisc::GetRuntimeCacheLineSize()
+
+ size_t PlatformMisc::GetRuntimeCacheLineSize()
+ {
++#if defined(__linux__)
+ int l1i = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+ int l1d = sysconf(_SC_LEVEL1_ICACHE_LINESIZE);
+ int res = (l1i > l1d) ? l1i : l1d;
+@@ -152,6 +153,9 @@ size_t PlatformMisc::GetRuntimeCacheLineSize()
+ }
+
+ return (res > 0) ? static_cast<size_t>(res) : 0;
++#else
++ return HOST_CACHE_LINE_SIZE;
++#endif
+ }
+
+ bool PlatformMisc::PlaySoundAsync(const char* path)
diff --git a/emulators/duckstation/pkg-plist b/emulators/duckstation/pkg-plist
index 4abe24de4993..fe2f56ae1d59 100644
--- a/emulators/duckstation/pkg-plist
+++ b/emulators/duckstation/pkg-plist
@@ -2,6 +2,7 @@ bin/duckstation-qt
share/applications/duckstation.desktop
share/pixmaps/duckstation.png
%%DATADIR%%/resources/chtdb.txt
+%%DATADIR%%/resources/discdb.yaml
%%DATADIR%%/resources/fonts/LICENSE.txt
%%DATADIR%%/resources/fonts/Roboto-Regular.ttf
%%DATADIR%%/resources/fonts/RobotoMono-Medium.ttf
@@ -12,6 +13,10 @@ share/pixmaps/duckstation.png
%%DATADIR%%/resources/fullscreenui/PAL.png
%%DATADIR%%/resources/fullscreenui/address-book-new.png
%%DATADIR%%/resources/fullscreenui/applications-system.png
+%%DATADIR%%/resources/fullscreenui/back-icon.png
+%%DATADIR%%/resources/fullscreenui/desktop-mode.png
+%%DATADIR%%/resources/fullscreenui/drive-cdrom.png
+%%DATADIR%%/resources/fullscreenui/exit.png
%%DATADIR%%/resources/fullscreenui/media-cdrom.png
%%DATADIR%%/resources/fullscreenui/multimedia-player.png
%%DATADIR%%/resources/fullscreenui/star-0.png
@@ -20,8 +25,10 @@ share/pixmaps/duckstation.png
%%DATADIR%%/resources/fullscreenui/star-3.png
%%DATADIR%%/resources/fullscreenui/star-4.png
%%DATADIR%%/resources/fullscreenui/star-5.png
+%%DATADIR%%/resources/fullscreenui/start-bios.png
+%%DATADIR%%/resources/fullscreenui/start-file.png
%%DATADIR%%/resources/gamecontrollerdb.txt
-%%DATADIR%%/resources/gamedb.json
+%%DATADIR%%/resources/gamedb.yaml
%%DATADIR%%/resources/images/cover-placeholder.png
%%DATADIR%%/resources/images/crosshair.png
%%DATADIR%%/resources/images/duck.png
@@ -32,10 +39,18 @@ share/pixmaps/duckstation.png
%%DATADIR%%/resources/shaders/crt-lottes.glsl
%%DATADIR%%/resources/shaders/dolphinfx/bloom.glsl
%%DATADIR%%/resources/shaders/dolphinfx/celshading.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/crt/CRT-EASYMODE.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/crt/CRT-HYLLIAN.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/crt/ZFAST-CRT-COMPOSITE.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/edge-smoothing/DDT.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/edge-smoothing/XBR.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/interpolation/JINC2.glsl
+%%DATADIR%%/resources/shaders/dolphinfx/pixel-art/PIXELLATE.glsl
%%DATADIR%%/resources/shaders/dolphinfx/scanlines.glsl
%%DATADIR%%/resources/shaders/reshade/README.md
%%DATADIR%%/resources/shaders/reshade/REFERENCE.md
%%DATADIR%%/resources/shaders/reshade/Shaders/Blending.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/CRT-Guest-HD.fx
%%DATADIR%%/resources/shaders/reshade/Shaders/CRT-NewPixie.fx
%%DATADIR%%/resources/shaders/reshade/Shaders/CRTLottes2.fx
%%DATADIR%%/resources/shaders/reshade/Shaders/Daltonize.fx
@@ -47,7 +62,37 @@ share/pixmaps/duckstation.png
%%DATADIR%%/resources/shaders/reshade/Shaders/ReShade.fxh
%%DATADIR%%/resources/shaders/reshade/Shaders/ReShadeUI.fxh
%%DATADIR%%/resources/shaders/reshade/Shaders/TriDither.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale.fx
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/bind-shader-params.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/bloom-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/blur-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/derived-settings-and-constants.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/downsampling-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/gamma-management.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/geometry-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/helper-functions-and-macros.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/phosphor-mask-calculations.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/quad-pixel-communication.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/scanline-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/special-functions.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/tex2Dantialias.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/lib/user-settings.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/bloom.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/blurring.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/brightpass.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/content-box.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/deinterlace.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/electron-beams.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/geometry-aa-last-pass.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/input-blurring.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/phosphor-mask.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/shaders/shared-objects.fxh
+%%DATADIR%%/resources/shaders/reshade/Shaders/crt-royale/version-number.fxh
%%DATADIR%%/resources/shaders/reshade/Shaders/scanlines-abs.fx
+%%DATADIR%%/resources/shaders/reshade/Textures/CRT-LUT-1.png
+%%DATADIR%%/resources/shaders/reshade/Textures/CRT-LUT-2.png
+%%DATADIR%%/resources/shaders/reshade/Textures/CRT-LUT-3.png
+%%DATADIR%%/resources/shaders/reshade/Textures/CRT-LUT-4.png
%%DATADIR%%/resources/shaders/reshade/Textures/FontAtlas.png
%%DATADIR%%/resources/shaders/reshade/Textures/crt-newpixie/crtframe.png
%%DATADIR%%/resources/shaders/reshade/Textures/lut.png
@@ -67,6 +112,7 @@ share/pixmaps/duckstation.png
%%DATADIR%%/translations/duckstation-qt_es.qm
%%DATADIR%%/translations/duckstation-qt_fr.qm
%%DATADIR%%/translations/duckstation-qt_he.qm
+%%DATADIR%%/translations/duckstation-qt_id.qm
%%DATADIR%%/translations/duckstation-qt_it.qm
%%DATADIR%%/translations/duckstation-qt_ja.qm
%%DATADIR%%/translations/duckstation-qt_ko.qm