Saturday, November 04, 2023

update emulators/flycast 2.2

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 = */ {

No comments:

Post a Comment