From: Nam Nguyen Subject: update emulators/flycast-2.5 To: ports@openbsd.org Date: Thu, 04 Sep 2025 18:13:31 -0700 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 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 -# 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 + #if defined(__ANDROID__) && HOST_CPU == CPU_ARM64 + #include "adreno.h" + #endif