Here is an inline diff to update emulators/flycast to 2.2, which was released on October 28, 2023.
release notes: https://github.com/flyinghead/flycast/releases/tag/v2.2 - use DIST_TUPLE for the git submodules, so I do not need to roll my own tarball. delete dist target and SITES. - move SUBST_CMD fropm do-gen to pre-configure and add in a line to delete bundled deps. I omitted deletion of the git submodules deps (e.g., SDL, breakpad, glslang...) since those directories would be empty anyways. - garbage collect patch-core_rend_vulkan_compiler_cpp patch since it builds fine without this. - in CMakeLists.txt patch, statically link in glslang-default-resource-limits.a, as provided by graphics/glslang. This shows up during linking as: --8<---------------cut here---------------start------------->8--- /usr/local/lib/libglslang.so.4.0 /usr/local/lib/libglslang-default-resource-limits.a /usr/local/lib/libSPIRV.so.3.0 --8<---------------cut here---------------end--------------->8--- Runtime works in my testing. Feedback and tests are welcome. OK? Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/flycast/Makefile,v retrieving revision 1.5 diff -u -p -u -p -r1.5 Makefile --- Makefile 21 Sep 2023 13:10:26 -0000 1.5 +++ Makefile 5 Nov 2023 01:35:33 -0000 @@ -5,10 +5,11 @@ ONLY_FOR_ARCHS = amd64 COMMENT = emulator for Sega Dreamcast and Sega Naomi based on reicast -V = 2.1pl20230303 +V = 2.2 DISTNAME = flycast-${V} -COMMIT = 27b6bafd0f003c8f8bcd1fb3bfd48a3523b298f5 -REVISION = 1 +DIST_TUPLE += github flyinghead flycast v${V} . # GPLv2 +DIST_TUPLE += github GPUOpen-LibrariesAndSDKs VulkanMemoryAllocator 6eb62e1515072827db992c2befd80b71b2d04329 core/deps/VulkanMemoryAllocator # MIT +DIST_TUPLE += github KhronosGroup Vulkan-Headers 85c2334e92e215cce34e8e0ed8b2dce4700f4a50 core/deps/Vulkan-Headers # Apache 2.0 CATEGORIES = emulators games @@ -28,8 +29,6 @@ PERMIT_PACKAGE = Yes WANTLIB += ${COMPILER_LIBCXX} GL SDL2 SPIRV ao c curl chdr glslang WANTLIB += lua${MODLUA_VERSION} m miniupnpc pulse vulkan xxhash z zip -SITES = https://namtsui.com/source/ - NO_TEST = Yes FIX_CRLF_FILES = core/deps/VulkanMemoryAllocator/include/vk_mem_alloc.h @@ -42,9 +41,6 @@ MODULES = devel/cmake \ MODLUA_VERSION = 5.3 -WRKDIST = ${WRKDIR}/flycast -WRKSRC = ${WRKDIST} - USE_WXNEEDED = Yes BUILD_DEPENDS = lang/luabridge @@ -59,22 +55,11 @@ LIB_DEPENDS = archivers/libzip \ net/miniupnp/miniupnpc \ sysutils/xxhash -do-gen: +pre-configure: ${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}; +.for D in dirent libretro-common libzip miniupnpc xxHash + rm -rfv ${WRKSRC}/core/deps/${D} +.endfor do-install: ${INSTALL_PROGRAM} ${WRKBUILD}/flycast \ Index: distinfo =================================================================== RCS file: /cvs/ports/emulators/flycast/distinfo,v retrieving revision 1.2 diff -u -p -u -p -r1.2 distinfo --- distinfo 30 Apr 2023 19:39:39 -0000 1.2 +++ distinfo 5 Nov 2023 01:35:33 -0000 @@ -1,2 +1,6 @@ -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 (flyinghead-flycast-v2.2.tar.gz) = O4275BXyUr/qPWVZQjq2WB79j/CKtRshrsb9tmky0yA= +SIZE (GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator-6eb62e1515072827db992c2befd80b71b2d04329.tar.gz) = 877925 +SIZE (KhronosGroup-Vulkan-Headers-85c2334e92e215cce34e8e0ed8b2dce4700f4a50.tar.gz) = 2046570 +SIZE (flyinghead-flycast-v2.2.tar.gz) = 14510385 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /cvs/ports/emulators/flycast/patches/patch-CMakeLists_txt,v retrieving revision 1.2 diff -u -p -u -p -r1.2 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 30 Apr 2023 19:39:39 -0000 1.2 +++ patches/patch-CMakeLists_txt 5 Nov 2023 01:35:33 -0000 @@ -5,8 +5,8 @@ link against -lSDL2 instead of libSDL2.a 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.") +@@ -44,6 +44,11 @@ if(NOT APPLE AND (NOT UNIX OR CMAKE_SYSTEM_NAME MATCHE + set(USE_HOST_SDL_DEFAULT ON) endif() +include_directories( ${LOCALBASE}/include @@ -17,7 +17,7 @@ Index: CMakeLists.txt 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() +@@ -366,8 +371,11 @@ endif() option(BUILD_SHARED_LIBS "Build shared library" OFF) set(XXHASH_BUILD_XXHSUM OFF CACHE BOOL "Build the xxhsum binary") @@ -31,18 +31,22 @@ 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) +@@ -380,8 +388,38 @@ if(USE_VULKAN) + option(ENABLE_GLSLANG_BINARIES "Builds glslang 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) +- target_link_libraries(${PROJECT_NAME} PRIVATE glslang-default-resource-limits 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(GLSLANG_RESOURCE_LIMITS_LIBRARIES glslang-default-resource-limits) ++ if (GLSLANG_RESOURCE_LIMITS_LIBRARIES) ++ set(GLSLANG_RESOURCE_LIMITS_FOUND 1) ++ endif (GLSLANG_RESOURCE_LIMITS_LIBRARIES) + find_library(SPIRV_LIBRARIES SPIRV) + if (SPIRV_LIBRARIES) + set(SPIRV_FOUND 1) @@ -53,21 +57,26 @@ Index: CMakeLists.txt + else() + message(STATUS "glslang library not found.") + endif() ++ if (GLSLANG_RESOURCE_LIMITS_FOUND) ++ message(STATUS "Found glslang-default-resource-limits.a: ${GLSLANG_RESOURCE_LIMITS_LIBRARIES}") ++ else() ++ message(STATUS "glslang-default-resource-limits.a 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}) ++ target_link_libraries(${PROJECT_NAME} PRIVATE ${GLSLANG_LIBRARIES} ${GLSLANG_RESOURCE_LIMITS_LIBRARIES} ${SPIRV_LIBRARIES}) endif() if(NOT LIBRETRO) -@@ -356,29 +385,10 @@ if(NOT LIBRETRO) +@@ -397,29 +435,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)")) +- if(USE_HOST_SDL) - find_package(SDL2) - endif() - if(NOT SDL2_FOUND) @@ -97,7 +106,7 @@ Index: CMakeLists.txt 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) +@@ -444,10 +463,6 @@ if(NOT LIBRETRO) endif() endif() @@ -108,7 +117,7 @@ Index: CMakeLists.txt 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) +@@ -562,7 +577,7 @@ if(UNIX AND NOT APPLE AND NOT ANDROID) target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRT}) endif() 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 retrieving revision 1.1.1.1 diff -u -p -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 5 Nov 2023 01:35:33 -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 = */ {