~ruther/guix-local

204954e7d5efd05a77091e83406d126df2369736 — Andrew Wong 1 year, 4 months ago 4ea012f
gnu: Add flycast.

* gnu/packages/emulators.scm (flycast): New variable.

Change-Id: I358235492a3493c3126f7ca9f738ed2706e36105
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
1 files changed, 69 insertions(+), 0 deletions(-)

M gnu/packages/emulators.scm
M gnu/packages/emulators.scm => gnu/packages/emulators.scm +69 -0
@@ 23,6 23,7 @@
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2025 Andrew Wong <wongandj@icloud.comg>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 4063,6 4064,74 @@ on a Commodore C64, C128 etc.")
    ;; zlib license with an (non-)advertising clause.
    (license license:zlib)))

(define-public flycast
  (package
    (name "flycast")
    (version "2.4")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/flyinghead/flycast")
             (commit (string-append "v" version))
             ;; There are many bundled packages here included as git
             ;; submodules. Removing many of them would require patching the
             ;; source code and repository layout.
             (recursive? #t)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0ainy75gkrvilcm89hq6wq9md41w0mxgp6l27q5fzrxxykpjh6ym"))
       (modules '((guix build utils)))
       (snippet #~(begin
                    (substitute* "CMakeLists.txt"
                      (("add_subdirectory\\(core/deps/Vulkan-Headers\\)")
                       "find_package(VulkanHeaders)"))
                    (with-directory-excursion "core/deps"
                      (for-each delete-file-recursively
                                '("SDL"
                                  "Spout"
                                  "Syphon"
                                  "Vulkan-Headers"
                                  "breakpad"
                                  "discord-rpc"
                                  "libzip"
                                  "oboe")))))))
    (build-system cmake-build-system)
    (arguments
     (list
      #:tests? #f ; no test suite
      #:configure-flags
      #~(list "-DUSE_ALSA=ON"
              "-DUSE_BREAKPAD=OFF"
              "-DUSE_DX11=OFF"
              "-DUSE_DX9=OFF"
              ;; The USE_HOST_GLSLANG option is not implemented correctly.
              ;; (see: https://github.com/flyinghead/flycast/issues/1843)
              "-DUSE_HOST_GLSLANG=OFF"
              "-DUSE_HOST_LIBZIP=ON"
              "-DUSE_HOST_SDL=ON"
              "-DUSE_LIBAO=ON"
              "-DUSE_LUA=ON"
              "-DUSE_PULSEAUDIO=ON"
              "-DUSE_VULKAN=ON")))
    (inputs (list alsa-lib
                  ao
                  curl
                  glslang
                  libzip
                  lua
                  miniupnpc
                  pulseaudio
                  sdl2
                  spirv-tools
                  vulkan-headers
                  pkg-config))
    (home-page "https://github.com/flyinghead/flycast")
    (synopsis "Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator")
    (description "Flycast is a multi-platform Sega Dreamcast, Naomi, Naomi 2,
and Atomiswave emulator derived from reicast.")
    (license license:gpl2+)))

(define-public freedisksysrom
  ;; There is no release; use the latest commit.
  (let ((commit "0d5f95f109bb3aadf2bb9510bfda13879bbd5266")