Download raw body.
update emulators/flycast-2.5
Nam Nguyen writes:
> Please find an inline diff updating emulators/flycast-2.5.
ping. diff is inline.
>
> This diff:
> - updates to emulators/flycast-2.5 released on May 7, 2025
> changelog:
> https://github.com/flyinghead/flycast/releases/tag/v2.5
> - moves to DIST_TUPLE instead of a self-hosted tarball. git submodules
> are made easier with this.
> - adds asio and rcheevos license markers
> - removes glslang license markers since glslang is not bundled and is a
> dependency
> - removes FIX_CRLF_FILES
> - removes base-gcc from COMPILER
> - adds vulkan with WANTLIB vulkan, LIB_DEPENDS
> graphics/vulkan-loader and -DUSE_VULKAN=ON.
> - uses system glslang. vulkan also requires this. WANTLIB SPIRV
> glslang-default-resource-limits, LIB_DEPENDS graphics/glslang and
> -DUSE_HOST_GLSLANG=ON.
> - uses system emulators/libchdr. WANTLIB chdr, -DUSE_HOST_LIBCHDR=ON
> - CMakeLists patch simplifies to only unbundle xxhash. glslang and
> libchdr are now handled as above with USE_HOST_GLSLANG and
> USE_HOST_LIBCHDR.
> - vk_mem_alloc.h patch churn
> - garbage collects vulkan/compiler.cpp patch
> - adds a new patch to #include <set> to resolve a build error with too
> few template arguments for set
>
> To test, apply the new emulators/libchdr update I proposed in the other
> email, but the old libchdr should work, too. I tested running some zstd
> compressed chd files and it works, now that libchdr added zstd
> support. I have not tested the new network functionality found in
> Network > Use DCNet (Experimental). vulkan and gl both work. There is
> noticeable audio delay, but it runs decently.
>
> Feedback and tests are welcome. OK?
Index: Makefile
===================================================================
RCS file: /cvs/ports/emulators/flycast/Makefile,v
diff -u -p -r1.7 Makefile
--- Makefile 1 Mar 2024 16:49:04 -0000 1.7
+++ Makefile 4 Sep 2025 22:54:08 -0000
@@ -5,10 +5,21 @@ ONLY_FOR_ARCHS = amd64
COMMENT = emulator for Sega Dreamcast and Sega Naomi based on reicast
-V = 2.1pl20230303
+V = 2.5
DISTNAME = flycast-${V}
-COMMIT = 27b6bafd0f003c8f8bcd1fb3bfd48a3523b298f5
-REVISION = 3
+DIST_TUPLE += github flyinghead flycast v${V} .
+DIST_TUPLE += github flyinghead asio \
+ d3402006e84efb6114ff93e4f2b8508412ed80d5 \
+ core/deps/asio
+DIST_TUPLE += github KhronosGroup Vulkan-Headers \
+ 85c2334e92e215cce34e8e0ed8b2dce4700f4a50 \
+ core/deps/Vulkan-Headers
+DIST_TUPLE += github GPUOpen-LibrariesAndSDKs VulkanMemoryAllocator \
+ 6eb62e1515072827db992c2befd80b71b2d04329 \
+ core/deps/VulkanMemoryAllocator
+DIST_TUPLE += github RetroAchievements rcheevos \
+ 563230b1c249774b4852c944dc7cdcb952c9e8e8 \
+ core/deps/rcheevos
CATEGORIES = emulators games
@@ -16,35 +27,29 @@ HOMEPAGE = https://github.com/flyinghead
MAINTAINER = Nam Nguyen <namn@openbsd.org>
-# GPLv2 (flycast, picoTCP), GPLv3 (glslang, picoTCP, xbrz),
-# Apache 2.0 (Vulkan-Headers, glslang),
-# BSD-3-Clause (glslang, gtest, vixl, xbyak, exec_elf.h),
-# BSD-2-Clause (libelf, glslang), LGPL (lzma), Boost (nowide),
-# MIT (VulkanMemoryAllocator, ggpo, GLM, glslang, imgui, json, md5, stb),
-# Custom NVIDIA and Khronos Group (glslang preprocessor)
+# GPLv2 (flycast, picoTCP), GPLv3 (picoTCP, xbrz),
+# Apache 2.0 (Vulkan-Headers),
+# Boost (asio),
+# BSD-3-Clause (gtest, vixl, xbyak, exec_elf.h),
+# BSD-2-Clause (libelf), LGPL (lzma), Boost (nowide),
+# MIT (VulkanMemoryAllocator, ggpo, GLM, imgui, json, md5, rcheevos, stb)
PERMIT_PACKAGE = Yes
# if running with vulkan backend, dlopen's vulkan in vulkan.hpp
-WANTLIB += ${COMPILER_LIBCXX} GL SDL2 ao c curl chdr
-WANTLIB += lua${MODLUA_VERSION} m miniupnpc pulse xxhash z zip
-
-SITES = https://messagemode2.com/source/
+WANTLIB += ${COMPILER_LIBCXX} ${MODLUA_WANTLIB} SDL2 SPIRV ao
+WANTLIB += c chdr curl glslang glslang-default-resource-limits
+WANTLIB += m miniupnpc pulse vulkan xxhash z zip
NO_TEST = Yes
-FIX_CRLF_FILES = core/deps/VulkanMemoryAllocator/include/vk_mem_alloc.h
-
# C++
-COMPILER = base-clang ports-gcc base-gcc
+COMPILER = base-clang ports-gcc
MODULES = devel/cmake \
lang/lua
MODLUA_VERSION = 5.3
-WRKDIST = ${WRKDIR}/flycast
-WRKSRC = ${WRKDIST}
-
USE_WXNEEDED = Yes
BUILD_DEPENDS = lang/luabridge
@@ -53,27 +58,15 @@ LIB_DEPENDS = archivers/libzip \
audio/pulseaudio \
devel/sdl2 \
emulators/libchdr \
+ graphics/glslang \
+ graphics/vulkan-loader \
net/curl \
net/miniupnp/miniupnpc \
sysutils/xxhash
-CONFIGURE_ARGS += -DUSE_VULKAN=OFF
-do-gen:
- ${SUBST_CMD} ${WRKSRC}/CMakeLists.txt
-
-# needs: devel/git and archivers/gtar
-D = /tmp/flycast
-dist:
- cd /tmp && git clone https://github.com/flyinghead/flycast.git; \
- cd ${D} && git checkout ${COMMIT}; \
- git rm -r --cached core/deps/{SDL,breakpad,glslang,libchdr,luabridge}; \
- git submodule init; \
- git submodule update; \
- rm -rfv core/deps/{dirent,libretro-common,libzip,miniupnpc,oboe,xxHash}; \
- cd /tmp && gtar czvf flycast-${V}.tar.gz --exclude-vcs flycast; \
- scp flycast-${V}.tar.gz train:source/; \
- rm /tmp/flycast-${V}.tar.gz; \
- rm -rfv ${D};
+CONFIGURE_ARGS += -DUSE_VULKAN=ON \
+ -DUSE_HOST_GLSLANG=ON \
+ -DUSE_HOST_LIBCHDR=ON
do-install:
${INSTALL_PROGRAM} ${WRKBUILD}/flycast \
Index: distinfo
===================================================================
RCS file: /cvs/ports/emulators/flycast/distinfo,v
diff -u -p -r1.2 distinfo
--- distinfo 30 Apr 2023 19:39:39 -0000 1.2
+++ distinfo 4 Sep 2025 22:54:08 -0000
@@ -1,2 +1,10 @@
-SHA256 (flycast-2.1pl20230303.tar.gz) = F4AjWMwKO1hFJEeUzZOMf7i3drm74+4UtPwIMRX3N3o=
-SIZE (flycast-2.1pl20230303.tar.gz) = 14886805
+SHA256 (GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator-6eb62e1515072827db992c2befd80b71b2d04329.tar.gz) = mv5GzgJoF5nKkH+3mZD/J2h337YyTUjaIbIVuSZJNo0=
+SHA256 (KhronosGroup-Vulkan-Headers-85c2334e92e215cce34e8e0ed8b2dce4700f4a50.tar.gz) = m4W9gEz8ABK65g9bVAlH/CBxYDtUfOZGdPuMJKn2qiU=
+SHA256 (RetroAchievements-rcheevos-563230b1c249774b4852c944dc7cdcb952c9e8e8.tar.gz) = +rCAnmDY7WSkor7ylkMV6fS253DbTJY2MEQTUtHdIdE=
+SHA256 (flyinghead-asio-d3402006e84efb6114ff93e4f2b8508412ed80d5.tar.gz) = A2TqLiucFiPjKpWH4OLaCGafD40Pa+mrqkjlfZku0Hk=
+SHA256 (flyinghead-flycast-v2.5.tar.gz) = AZyubA6xlvgiLGZA42vl49a1UfHHeC5myDHby0PvbRE=
+SIZE (GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator-6eb62e1515072827db992c2befd80b71b2d04329.tar.gz) = 877925
+SIZE (KhronosGroup-Vulkan-Headers-85c2334e92e215cce34e8e0ed8b2dce4700f4a50.tar.gz) = 2046570
+SIZE (RetroAchievements-rcheevos-563230b1c249774b4852c944dc7cdcb952c9e8e8.tar.gz) = 669618
+SIZE (flyinghead-asio-d3402006e84efb6114ff93e4f2b8508412ed80d5.tar.gz) = 2858075
+SIZE (flyinghead-flycast-v2.5.tar.gz) = 34653480
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: /cvs/ports/emulators/flycast/patches/patch-CMakeLists_txt,v
diff -u -p -r1.2 patch-CMakeLists_txt
--- patches/patch-CMakeLists_txt 30 Apr 2023 19:39:39 -0000 1.2
+++ patches/patch-CMakeLists_txt 4 Sep 2025 22:54:08 -0000
@@ -1,23 +1,9 @@
-add include and link directories
-unbundle xxhash, glslang and libchdr
-link against -lSDL2 instead of libSDL2.a by using PkgConfig
+unbundle xxhash
Index: CMakeLists.txt
--- CMakeLists.txt.orig
+++ CMakeLists.txt
-@@ -6,6 +6,11 @@ if(CCACHE_PROGRAM)
- set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE STRING "Compiler launcher for CXX.")
- endif()
-
-+include_directories( ${LOCALBASE}/include
-+ ${LOCALBASE}/include/SDL2
-+ ${X11BASE}/include )
-+link_directories( ${LOCALBASE}/lib )
-+
- option(ENABLE_CTEST "Enables unit tests" OFF)
- option(ENABLE_OPROFILE "Enable OProfile" OFF)
- option(TEST_AUTOMATION "Enable test automation" OFF)
-@@ -325,8 +330,11 @@ endif()
+@@ -407,8 +407,11 @@ endif()
option(BUILD_SHARED_LIBS "Build shared library" OFF)
set(XXHASH_BUILD_XXHSUM OFF CACHE BOOL "Build the xxhsum binary")
@@ -31,89 +17,3 @@ Index: CMakeLists.txt
option(BUILD_SHARED_LIBS "Build shared library" OFF)
add_subdirectory(core/deps/glm)
-@@ -339,8 +347,29 @@ if(USE_VULKAN)
- option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" OFF)
- option(ENABLE_HLSL "Enables HLSL input support" OFF)
- option(ENABLE_PCH "Enables Precompiled header" OFF)
-- add_subdirectory(core/deps/glslang EXCLUDE_FROM_ALL)
-- target_link_libraries(${PROJECT_NAME} PRIVATE SPIRV)
-+ find_library(GLSLANG_LIBRARIES glslang)
-+ if (GLSLANG_LIBRARIES)
-+ set(GLSLANG_FOUND 1)
-+ find_path(GLSLANG_INCLUDE_DIR GlslangToSpv.h PATH_SUFFIXES glslang/SPIRV)
-+ set(GLSLANG_INCLUDE_DIR "${GLSLANG_INCLUDE_DIR}/..")
-+ endif(GLSLANG_LIBRARIES)
-+ find_library(SPIRV_LIBRARIES SPIRV)
-+ if (SPIRV_LIBRARIES)
-+ set(SPIRV_FOUND 1)
-+ endif (SPIRV_LIBRARIES)
-+ if (GLSLANG_FOUND)
-+ message(STATUS "Found glslang: ${GLSLANG_LIBRARIES}")
-+ message(STATUS "glslang include: ${GLSLANG_INCLUDE_DIR}")
-+ else()
-+ message(STATUS "glslang library not found.")
-+ endif()
-+ if (SPIRV_FOUND)
-+ message(STATUS "Found SPIRV: ${SPIRV_LIBRARIES}")
-+ else()
-+ message(STATUS "spirv library not found.")
-+ endif()
-+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLSLANG_INCLUDE_DIR})
-+ target_link_libraries(${PROJECT_NAME} PRIVATE ${GLSLANG_LIBRARIES} ${SPIRV_LIBRARIES})
- endif()
-
- if(NOT LIBRETRO)
-@@ -356,29 +385,10 @@ if(NOT LIBRETRO)
- endif()
-
- if(NOT ANDROID AND NOT IOS)
-- if(NOT APPLE AND (NOT UNIX OR CMAKE_SYSTEM_NAME MATCHES "(FreeBSD|OpenBSD|NetBSD)"))
-- find_package(SDL2)
-- endif()
-- if(NOT SDL2_FOUND)
-- add_subdirectory(core/deps/SDL EXCLUDE_FROM_ALL)
-- set(SDL2_FOUND 1)
-- endif()
--
-- # SDL2::SDL2main may or may not be available. It is e.g. required by Windows GUI applications
-- if(TARGET SDL2::SDL2main)
-- # It has an implicit dependency on SDL2 functions, so it MUST be added before SDL2::SDL2 (or SDL2::SDL2-static)
-- target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2main)
-- endif()
--
-- if((APPLE OR WIN32) AND TARGET SDL2::SDL2-static)
-- target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2-static)
-- elseif(TARGET SDL2::SDL2)
-- target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2)
-- else()
-- target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
-- target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES})
-- endif()
--
-+ find_package(PkgConfig)
-+ pkg_check_modules(SDL2 REQUIRED sdl2)
-+ target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
-+ target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES})
- target_compile_definitions(${PROJECT_NAME} PRIVATE USE_SDL USE_SDL_AUDIO)
- target_sources(${PROJECT_NAME} PRIVATE core/sdl/sdl.cpp core/sdl/sdl.h core/sdl/sdl_gamepad.h core/sdl/sdl_keyboard.h)
-
-@@ -403,10 +413,6 @@ if(NOT LIBRETRO)
- endif()
- endif()
-
--add_subdirectory(core/deps/libchdr EXCLUDE_FROM_ALL)
--target_link_libraries(${PROJECT_NAME} PRIVATE chdr-static)
--target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libchdr/include)
--
- if(NOT WITH_SYSTEM_ZLIB)
- target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/core/deps/libchdr/deps/zlib-1.2.11")
- target_link_libraries(${PROJECT_NAME} PRIVATE zlib)
-@@ -521,7 +527,7 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
- target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRT})
- endif()
-
-- target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS})
-+ target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} chdr)
- endif()
-
- if(ASAN)
Index: patches/patch-core_deps_VulkanMemoryAllocator_include_vk_mem_alloc_h
===================================================================
RCS file: /cvs/ports/emulators/flycast/patches/patch-core_deps_VulkanMemoryAllocator_include_vk_mem_alloc_h,v
diff -u -p -r1.1.1.1 patch-core_deps_VulkanMemoryAllocator_include_vk_mem_alloc_h
--- patches/patch-core_deps_VulkanMemoryAllocator_include_vk_mem_alloc_h 25 Apr 2023 19:31:43 -0000 1.1.1.1
+++ patches/patch-core_deps_VulkanMemoryAllocator_include_vk_mem_alloc_h 4 Sep 2025 22:54:08 -0000
@@ -3,7 +3,7 @@ define vma_aligned_alloc
Index: core/deps/VulkanMemoryAllocator/include/vk_mem_alloc.h
--- core/deps/VulkanMemoryAllocator/include/vk_mem_alloc.h.orig
+++ core/deps/VulkanMemoryAllocator/include/vk_mem_alloc.h
-@@ -2669,7 +2669,7 @@ static void* vma_aligned_alloc(size_t alignment, size_
+@@ -2757,7 +2757,7 @@ static void* vma_aligned_alloc(size_t alignment, size_
return memalign(alignment, size);
}
Index: patches/patch-core_rend_vulkan_compiler_cpp
===================================================================
RCS file: patches/patch-core_rend_vulkan_compiler_cpp
diff -N patches/patch-core_rend_vulkan_compiler_cpp
--- patches/patch-core_rend_vulkan_compiler_cpp 30 Apr 2023 19:39:39 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-error: excess elements in scalar initializer
-
-undo 8d0654c323028d9d31f67c51d65e99b410a91750 as done in gentoo port
-
-see:
-https://github.com/gentoo/guru/commit/a960b203c4ba687f0eb08e774d919982e791535c
-
-Index: core/rend/vulkan/compiler.cpp
---- core/rend/vulkan/compiler.cpp.orig
-+++ core/rend/vulkan/compiler.cpp
-@@ -115,6 +115,15 @@ static const TBuiltInResource DefaultTBuiltInResource
- /* .maxTaskWorkGroupSizeY_NV = */ 1,
- /* .maxTaskWorkGroupSizeZ_NV = */ 1,
- /* .maxMeshViewCountNV = */ 4,
-+ /* .maxMeshOutputVerticesEXT = */ 256,
-+ /* .maxMeshOutputPrimitivesEXT = */ 256,
-+ /* .maxMeshWorkGroupSizeX_EXT = */ 128,
-+ /* .maxMeshWorkGroupSizeY_EXT = */ 128,
-+ /* .maxMeshWorkGroupSizeZ_EXT = */ 128,
-+ /* .maxTaskWorkGroupSizeX_EXT = */ 128,
-+ /* .maxTaskWorkGroupSizeY_EXT = */ 128,
-+ /* .maxTaskWorkGroupSizeZ_EXT = */ 128,
-+ /* .maxMeshViewCountEXT = */ 4,
- /* .maxDualSourceDrawBuffersEXT = */ 1,
-
- /* .limits = */ {
Index: patches/patch-core_rend_vulkan_vulkan_context_cpp
===================================================================
RCS file: patches/patch-core_rend_vulkan_vulkan_context_cpp
diff -N patches/patch-core_rend_vulkan_vulkan_context_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-core_rend_vulkan_vulkan_context_cpp 4 Sep 2025 22:54:08 -0000
@@ -0,0 +1,13 @@
+include set for too few template arguments for set; from gentoo guru overlay
+
+Index: core/rend/vulkan/vulkan_context.cpp
+--- core/rend/vulkan/vulkan_context.cpp.orig
++++ core/rend/vulkan/vulkan_context.cpp
+@@ -33,6 +33,7 @@
+ #include "oslib/oslib.h"
+ #include "vulkan_driver.h"
+ #include "rend/transform_matrix.h"
++#include <set>
+ #if defined(__ANDROID__) && HOST_CPU == CPU_ARM64
+ #include "adreno.h"
+ #endif
update emulators/flycast-2.5