logo

overlay

My own overlay for experimentations, use with caution, no support is provided git clone https://anongit.hacktivis.me/git/overlay.git/

flycast-2.4.ebuild (5990B)


  1. # Copyright 2022-2024 Gentoo Authors
  2. # Distributed under the terms of the GNU General Public License v2
  3. EAPI=8
  4. LUA_COMPAT=(lua5-4)
  5. inherit cmake flag-o-matic lua-single xdg
  6. if [[ "${PV}" = 9999* ]]; then
  7. inherit git-r3
  8. EGIT_REPO_URI="https://github.com/flyinghead/flycast"
  9. # 'core/deps/breakpad'
  10. EGIT_SUBMODULES=( 'core/deps/luabridge' 'core/deps/rcheevos' )
  11. else
  12. # MINGW_BREAKPAD_COMMIT="1ab24bcc817ebe629bf77daa53529d02361cb1e9"
  13. LUABRIDGE_COMMIT="fab7b33b896a42dcc865ba5ecdbacd9f40"
  14. RCHEEVOS_COMMIT="563230b1c249774b4852c944dc7cdcb952c9e8e8"
  15. VULKAN_ALLOC_COMMIT="6eb62e1515072827db992c2befd80b71b2d04329"
  16. # https://github.com/flyinghead/mingw-breakpad/archive/${MINGW_BREAKPAD_COMMIT}.tar.gz -> mingw-breakpad-${MINGW_BREAKPAD_COMMIT}.tar.gz
  17. SRC_URI="
  18. https://github.com/flyinghead/flycast/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
  19. lua? ( https://github.com/vinniefalco/LuaBridge/archive/${LUABRIDGE_COMMIT}.tar.gz -> LuaBridge-${LUABRIDGE_COMMIT}.tar.gz )
  20. https://github.com/RetroAchievements/rcheevos/archive/${RCHEEVOS_COMMIT}.tar.gz -> rcheevos-${RCHEEVOS_COMMIT}.tar.gz
  21. vulkan? ( https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/${VULKAN_ALLOC_COMMIT}.tar.gz -> VulkanMemoryAllocator-${VULKAN_ALLOC_COMMIT}.tar.gz )
  22. "
  23. KEYWORDS="~amd64"
  24. fi
  25. DESCRIPTION="Sega Dreamcast, Naomi and Atomiswave emulator"
  26. HOMEPAGE="https://github.com/flyinghead/flycast"
  27. LICENSE="GPL-2"
  28. SLOT="0"
  29. IUSE="alsa ao lua opengl +openmp pulseaudio vulkan"
  30. DEPEND="
  31. dev-libs/libchdr
  32. dev-libs/libzip
  33. dev-libs/xxhash
  34. media-libs/libsdl2
  35. net-libs/miniupnpc
  36. sys-libs/zlib
  37. alsa? ( media-libs/alsa-lib )
  38. ao? ( media-libs/libao )
  39. lua? ( ${LUA_DEPS} )
  40. opengl? ( virtual/opengl )
  41. openmp? ( sys-devel/gcc:*[openmp] )
  42. pulseaudio? ( media-libs/libpulse )
  43. vulkan? (
  44. >=dev-util/glslang-1.3.231:=
  45. dev-util/spirv-headers
  46. )
  47. "
  48. RDEPEND="${DEPEND}"
  49. REQUIRED_USE="|| ( opengl vulkan ) || ( ao alsa pulseaudio )"
  50. if [[ "${PV}" = 9999* ]]; then
  51. src_unpack() {
  52. use lua && EGIT_SUBMODULES+=( 'core/deps/luabridge' )
  53. use vulkan && EGIT_SUBMODULES+=( 'core/deps/VulkanMemoryAllocator' )
  54. git-r3_src_unpack
  55. }
  56. fi
  57. src_prepare() {
  58. # Ensure unneeded deps are not bundled
  59. for dep in chdr dirent glslang libretro-common libzip miniupnpc oboe patches SDL vixl xxHash; do
  60. rm -rf core/deps/${dep} || die
  61. done
  62. if ! [[ "${PV}" = 9999* ]]; then
  63. rm -fr core/deps/breakpad || die
  64. #mv "${WORKDIR}/mingw-breakpad-${MINGW_BREAKPAD_COMMIT}" core/deps/breakpad || die
  65. rm -fr core/deps/luabridge || die
  66. if use lua; then
  67. mv "${WORKDIR}/LuaBridge-${LUABRIDGE_COMMIT}" core/deps/luabridge || die
  68. fi
  69. rm -fr core/deps/rcheevos || die
  70. mv "${WORKDIR}/rcheevos-${RCHEEVOS_COMMIT}" core/deps/rcheevos || die
  71. rm -fr core/deps/VulkanMemoryAllocator || die
  72. if use vulkan; then
  73. mv "${WORKDIR}/VulkanMemoryAllocator-${VULKAN_ALLOC_COMMIT}" core/deps/VulkanMemoryAllocator || die
  74. fi
  75. fi
  76. # Skip alsa if flag not enabled
  77. if use !alsa; then
  78. sed -i -e '/find_package(ALSA)/d' CMakeLists.txt || die
  79. fi
  80. # Skip ao if flag not enabled
  81. if use !ao; then
  82. sed -i -e '/pkg_check_modules(AO/d' CMakeLists.txt || die
  83. fi
  84. if use lua; then # Lua 5.2 not available in gentoo anymore
  85. sed -i -e '/find_package(Lua/s/5.2/5.4/' CMakeLists.txt || die
  86. else # Skip lua if flag not enabled
  87. sed -i -e '/find_package(Lua/d' CMakeLists.txt || die
  88. fi
  89. # Skip pulseaudio if flag not enabled
  90. if use !pulseaudio; then
  91. sed -i -e '/pkg_check_modules(LIBPULSE/d' CMakeLists.txt || die
  92. fi
  93. # Unbundle xxHash
  94. sed -i -e '/XXHASH_BUILD_XXHSUM/{N;N;s/.*/target_link_libraries(${PROJECT_NAME} PRIVATE xxhash)/}' \
  95. CMakeLists.txt || die
  96. # Unbundle chdr
  97. sed -i -e '/add_subdirectory.*chdr/d' -e 's/chdr-static/chdr/' \
  98. -e 's:core/deps/chdr/include:/usr/include/chdr:' CMakeLists.txt || die
  99. # Do not use ccache
  100. sed -i -e '/find_program(CCACHE_FOUND/d' CMakeLists.txt || die
  101. # Ensure static libs are not built
  102. sed -i -e '/BUILD_SHARED_LIBS/d' CMakeLists.txt || die
  103. # Vulkan-header
  104. sed -i -e '/add_subdirectory(core.*Vulkan-Headers)$/,/Vulkan::Headers/d' \
  105. -e '/core\/deps\/Vulkan-Headers\/include)/d' CMakeLists.txt || die
  106. sed -i -e '/ResourceLimits.h/a#include <glslang/Public/ShaderLang.h>' \
  107. core/rend/vulkan/compiler.cpp || die
  108. if use vulkan; then
  109. sed -i -e '$atarget_link_libraries(${PROJECT_NAME} PRIVATE glslang glslang-default-resource-limits)' CMakeLists.txt || die
  110. if has_version '>=dev-util/glslang-1.3.261'; then
  111. sed -i -e 's/throwResultException/detail::throwResultException/' core/rend/vulkan/vmallocator.{h,cpp} || die
  112. fi
  113. grep -rl 'vk::resultCheck' | xargs sed -i -e 's/vk::resultCheck/vk::detail::resultCheck/g'
  114. sed -i -e '/end\/transform_matrix.h/a#include <set>' core/rend/vulkan/vulkan_context.cpp || die
  115. fi
  116. # Do not use ccache
  117. sed -i -e '/find_program(CCACHE_PROGRAM ccache)/d' CMakeLists.txt || die
  118. # Unbundle SDL under linux: (revert crazy commit: #4408aa7)
  119. sed -i -e '/if(NOT APPLE AND (/s/.*/if( NOT APPLE )/' CMakeLists.txt || die
  120. # Fix cmake version
  121. sed -i -e '/cmake_minimum_required/s/2.6.*$/3.20)/' core/deps/xbyak/CMakeLists.txt || die
  122. sed -i -e 's/3.2/3.20/' core/deps/glm/CMakeLists.txt || die
  123. append-cxxflags -Wno-unused-result
  124. # Cleanup mingw-breakpad blobs
  125. #rm -f \
  126. # core/deps/breakpad/src/client/mac/gcov/libgcov.a \
  127. # core/deps/breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o \
  128. # core/deps/breakpad/src/tools/windows/dump_syms/testdata/pe_only_symbol_test.dll \
  129. # core/deps/breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.exe \
  130. # core/deps/breakpad/src/tools/windows/binaries/symupload.exe \
  131. # core/deps/breakpad/src/tools/windows/binaries/dump_syms.exe || die
  132. cmake_src_prepare
  133. }
  134. src_configure() {
  135. local mycmakeargs=(
  136. -DUSE_BREAKPAD=OFF
  137. -DUSE_OPENGL=$(usex opengl)
  138. -DUSE_OPENMP=$(usex openmp)
  139. -DUSE_VULKAN=$(usex vulkan)
  140. -DUSE_HOST_LIBZIP=ON
  141. -DUSE_HOST_GLSLANG=ON
  142. -DUSE_HOST_SDL=ON
  143. -DWITH_SYSTEM_ZLIB=ON
  144. )
  145. cmake_src_configure
  146. }