Index | Thread | Search

From:
Nam Nguyen <namn@messagemode2.com>
Subject:
update emulators/flycast-2.5
To:
ports@openbsd.org
Date:
Thu, 04 Sep 2025 18:13:31 -0700

Download raw body.

Thread
Please find an inline diff updating emulators/flycast-2.5.

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