summaryrefslogtreecommitdiff
path: root/gnu/packages/emulators.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/emulators.scm')
-rw-r--r--gnu/packages/emulators.scm972
1 files changed, 439 insertions, 533 deletions
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 84fb848b4f..b260ca38f7 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2015, 2018 David Thompson <[email protected]>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <[email protected]>
;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <[email protected]>
-;;; Copyright © 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou <[email protected]>
+;;; Copyright © 2017-2022 Nicolas Goaziou <[email protected]>
;;; Copyright © 2017, 2020, 2021 Tobias Geerinckx-Rice <[email protected]>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <[email protected]>
;;; Copyright © 2019 Pierre Neidhardt <[email protected]>
@@ -16,6 +16,7 @@
;;; Copyright © 2021 Felipe Balbi <[email protected]>
;;; Copyright © 2021 Felix Gruber <[email protected]>
;;; Copyright © 2021 Maxim Cournoyer <[email protected]>
+;;; Copyright © 2021 Guillaume Le Vaillant <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -35,6 +36,7 @@
(define-module (gnu packages emulators)
#:use-module (ice-9 match)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -47,10 +49,12 @@
#:use-module (gnu packages audio)
#:use-module (gnu packages autogen)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages backup)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
- #:use-module (gnu packages backup)
+ #:use-module (gnu packages build-tools)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -102,38 +106,39 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system python))
(define-public vice
(package
(name "vice")
- (version "3.5")
+ (version "3.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/vice-emu/releases/"
"vice-" version ".tar.gz"))
(sha256
- (base32
- "03nwcldg2h7dxj6aa77ggqc0442hqc1lsq5x69h8kcmqmvx7ifan"))))
+ (base32 "1zfkl9j40v2417l1fmczdvl9yzh81jlpcy5cl2svjzb2rrffbgv5"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags '("--disable-pdf-docs")))
+ `(#:configure-flags '("--disable-html-docs"
+ "--disable-pdf-docs")))
(native-inputs
- `(("bison" ,bison)
- ("dos2unix" ,dos2unix)
- ("flex" ,flex)
- ("glib" ,glib "bin") ; for glib-genmarshal, etc.
- ("pkg-config" ,pkg-config)))
+ (list bison
+ dos2unix
+ flex
+ `(,glib "bin") ; for glib-genmarshal, etc.
+ pkg-config))
(inputs
- `(("alsa-lib" ,alsa-lib)
- ("glew" ,glew)
- ("glib" ,glib)
- ("gtk+" ,gtk+)
- ("pulseaudio" ,pulseaudio)
- ("sdl" ,sdl)
- ("sdl-image" ,sdl-image)
- ("xa" ,xa)))
+ (list alsa-lib
+ glew
+ glib
+ gtk+
+ pulseaudio
+ sdl
+ sdl-image
+ xa))
(home-page "https://vice-emu.sourceforge.io/")
(synopsis "The versatile Commodore emulator")
(description
@@ -184,7 +189,10 @@ SuperCPU.")
(add-after 'unpack 'fix-source
(lambda _
(substitute* (find-files "." ".*\\.[ch]")
- (("\"zlib/zlib.h\"") "<zlib.h>"))))
+ (("\"zlib/zlib.h\"") "<zlib.h>"))
+ (substitute* "Makefile"
+ (("CFLAGS:=-std=gnu99" all)
+ (string-append all " -fcommon")))))
(delete 'configure)
(replace 'install
(lambda* args
@@ -197,12 +205,9 @@ SuperCPU.")
("shaders" "share/blastem/shaders"))
args))))))
(inputs
- `(("glew" ,glew)
- ("mesa" ,mesa)
- ("sdl2" ,sdl2)
- ("zlib" ,zlib)))
+ (list glew mesa sdl2 zlib))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(home-page "https://www.retrodev.com/blastem/")
(synopsis "Genesis/Mega Drive emulator")
(description "Blastem is an emulator for the Sega Genesis/Mega Drive
@@ -230,14 +235,9 @@ console.")
`(#:configure-flags '("--enable-wifi"
"--enable-openal")))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("intltool" ,intltool)))
+ (list pkg-config intltool))
(inputs
- `(("zlib" ,zlib)
- ("sdl" ,sdl)
- ("glib" ,glib)
- ("gtk+" ,gtk+-2)
- ("glu" ,glu)))
+ (list zlib sdl glib gtk+-2 glu))
(home-page "http://desmume.org/")
(synopsis "Nintendo DS emulator")
(description
@@ -284,11 +284,10 @@ console.")
(add-before 'configure 'generate-fonts&hardcore-libvulkan-path
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((fontfile
- (string-append (assoc-ref inputs "font-wqy-microhei")
- "/share/fonts/truetype/wqy-microhei.ttc"))
+ (search-input-file inputs
+ "/share/fonts/truetype/wqy-microhei.ttc"))
(libvulkan
- (string-append (assoc-ref inputs "vulkan-loader")
- "/lib/libvulkan.so")))
+ (search-input-file inputs "/lib/libvulkan.so")))
(chdir "docs")
(invoke "bash" "-c" "g++ -O2 $(freetype-config \
--cflags --libs) gc-font-tool.cpp -o gc-font-tool")
@@ -318,39 +317,39 @@ console.")
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)))
(inputs
- `(("alsa-lib" ,alsa-lib)
- ("ao" ,ao)
- ("bluez" ,bluez)
- ("curl" ,curl)
- ("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
- ("font-wqy-microhei" ,font-wqy-microhei)
- ("freetype" ,freetype)
- ("glew" ,glew)
- ("glib" ,glib)
- ("glu" ,glu)
- ("gtk+" ,gtk+-2)
- ("hidapi" ,hidapi)
- ("libevdev" ,libevdev)
- ("libpng" ,libpng)
- ("libusb" ,libusb)
- ("libx11" ,libx11)
- ("libxi" ,libxi)
- ("libxrandr" ,libxrandr)
- ("lzo" ,lzo)
- ("mbedtls-apache" ,mbedtls-apache)
- ("mesa" ,mesa)
- ("miniupnpc" ,miniupnpc)
- ("openal" ,openal)
- ("pugixml" ,pugixml)
- ("pulseaudio" ,pulseaudio)
- ("qtbase" ,qtbase-5)
- ("sdl2" ,sdl2)
- ("sfml" ,sfml)
- ("soil" ,soil)
- ("soundtouch" ,soundtouch)
- ("vulkan-loader" ,vulkan-loader)
- ("zlib" ,zlib)))
+ (list alsa-lib
+ ao
+ bluez
+ curl
+ eudev
+ ffmpeg
+ font-wqy-microhei
+ freetype
+ glew
+ glib
+ glu
+ gtk+-2
+ hidapi
+ libevdev
+ libpng
+ libusb
+ libx11
+ libxi
+ libxrandr
+ lzo
+ mbedtls-apache
+ mesa
+ miniupnpc
+ openal
+ pugixml
+ pulseaudio
+ qtbase-5
+ sdl2
+ sfml
+ soil
+ soundtouch
+ vulkan-loader
+ zlib))
(home-page "https://dolphin-emu.org/")
(synopsis "Nintendo Wii and GameCube emulator")
(description
@@ -376,15 +375,14 @@ turbo speed, networked multiplayer, and graphical enhancements.")
"02i648i50dwicv1vaql15rccv4g8h5blf5g6inv67lrfxpbkvlf0"))))
(build-system gnu-build-system)
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)))
+ (list autoconf automake))
(inputs
- `(("sdl" ,sdl)
- ("libpng" ,libpng)
- ("zlib" ,zlib)
- ("alsa-lib" ,alsa-lib)
- ("glu" ,glu)
- ("mesa" ,mesa)))
+ (list sdl
+ libpng
+ zlib
+ alsa-lib
+ glu
+ mesa))
(home-page "https://www.dosbox.com")
(synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
(description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
@@ -398,7 +396,7 @@ older games.")
;; This is not a patch staging area for DOSBox, but an unaffiliated fork.
(package
(name "dosbox-staging")
- (version "0.76.0")
+ (version "0.78.1")
(source
(origin
(method git-fetch)
@@ -407,34 +405,30 @@ older games.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "14zlkm9qmaq2x4zdiadczsxvdnrf35w13ccvkxzd8cwrzxv84fvd"))))
- (build-system gnu-build-system)
+ (base32 "16byip1j9ckq0ik7ilrj0fc9dal3495s48xd21drpbb8q9jwb342"))))
+ (build-system meson-build-system)
(arguments
- `(#:configure-flags
- (let* ((flags (list "-O3"
- ;; From scripts/automator/build/gcc-defaults.
- "-fstrict-aliasing"
- "-fno-signed-zeros"
- "-fno-trapping-math"
- "-fassociative-math"
- "-frename-registers"
- "-ffunction-sections"
- "-fdata-sections"))
- (CFLAGS (string-join flags " ")))
- ;; Several files #include <SDL_net.h> instead of <SDL2/SDL_net.h>,
- ;; including configure.ac itself.
- (list (string-append "CPPFLAGS=-I" (assoc-ref %build-inputs "sdl2")
- "/include/SDL2")
- (string-append "CFLAGS=" CFLAGS)
- (string-append "CXXFLAGS=-DNDEBUG " CFLAGS)))))
+ (list #:configure-flags
+ #~(list
+ ;; These both try to git clone subprojects.
+ "-Dunit_tests=disabled" ; gtest
+ "-Duse_mt32emu=false"
+ ;; Not packaged.
+ "-Duse_slirp=false")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-includes
+ (lambda _
+ (substitute* (find-files "." "\\.(cpp|h)")
+ (("^(#include <)(SDL[_.])" _ include file)
+ (string-append include "SDL2/" file))))))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
`(("alsa-lib" ,alsa-lib)
("fluidsynth" ,fluidsynth)
("libpng" ,libpng)
+ ("mesa" ,mesa)
("opusfile" ,opusfile)
("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
("zlib" ,zlib)))
@@ -515,8 +509,7 @@ emulate a serial nullmodem over TCP/IP.")
#t))))
#:tests? #f)) ; test suite wants mips toolchain
(inputs
- `(("elfutils" ,elfutils)
- ("qtbase" ,qtbase-5)))
+ (list elfutils qtbase-5))
(home-page "https://github.com/cvut/QtMips")
(synopsis "MIPS CPU emulator")
(description "This package contains a MIPS CPU emulator. The simulator
@@ -575,7 +568,7 @@ and a game metadata scraper.")
(base32 "11rvm53c3p2f6zk8xbyv2j51xp8zmqnch7zravhj3fk590qrjrr2"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
`(("alsa-lib" ,alsa-lib)
("ao" ,ao)
@@ -617,8 +610,7 @@ and a game metadata scraper.")
(bin (string-append out "/bin"))
(higan (string-append bin "/higan"))
(higan-original (string-append higan "-original"))
- (bash (string-append (assoc-ref inputs "bash")
- "/bin/bash"))
+ (bash (search-input-file inputs "/bin/bash"))
(coreutils (assoc-ref inputs "coreutils"))
(mkdir (string-append coreutils "/bin/mkdir"))
(cp (string-append coreutils "/bin/cp"))
@@ -663,14 +655,14 @@ V2.")
(define-public mednafen
(package
(name "mednafen")
- (version "1.27.1")
+ (version "1.29.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://mednafen.github.io/releases/files/"
"mednafen-" version ".tar.xz"))
(sha256
- (base32 "1ysmb56wzr17ki6f1b486r2dzjr11igd021qb4r3437l68prpa7k"))))
+ (base32 "0binkxnki8w8jgiyf3xr9503m5cynlf5vylb087vxybp53qbqgys"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -678,7 +670,7 @@ V2.")
;; "--with-external-mpcdec"
"--with-external-lzo")))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
`(("alsa" ,alsa-lib)
("flac" ,flac)
@@ -725,7 +717,7 @@ The following systems are supported:
(define-public mgba
(package
(name "mgba")
- (version "0.9.2")
+ (version "0.9.3")
(source
(origin
(method git-fetch)
@@ -734,7 +726,7 @@ The following systems are supported:
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "16kngkzf08jflqxwbgafb47091vqqb9pbhazg9cd94cy81ahz3q3"))
+ (base32 "1bg4ax5gjkr6d4cpzsgzv3bpa3i2c2b1ckwrjklqiy835b5ni6yi"))
(modules '((guix build utils)))
(snippet
;; Make sure we don't use the bundled software.
@@ -751,22 +743,21 @@ The following systems are supported:
(list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
"-DUSE_LIBZIP=OFF"))) ;use "zlib" instead
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("qttools" ,qttools)))
+ (list pkg-config qttools))
(inputs
- `(("ffmpeg" ,ffmpeg)
- ("libedit" ,libedit)
- ("libelf" ,libelf)
- ("libepoxy" ,libepoxy)
- ("libpng" ,libpng)
- ("mesa" ,mesa)
- ("minizip" ,minizip)
- ("ncurses" ,ncurses)
- ("qtbase" ,qtbase-5)
- ("qtmultimedia" ,qtmultimedia)
- ("sdl2" ,sdl2)
- ("sqlite" ,sqlite)
- ("zlib" ,zlib)))
+ (list ffmpeg
+ libedit
+ libelf
+ libepoxy
+ libpng
+ mesa
+ minizip
+ ncurses
+ qtbase-5
+ qtmultimedia
+ sdl2
+ sqlite
+ zlib))
(home-page "https://mgba.io")
(synopsis "Game Boy Advance emulator")
(description
@@ -781,7 +772,7 @@ and Game Boy Color games.")
(define-public sameboy
(package
(name "sameboy")
- (version "0.14.4")
+ (version "0.14.7")
(source
(origin
(method git-fetch)
@@ -790,13 +781,12 @@ and Game Boy Color games.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0zp11qm8b3cmx70pzczyh4vv4jyhlh4jnci8kn6b30c8lzl43g83"))))
+ (base32 "1r391jdh0gjnx8bwmr63dcdmq58lpm162mng2ncrx53ydbb13xxf"))))
(build-system gnu-build-system)
(native-inputs
- `(("rgbds" ,rgbds)
- ("pkg-config" ,pkg-config)))
+ (list rgbds pkg-config))
(inputs
- `(("sdl2" ,sdl2)))
+ (list sdl2))
(arguments
`(#:tests? #f ; There are no tests
#:make-flags `(,(string-append "CC=" ,(cc-for-target))
@@ -815,8 +805,7 @@ and Game Boy Color games.")
(with-directory-excursion "build/bin/SDL"
(install-file "sameboy" bin)
(delete-file "sameboy")
- (copy-recursively "." data))
- #t))))))
+ (copy-recursively "." data))))))))
(home-page "https://sameboy.github.io/")
(synopsis "Accurate Game Boy, Game Boy Color and Super Game Boy emulator")
(description "SameBoy is a user friendly Game Boy, Game Boy Color
@@ -840,26 +829,26 @@ from an emulator---from save states to scaling filters.")
(base32 "116fndl6652zrp1r6ag4xv3dzp1x52mlvadj8xwflq07fd5rhri1"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("freetype" ,freetype)
- ("glu" ,glu)
- ("libpng" ,libpng)
- ("mesa" ,mesa)
- ("sdl2" ,sdl2)
- ("zlib" ,zlib)))
+ (list freetype
+ glu
+ libpng
+ mesa
+ sdl2
+ zlib))
(arguments
'(#:phases
(modify-phases %standard-phases
;; The mupen64plus build system has no configure phase.
- (delete 'configure)
+ (replace 'configure
+ (lambda _
+ (substitute* "projects/unix/Makefile"
+ (("\\$\\(CFLAGS\\)")
+ "$(CFLAGS) -fcommon"))))
;; Makefile is in a subdirectory.
- (add-before
- 'build 'chdir-to-project-directory
- (lambda _
- (chdir "projects/unix")
- #t)))
+ (add-before 'build 'chdir-to-project-directory
+ (lambda _ (chdir "projects/unix"))))
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list "all" (string-append "PREFIX=" out)))
;; There are no tests.
@@ -889,11 +878,9 @@ core library.")
(base32 "0z19amfg9vr2pqjjri1ipc7hs681fzjcnb0f9y7bjhp5n8d7p6bb"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)))
+ (list mupen64plus-core sdl2))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -935,10 +922,9 @@ SDL audio plugin.")
(base32 "1dyazfbdjycdfslq8jixqiqhziw0rlkvach2r9dz91229jmkyc9c"))))
(build-system gnu-build-system)
(native-inputs
- `(("which" ,which)))
+ (list which))
(inputs
- `(("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)))
+ (list mupen64plus-core sdl2))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -980,7 +966,7 @@ SDL input plugin.")
(base32 "0pi31qzjjp7aypdvvnz6ms18g09c4gqzxi6328zj8sji94b75gf0"))))
(build-system gnu-build-system)
(inputs
- `(("mupen64plus-core" ,mupen64plus-core)))
+ (list mupen64plus-core))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1022,7 +1008,7 @@ high-level emulation (HLE) RSP processor plugin.")
(base32 "0nfyjns9k8xbg3aqs7593nfaxvlj72h3l8h467442xlk8ajfcylx"))))
(build-system gnu-build-system)
(inputs
- `(("mupen64plus-core" ,mupen64plus-core)))
+ (list mupen64plus-core))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1064,11 +1050,9 @@ Z64 RSP processor plugin.")
(base32 "1v9fqwpb6pawr8z5cm2ki7bqkks4iyr5c4jy4v5khj6h8zcv55gc"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("mesa" ,mesa)
- ("mupen64plus-core" ,mupen64plus-core)))
+ (list mesa mupen64plus-core))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1110,12 +1094,9 @@ Arachnoid video plugin.")
(base32 "0qn5za7g7796kh2ag3xpmhbqg0yf71g9liz6ks0rha8pz73lgs01"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("mesa" ,mesa)
- ("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)))
+ (list mesa mupen64plus-core sdl2))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1164,15 +1145,14 @@ Glide64 video plugin.")
(base32 "08pm28a36dpr0cvr8pzw0n5ksdazp7jqvlmqfy2lwb4dm0cwhkqd"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("boost" ,boost)
- ("libpng" ,libpng)
- ("mesa" ,mesa)
- ("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)
- ("zlib" ,zlib)))
+ (list boost
+ libpng
+ mesa
+ mupen64plus-core
+ sdl2
+ zlib))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1214,13 +1194,9 @@ Glide64MK2 video plugin.")
(base32 "0rpmbcq67gsj5h5jjis146378qc1mskskvx20y1ikx59yhbamh13"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("libpng" ,libpng)
- ("mesa" ,mesa)
- ("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)))
+ (list libpng mesa mupen64plus-core sdl2))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1263,12 +1239,9 @@ Rice Video plugin.")
(patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("glew" ,glew)
- ("mupen64plus-core" ,mupen64plus-core)
- ("sdl2" ,sdl2)))
+ (list glew mupen64plus-core sdl2))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1318,10 +1291,9 @@ Z64 video plugin.")
(patches (search-patches "mupen64plus-ui-console-notice.patch"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)))
+ (list pkg-config which))
(inputs
- `(("sdl2" ,sdl2)))
+ (list sdl2))
;; Mupen64Plus supports a single data directory and a single plugin
;; directory in its configuration, yet we need data and plugin files from
;; a variety of packages. The best way to deal with this is to install
@@ -1331,13 +1303,13 @@ Z64 video plugin.")
;; mupen64plus-ui-console-notice also gives users instructions on what
;; they need to do in order to point the configuration to their profile.
(propagated-inputs
- `(("mupen64plus-core" ,mupen64plus-core)
- ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
- ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
- ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
- ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
- ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
- ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
+ (list mupen64plus-core
+ mupen64plus-audio-sdl
+ mupen64plus-input-sdl
+ mupen64plus-rsp-hle
+ mupen64plus-video-glide64
+ mupen64plus-video-glide64mk2
+ mupen64plus-video-rice))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1382,10 +1354,7 @@ towards a working Mupen64Plus for casual users.")
(base32 "1g19gz33jav00rwzkpcnynf5ps41vl64a9qx0xjd6lva4bgn8s57"))))
(build-system gnu-build-system)
(native-inputs
- `(("autoconf" ,autoconf)
- ("autoconf-archive" ,autoconf-archive)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)))
+ (list autoconf autoconf-archive automake pkg-config))
(inputs
`(("fltk" ,fltk)
("fontconfig", fontconfig)
@@ -1445,7 +1414,7 @@ as RetroArch.")
(define-public retroarch
(package
(name "retroarch")
- (version "1.9.4")
+ (version "1.9.11")
(source
(origin
(method git-fetch)
@@ -1454,7 +1423,7 @@ as RetroArch.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1wky28y52nsjmannks3y1hbjgw0dvqh85gxrllr98f9y7kvk1cvf"))
+ (base32 "0hd77kw1f655s40qcz1righdhd9czqyy40rf7gigdag1bkchdx6z"))
(patches
(search-patches "retroarch-LIBRETRO_DIRECTORY.patch"))))
(build-system gnu-build-system)
@@ -1516,9 +1485,7 @@ as RetroArch.")
("wayland" ,wayland)
("zlib" ,zlib)))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("wayland-protocols" ,wayland-protocols)
- ("which" ,which)))
+ (list pkg-config wayland-protocols which))
(native-search-paths
(list (search-path-specification
(variable "LIBRETRO_DIRECTORY")
@@ -1537,14 +1504,14 @@ multi-system game/emulator system.")
(define-public scummvm
(package
(name "scummvm")
- (version "2.2.0")
+ (version "2.5.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://downloads.scummvm.org/frs/scummvm/" version
"/scummvm-" version ".tar.xz"))
(sha256
- (base32 "11vknasm5dna2vqr6gk343qynh7nhsq3kf60zayarn1vb5z6as8l"))))
+ (base32 "00az0dm85kh8rq0yqj74x0c5zrq4ybvwvnilijzl8qa5whwdpn4z"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;require "git"
@@ -1554,34 +1521,35 @@ multi-system game/emulator system.")
(replace 'configure
;; configure does not work followed by both "SHELL=..." and
;; "CONFIG_SHELL=..."; set environment variables instead
- (lambda* (#:key outputs configure-flags #:allow-other-keys)
+ (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
- (bash (which "bash"))
+ (bash (search-input-file inputs "/bin/bash"))
(flags `(,(string-append "--prefix=" out)
,@configure-flags)))
(setenv "SHELL" bash)
(setenv "CONFIG_SHELL" bash)
(apply invoke "./configure" flags)))))))
(native-inputs
- `(("nasm" ,nasm)
- ("pkg-config" ,pkg-config)))
+ (list nasm pkg-config))
(inputs
- `(("alsa-lib" ,alsa-lib)
- ("faad2" ,faad2)
- ("fluidsynth" ,fluidsynth)
- ("freetype" ,freetype)
- ("fribidi" ,fribidi)
- ("liba52" ,liba52)
- ("libflac" ,flac)
- ("libjpeg-turbo" ,libjpeg-turbo)
- ("libmad" ,libmad)
- ("libmpeg2" ,libmpeg2)
- ("libogg" ,libogg)
- ("libpng" ,libpng)
- ("libtheora" ,libtheora)
- ("libvorbis" ,libvorbis)
- ("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
- ("zlib" ,zlib)))
+ (list alsa-lib
+ faad2
+ fluidsynth
+ freetype
+ fribidi
+ glew
+ giflib
+ liba52
+ flac
+ libjpeg-turbo
+ libmad
+ libmpeg2
+ libogg
+ libpng
+ libtheora
+ libvorbis
+ (sdl-union (list sdl2 sdl2-net))
+ zlib))
(home-page "https://www.scummvm.org/")
(synopsis "Engine for several graphical adventure games")
(description "ScummVM is a program which allows you to run certain
@@ -1615,15 +1583,14 @@ play them on systems for which they were never designed!")
(chdir (string-append "libticables2-" ,version))
#t)))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("autogen" ,autogen)
- ("automake" ,automake)
- ("gettext" ,gnu-gettext)
- ("libtool" ,libtool)
- ("pkg-config" ,pkg-config)))
+ (list autoconf
+ autogen
+ automake
+ gnu-gettext
+ libtool
+ pkg-config))
(inputs
- `(("glib" ,glib)
- ("libusb" ,libusb)))
+ (list glib libusb))
(synopsis "Link cable library for TI calculators")
(description
"This package contains libticables, a library for operations on
@@ -1658,12 +1625,9 @@ This is a part of the TiLP project.")
(chdir (string-append "libticonv-" ,version))
#t)))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("libtool" ,libtool)
- ("pkg-config" ,pkg-config)))
+ (list autoconf automake libtool pkg-config))
(inputs
- `(("glib" ,glib)))
+ (list glib))
(synopsis "Character conversion library for TI calculators")
(description
"This package contains libticonv, a library to support working with
@@ -1696,15 +1660,9 @@ This is a part of the TiLP project.")
(chdir (string-append "libtifiles2-" ,version))
#t)))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("gettext" ,gnu-gettext)
- ("libtool" ,libtool)
- ("pkg-config" ,pkg-config)))
+ (list autoconf automake gnu-gettext libtool pkg-config))
(inputs
- `(("glib" ,glib)
- ("libarchive" ,libarchive)
- ("libticonv" ,libticonv)))
+ (list glib libarchive libticonv))
(synopsis "File functions library for TI calculators")
(description
"This package contains libticonv, a library to support working with
@@ -1737,17 +1695,9 @@ This is a part of the TiLP project.")
(chdir (string-append "libticalcs2-" ,version))
#t)))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("gettext" ,gnu-gettext)
- ("libtool" ,libtool)
- ("pkg-config" ,pkg-config)))
+ (list autoconf automake gnu-gettext libtool pkg-config))
(inputs
- `(("glib" ,glib)
- ("libarchive" ,libarchive)
- ("libticables2" ,libticables2)
- ("libticonv" ,libticonv)
- ("libtifiles2" ,libtifiles2)))
+ (list glib libarchive libticables2 libticonv libtifiles2))
(synopsis "Support library for TI calculators")
(description
"This project aims to develop a multi-platform linking program for use
@@ -1761,7 +1711,7 @@ This is a part of the TiLP project.")
(define-public mame
(package
(name "mame")
- (version "0.236")
+ (version "0.239")
(source
(origin
(method git-fetch)
@@ -1770,7 +1720,7 @@ This is a part of the TiLP project.")
(commit (apply string-append "mame" (string-split version #\.)))))
(file-name (git-file-name name version))
(sha256
- (base32 "0pxvvdirbwakl5cy7lp0zib6z176ckxx8c3mazsd7q1ddxxd3l8x"))
+ (base32 "02by0pq0j8pi5dllk90g94nbszynp9wqg75bl5x8bqrc7h80a0dq"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries.
@@ -1782,21 +1732,20 @@ This is a part of the TiLP project.")
"SDL2-override" "sqlite3" "utf8proc" "zlib")))))))
(build-system gnu-build-system)
(arguments
- `(#:make-flags
- (cons*
- ;; A 'strict-overflow' error pops up on i686 so disable '-Werror'.
- "NOWERROR=1"
- (string-append "QT_HOME=" (assoc-ref %build-inputs "qtbase"))
- (string-append "SDL_INI_PATH="
- (assoc-ref %outputs "out")
- "/share/mame/ini")
- (map (lambda (lib)
- (string-append "USE_SYSTEM_LIB_" (string-upcase lib) "=1"))
- '("asio" "expat" "flac" "glm" "jpeg" "lua" "portaudio" "portmidi"
- "pugixml" "rapidjson" "sqlite3" "utf8proc" "zlib")))
- #:tests? #f ;no test in regular release
- #:phases
- (modify-phases %standard-phases
+ (list
+ #:make-flags
+ #~(cons*
+ ;; A 'strict-overflow' error pops up on i686 so disable '-Werror'.
+ "NOWERROR=1"
+ (string-append "QT_HOME=" #$(this-package-input "qtbase"))
+ (string-append "SDL_INI_PATH=" #$output "/share/mame/ini")
+ (map (lambda (lib)
+ (string-append "USE_SYSTEM_LIB_" (string-upcase lib) "=1"))
+ '("asio" "expat" "flac" "glm" "jpeg" "lua" "portaudio" "portmidi"
+ "pugixml" "rapidjson" "sqlite3" "utf8proc" "zlib")))
+ #:tests? #f ;no test in regular release
+ #:phases
+ `(modify-phases %standard-phases
(delete 'configure)
(add-after 'build 'build-documentation
(lambda _ (invoke "make" "-C" "docs" "man" "info")))
@@ -1904,32 +1853,32 @@ This is a part of the TiLP project.")
Keywords=Game;Emulator;Arcade;~%"
executable)))))))))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("sphinx" ,python-sphinx)
- ("sphinxcontrib-svg2pdfconverter" ,python-sphinxcontrib-svg2pdfconverter)
- ("texinfo" ,texinfo)))
+ (list pkg-config
+ python-sphinx
+ python-sphinxcontrib-svg2pdfconverter
+ texinfo))
(inputs
- `(("alsa-lib" ,alsa-lib)
- ("asio" ,asio-1.12) ;the bundled copy is at 1.11
- ("expat" ,expat)
- ("flac" ,flac)
- ("fontconfig" ,fontconfig)
- ("glm" ,glm)
- ("libjpeg" ,libjpeg-turbo)
- ("libxi" ,libxi)
- ("libxinerama" ,libxinerama)
- ("lua" ,lua)
- ("portaudio" ,portaudio)
- ("portmidi" ,portmidi)
- ("pugixml" ,pugixml)
- ("pulseaudio" ,pulseaudio)
- ("python-wrapper" ,python-wrapper)
- ("qtbase" ,qtbase-5)
- ("rapidjson" ,rapidjson)
- ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))
- ("sqlite" ,sqlite)
- ("utf8proc" ,utf8proc)
- ("zlib" ,zlib)))
+ (list alsa-lib
+ asio
+ expat
+ flac
+ fontconfig
+ glm
+ libjpeg-turbo
+ libxi
+ libxinerama
+ lua
+ portaudio
+ portmidi
+ pugixml
+ pulseaudio
+ python-wrapper
+ qtbase-5
+ rapidjson
+ (sdl-union (list sdl2 sdl2-ttf))
+ sqlite
+ utf8proc
+ zlib))
(home-page "https://www.mamedev.org")
(synopsis "Multi-purpose emulation framework")
(description "MAME's purpose is to preserve decades of software
@@ -1991,7 +1940,7 @@ functions. The source code to MAME serves as this documentation.")
(install-file "../source/data/tile/TILE.TXT" tile))
#t)))))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
`(("mame" ,mame)
("gtk" ,gtk+)
@@ -2038,8 +1987,7 @@ emulator.")
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "cmake/FindCdio.cmake"
(("/usr/include/cdio")
- (string-append (assoc-ref inputs "libcdio") "/include/cdio")))
- #t))
+ (search-input-directory inputs "/include/cdio")))))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
@@ -2050,17 +1998,16 @@ emulator.")
"/share/glib-2.0/schemas"))))
#t)))))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("intltool" ,intltool)
- ("glib" ,glib "bin")))
+ (list pkg-config intltool
+ `(,glib "bin")))
(inputs
- `(("libcdio" ,libcdio)
- ("sdl2" ,sdl2)
- ("gtk+" ,gtk+)
- ("ffmpeg" ,ffmpeg)
- ("libxv" ,libxv)
- ("libarchive" ,libarchive)
- ("pulseaudio" ,pulseaudio)))
+ (list libcdio
+ sdl2
+ gtk+
+ ffmpeg
+ libxv
+ libarchive
+ pulseaudio))
(home-page "https://archive.codeplex.com/?p=pcsxr")
(synopsis "PlayStation emulator")
(description
@@ -2092,8 +2039,7 @@ improvements.")
(("GTK_CFLAGS=\"\\$GTK_CFLAGS .*\"") ""))
#t)))))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("nasm" ,nasm)))
+ (list pkg-config nasm))
(inputs
`(("sdl" ,sdl)
("gtk" ,gtk+-2)))
@@ -2130,7 +2076,7 @@ from various forks of Gens, and improved platform portability.")
#:phases (modify-phases %standard-phases
(delete 'configure))))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
`(("alsa-lib" ,alsa-lib)
("ao" ,ao)
@@ -2182,17 +2128,6 @@ performance, features, and ease of use.")
(guix build utils))
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'install-bindings-to-python-output
- (lambda* (#:key outputs #:allow-other-keys)
- ;; python-build-system will build the bindings and install them to
- ;; the "out" output, so change the build-internal names of the
- ;; outputs.
- ;;
- ;; TODO: remove this once #40469 lands, through the core-updates
- ;; holding zone, on master.
- (set-car! (assoc "out" outputs) "lib")
- (set-car! (assoc "python" outputs) "out")
- #t))
(add-before 'build 'build-library
(lambda* (#:key inputs #:allow-other-keys)
(invoke "make"
@@ -2205,7 +2140,7 @@ performance, features, and ease of use.")
"UNICORN_STATIC=no"
(string-append
"PREFIX="
- (assoc-ref outputs "lib")))))
+ (assoc-ref outputs "out")))))
(add-before 'build 'prepare-bindings
(lambda* (#:key outputs #:allow-other-keys)
(chdir "bindings/python")
@@ -2218,7 +2153,7 @@ performance, features, and ease of use.")
(("_path_list = \\[.*")
(string-append
"_path_list = [\""
- (assoc-ref outputs "lib")
+ (assoc-ref outputs "out")
;; eat the rest of the list
"/lib\"] + 0*[")))
#t))
@@ -2239,10 +2174,10 @@ performance, features, and ease of use.")
(let* ((python-samples (find-files "." "sample_.*"))
(c-samples (find-files "../../samples" ".*\\.c"))
(python-docdir
- (string-append (assoc-ref outputs "out")
+ (string-append (assoc-ref outputs "python")
"/share/doc/unicorn/samples"))
(c-docdir
- (string-append (assoc-ref outputs "lib")
+ (string-append (assoc-ref outputs "out")
"/share/doc/unicorn/samples")))
(for-each (cut install-file <> c-docdir) c-samples)
(for-each (cut install-file <> python-docdir) python-samples)
@@ -2262,214 +2197,186 @@ framework based on QEMU.")
(license license:gpl2+))))
(define-public ppsspp
- ;; Use a recent commit as fixes for ffmpeg 4.4 haven't been released as of
- ;; 1.11.3.
- (let ((commit "69fa20744958aef8da9ca052ba7675fdc1636e46")
- (revision "1"))
- (package
- (name "ppsspp")
- (version (git-version "1.11.3" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hrydgard/ppsspp")
- (commit commit)))
- (sha256
- (base32 "0r8w4hllhn6zsfxlajxw3sn3f8vsri45srr4mdwsffzcb4hvl0cr"))
- (file-name (git-file-name name version))
- (patches
- (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- ;; The following is quite a heavy-handed way of unbundling PPSSPP.
- ;; There are still a number of external sources, that we don't
- ;; remove here. Some may be packaged, others are not.
- ;; First, we patch existing sources to include the right headers.
- (substitute* (append (find-files "Common" ".*\\.(h|cpp)")
- (find-files "Core" ".*\\.(h|cpp)")
- (find-files "GPU" ".*\\.(h|cpp)")
- (find-files "SDL" ".*\\.(h|cpp)")
- (find-files "UI" ".*\\.(h|cpp)"))
- ;; These headers are all hard-coded in the original source.
- (("ext/cityhash/") "")
- (("ext/glslang/glslang/") "glslang/")
- (("ext/glslang/") "glslang/")
- (("ext/miniupnp/") "")
- (("ext/SPIRV-Cross/") "spirv_cross/")
- (("ext/vulkan/") "vulkan/")
- (("ext/xxhash.h") "xxhash.h")
- ;; These definitions do not actually exist in the Vulkan headers,
- ;; but PPSSPP defines them in ext/vulkan.
- (("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
- (("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
- ;; Next, we patch CMakeLists.
- (substitute* "CMakeLists.txt"
- ;; Drop unnecessary includes and targets.
- (("include_directories\\(ext/glslang\\)") "")
- (("include_directories\\(ext/xxhash\\)") "")
- (("include_directories\\(ext/cityhash\\)") "")
- (("include_directories\\(ext/zstd.*") "")
- (("libzstd_static") "zstd")
- (("set_target_properties\\(cityhash .*\\)") "")
- ;; Fix linking to GLEW.
- (("TARGET Ext::GLEW") "true")
- (("target_link_libraries\\(native Ext::GLEW\\)")
- "find_package(GLEW)\ntarget_link_libraries(native GLEW::GLEW)")
- (("Ext::Snappy") "snappy")
- ;; Don't search for cityhash/xxhash, we already have them.
- (("add_library\\((city|xx)hash STATIC") "if()\nendif(")
- (("ext/xxhash\\.[ch]") "")
- (("ext/cityhash/.*\\.(cpp|h)") "")
- (("if\\(USE_MINIUPNPC\\)" all)
- (string-append all "
+ (package
+ (name "ppsspp")
+ (version "1.12.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hrydgard/ppsspp")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1p6pmp0lhqhk9h5r9xsjicd0zn08bwx3y8533npps96ixwbm2y15"))
+ (file-name (git-file-name name version))
+ (patches
+ (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ ;; The following is quite a heavy-handed way of unbundling PPSSPP.
+ ;; There are still a number of external sources, that we don't
+ ;; remove here. Some may be packaged, others are not.
+ ;; First, we patch existing sources to include the right headers.
+ (substitute* (append (find-files "Common" ".*\\.(h|cpp)")
+ (find-files "Core" ".*\\.(h|cpp)")
+ (find-files "GPU" ".*\\.(h|cpp)")
+ (find-files "SDL" ".*\\.(h|cpp)")
+ (find-files "UI" ".*\\.(h|cpp)"))
+ ;; These headers are all hard-coded in the original source.
+ (("ext/cityhash/") "")
+ (("ext/glslang/glslang/") "glslang/")
+ (("ext/glslang/") "glslang/")
+ (("ext/miniupnp/") "")
+ (("ext/SPIRV-Cross/") "spirv_cross/")
+ (("ext/vulkan/") "vulkan/")
+ (("ext/xxhash.h") "xxhash.h")
+ ;; These definitions do not actually exist in the Vulkan headers,
+ ;; but PPSSPP defines them in ext/vulkan.
+ (("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
+ (("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
+ ;; Next, we patch CMakeLists.
+ (substitute* "CMakeLists.txt"
+ ;; Drop unnecessary includes and targets.
+ (("include_directories\\(ext/glslang\\)") "")
+ (("include_directories\\(ext/xxhash\\)") "")
+ (("include_directories\\(ext/cityhash\\)") "")
+ (("include_directories\\(ext/zstd.*") "")
+ (("libzstd_static") "zstd")
+ (("set_target_properties\\(cityhash .*\\)") "")
+ ;; Fix linking to GLEW.
+ (("TARGET Ext::GLEW") "true")
+ (("target_link_libraries\\(native Ext::GLEW\\)")
+ "find_package(GLEW)\ntarget_link_libraries(native GLEW::GLEW)")
+ (("Ext::Snappy") "snappy")
+ ;; Don't search for cityhash/xxhash, we already have them.
+ (("add_library\\((city|xx)hash STATIC") "if()\nendif(")
+ (("ext/xxhash\\.[ch]") "")
+ (("ext/cityhash/.*\\.(cpp|h)") "")
+ (("if\\(USE_MINIUPNPC\\)" all)
+ (string-append all "
find_package(miniupnpc)
target_link_libraries(${CoreLibName} miniupnpc ${LDLIBS})
elseif(FALSE)"))
- ;; Link all of spirv-cross.
- (("spirv-cross-glsl" all)
- (string-append all
- " spirv-cross-core spirv-cross-cpp"
- " spirv-cross-reflect spirv-cross-util")))
- (substitute* "ext/CMakeLists.txt"
- (("add_subdirectory\\(glew.*") "")
- (("add_subdirectory\\(glslang.*") "")
- (("add_subdirectory\\(snappy.*") "")
- (("add_subdirectory\\(SPIRV-Cross-build.*") "")
- (("add_subdirectory\\(zstd.*") ""))
- ;; Finally, we can delete the bundled sources.
- (for-each delete-file-recursively
- '("MoltenVK"
- "ext/cmake"
- "ext/glew"
- "ext/glslang" "ext/glslang-build"
- "ext/miniupnp" "ext/miniupnp-build"
- "ext/native"
- "ext/snappy"
- "ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
- "ext/vulkan"
- "ext/xxhash.c"
- "ext/xxhash.h"
- "ext/zlib"
- "ext/zstd"))
- ;; Since we are not including git as an input, PPSSPP is confused
- ;; about its version. Let's fix that here.
- (substitute* "git-version.cmake"
- (("unknown") ,version))))))
- (build-system cmake-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("python" ,python)))
- (inputs
- `(("cityhash" ,cityhash)
- ;; ppsspp doesn't yet build with ffmpeg 4.4 (see:
- ("ffmpeg" ,ffmpeg)
- ("glew" ,glew)
- ("glslang" ,glslang)
- ("libpng" ,libpng)
- ("libzip" ,libzip)
- ("mesa" ,mesa)
- ("miniupnpc" ,miniupnpc)
- ("sdl2" ,sdl2)
- ("snappy" ,snappy)
- ("spirv-cross" ,spirv-cross)
- ("vulkan-headers" ,vulkan-headers)
- ("vulkan-loader" ,vulkan-loader)
- ("xxhash" ,xxhash)
- ("zlib" ,zlib)
- ("zstd" ,zstd "lib")
-; ("zstd" ,zstd "static")
- ;; TODO: unbundle armips.
- ("armips-source" ,(package-source armips))
- ("lang"
- ,(let ((commit "6bd5b4bc983917ea8402f73c726b46e36f3de0b4"))
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hrydgard/ppsspp-lang")
- (commit commit)))
- (sha256
- (base32 "08npr3a4xskf85gnlxidl4ksc3rhc7m5rgnj7vsbjvhvw5ap02qx"))
- (file-name (git-file-name "ppsspp-lang" commit)))))
- ("tests"
- ,(let ((commit "1047400eaec6bcbdb2a64d326375ef6a6617c4ac"))
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hrydgard/pspautotests")
- (commit commit)))
- (sha256
- (base32 "0nxv1lskcr8zbg6nrfai21mxsw0n5vaqhbsa41c3cxfyx5c4w2pg"))
- (file-name (git-file-name "pspautotests" commit)))))))
- (arguments
- `(#:out-of-source? #f
- #:configure-flags (list "-DUSE_DISCORD=OFF"
- "-DUSE_SYSTEM_FFMPEG=ON"
- "-DUSE_SYSTEM_LIBZIP=ON"
- ;; for testing
- "-DUNITTEST=ON" "-DHEADLESS=ON")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'add-external-sources
- (lambda* (#:key inputs #:allow-other-keys)
- ;; TODO: unbundle armips.
- (copy-recursively (assoc-ref inputs "armips-source")
- "ext/armips")
- ;; Some tests are externalised, so we add them here.
- (copy-recursively (assoc-ref inputs "tests")
- "pspautotests")
- ;; i18n is externalised, so we add it here.
- (copy-recursively (assoc-ref inputs "lang")
- "assets/lang")
- #t))
- (add-after 'unpack 'fix-unittest-build
- (lambda _
- (substitute* "CMakeLists.txt"
- (("unittest/TestVertexJit.cpp" all)
- (string-append all " unittest/TestShaderGenerators.cpp")))
- (substitute* "unittest/TestVertexJit.cpp"
- (("#include \"unittest/UnitTest.h\"" all)
- (string-append all "\n#include <cmath>")))
- #t))
- (replace 'check
- (lambda _
- (for-each
- (lambda (t) (invoke "./unitTest" t))
- '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
- "SinCos" #|"VFPUSinCos" SIGSEGV|# "MathUtil" "Parsers" "Jit"
- "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ"
- #|"ShaderGenerators"|#))
- (invoke "python3" "test.py" "-g")
- #t))
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin/ppsspp (string-append out "/bin/ppsspp"))
- (share (string-append out "/share/ppsspp")))
- (copy-recursively "icons/hicolor"
- (string-append out "/share/icons/hicolor"))
- (install-file "PPSSPPSDL" share)
- (copy-recursively "assets" (string-append share "/assets"))
+ ;; Link all of spirv-cross.
+ (("spirv-cross-glsl" all)
+ (string-append all
+ " spirv-cross-core spirv-cross-cpp"
+ " spirv-cross-reflect spirv-cross-util")))
+ (substitute* "ext/CMakeLists.txt"
+ (("add_subdirectory\\(glew.*") "")
+ (("add_subdirectory\\(glslang.*") "")
+ (("add_subdirectory\\(snappy.*") "")
+ (("add_subdirectory\\(SPIRV-Cross-build.*") "")
+ (("add_subdirectory\\(zstd.*") ""))
+ ;; Finally, we can delete the bundled sources.
+ (for-each delete-file-recursively
+ '("ext/cmake"
+ "ext/glew"
+ "ext/glslang" "ext/glslang-build"
+ "ext/miniupnp" "ext/miniupnp-build"
+ "ext/native"
+ "ext/snappy"
+ "ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
+ "ext/vulkan"
+ "ext/xxhash.c"
+ "ext/xxhash.h"
+ "ext/zlib"
+ "ext/zstd"))
+ ;; Since we are not including git as an input, PPSSPP is confused
+ ;; about its version. Let's fix that here.
+ (substitute* "git-version.cmake"
+ (("unknown") ,version))))))
+ (build-system cmake-build-system)
+ (native-inputs (list pkg-config python))
+ (inputs (list bash
+ cityhash
+ ffmpeg
+ glew
+ glslang
+ libpng
+ libzip
+ mesa
+ miniupnpc
+ sdl2
+ snappy
+ spirv-cross
+ vulkan-headers
+ vulkan-loader
+ xxhash
+ zlib
+ `(,zstd "lib")))
+ (arguments
+ (list
+ #:out-of-source? #f
+ #:configure-flags #~(list "-DUSE_DISCORD=OFF"
+ "-DUSE_SYSTEM_FFMPEG=ON"
+ "-DUSE_SYSTEM_LIBZIP=ON"
+ ;; for testing
+ "-DUNITTEST=ON" "-DHEADLESS=ON")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-external-sources
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; TODO: unbundle armips.
+ (copy-recursively #$(package-source armips) "ext/armips")
+ ;; Some tests are externalised, so we add them here.
+ (copy-recursively
+ #$(let ((commit "1047400eaec6bcbdb2a64d326375ef6a6617c4ac"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hrydgard/pspautotests")
+ (commit commit)))
+ (sha256
+ (base32 "0nxv1lskcr8zbg6nrfai21mxsw0n5vaqhbsa41c3cxfyx5c4w2pg"))
+ (file-name (git-file-name "pspautotests" commit))))
+ "pspautotests")))
+ (add-after 'unpack 'fix-unittest-build
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("unittest/TestVertexJit.cpp" all)
+ (string-append all " unittest/TestShaderGenerators.cpp")))
+ (substitute* "unittest/TestVertexJit.cpp"
+ (("#include \"unittest/UnitTest.h\"" all)
+ (string-append all "\n#include <cmath>")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (for-each
+ (lambda (t) (invoke "./unitTest" t))
+ '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
+ "SinCos" "VFPUSinCos" "MathUtil" "Parsers" "Jit"
+ "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ"
+ #|"ShaderGenerators"|#))
+ (invoke "python3" "test.py" "-g"))))
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin/ppsspp (string-append out "/bin/ppsspp"))
+ (share (string-append out "/share/ppsspp")))
+ (copy-recursively "icons/hicolor"
+ (string-append out "/share/icons/hicolor"))
+ (install-file "PPSSPPSDL" share)
+ (copy-recursively "assets" (string-append share "/assets"))
- (make-desktop-entry-file
- (string-append out "/share/applications/ppsspp.desktop")
- #:name "PPSSPP"
- #:exec (string-append share "/PPSSPPSDL")
- #:icon "ppsspp")
- (mkdir-p (string-append out "/bin"))
- (with-output-to-file bin/ppsspp
- (lambda ()
- (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
- (which "sh") share)))
- (chmod bin/ppsspp #o755)
- #t))))))
- (home-page "https://www.ppsspp.org/")
- (synopsis "PSP emulator")
- (description
- "PPSSPP is a ``high-level'' emulator simulating the PSP operating
+ (make-desktop-entry-file
+ (string-append out "/share/applications/ppsspp.desktop")
+ #:name "PPSSPP"
+ #:exec (string-append share "/PPSSPPSDL")
+ #:icon "ppsspp")
+ (mkdir-p (string-append out "/bin"))
+ (with-output-to-file bin/ppsspp
+ (lambda ()
+ (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
+ (search-input-file inputs "/bin/bash") share)))
+ (chmod bin/ppsspp #o755)))))))
+ (home-page "https://www.ppsspp.org/")
+ (synopsis "PSP emulator")
+ (description
+ "PPSSPP is a ``high-level'' emulator simulating the PSP operating
system.")
- (license license:gpl2+))))
+ (license license:gpl2+)))
(define-public exomizer
(package
@@ -2510,8 +2417,7 @@ system.")
(install-file "exobasic" out-bin))
#t)))))
(native-inputs
- `(("flex" ,flex)
- ("bison" ,bison)))
+ (list flex bison))
(synopsis "Compressor for use on Commodore home computers")
(description "This program compresses files in a way that tries to be as
efficient as possible but still allows them to be decompressed in environments