2018-02-22 03:17:55 -05:00
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
2018-02-22 06:04:14 -05:00
|
|
|
|
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
|
|
|
|
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
|
|
|
|
;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
|
|
|
|
|
;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
|
|
|
|
;;; Copyright © 2015, 2018 David Thompson <dthompson2@worcester.edu>
|
|
|
|
|
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
2018-02-22 13:28:55 -05:00
|
|
|
|
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
|
2020-01-25 17:49:07 -05:00
|
|
|
|
;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
2020-01-18 23:45:03 -05:00
|
|
|
|
;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
2019-01-14 03:04:23 -05:00
|
|
|
|
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
|
2019-10-21 08:45:10 -04:00
|
|
|
|
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
2019-10-21 12:09:02 -04:00
|
|
|
|
;;; Copyright © 2019 David Wilson <david@daviwil.com>
|
2020-01-02 19:29:04 -05:00
|
|
|
|
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
2018-02-22 03:17:55 -05:00
|
|
|
|
;;;
|
|
|
|
|
;;; This file is part of GNU Guix.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
|
|
|
;;; under the terms of the GNU General Public License as published by
|
|
|
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
|
|
|
;;; your option) any later version.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
|
|
|
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;;; GNU General Public License for more details.
|
|
|
|
|
;;;
|
|
|
|
|
;;; You should have received a copy of the GNU General Public License
|
|
|
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
(define-module (gnu packages emulators)
|
2019-10-21 08:45:10 -04:00
|
|
|
|
#:use-module (ice-9 match)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
|
|
|
#:use-module (guix packages)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (guix download)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (guix git-download)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (guix svn-download)
|
|
|
|
|
#:use-module (gnu packages)
|
|
|
|
|
#:use-module (gnu packages algebra)
|
2018-05-24 18:34:46 -04:00
|
|
|
|
#:use-module (gnu packages assembly)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages audio)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages autotools)
|
|
|
|
|
#:use-module (gnu packages base)
|
|
|
|
|
#:use-module (gnu packages boost)
|
|
|
|
|
#:use-module (gnu packages backup)
|
2019-10-21 08:45:10 -04:00
|
|
|
|
#:use-module (gnu packages cdrom)
|
2020-03-27 19:20:31 -04:00
|
|
|
|
#:use-module (gnu packages check)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages compression)
|
2020-03-27 19:20:31 -04:00
|
|
|
|
#:use-module (gnu packages cross-base)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages curl)
|
2020-06-30 13:34:38 -04:00
|
|
|
|
#:use-module (gnu packages digest)
|
2019-02-25 10:33:38 -05:00
|
|
|
|
#:use-module (gnu packages elf)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages fonts)
|
|
|
|
|
#:use-module (gnu packages fontutils)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages freedesktop)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages game-development)
|
2018-05-16 09:52:40 -04:00
|
|
|
|
#:use-module (gnu packages gcc)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages gettext)
|
|
|
|
|
#:use-module (gnu packages gl)
|
|
|
|
|
#:use-module (gnu packages glib)
|
|
|
|
|
#:use-module (gnu packages gtk)
|
|
|
|
|
#:use-module (gnu packages image)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages imagemagick)
|
|
|
|
|
#:use-module (gnu packages libedit)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages libusb)
|
|
|
|
|
#:use-module (gnu packages linux)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
#:use-module (gnu packages lua)
|
|
|
|
|
#:use-module (gnu packages maths)
|
2018-05-24 18:34:46 -04:00
|
|
|
|
#:use-module (gnu packages mp3)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
#:use-module (gnu packages music)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages ncurses)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
#:use-module (gnu packages networking)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages pkg-config)
|
|
|
|
|
#:use-module (gnu packages pulseaudio)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages python)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages qt)
|
|
|
|
|
#:use-module (gnu packages sdl)
|
gnu: Move Sphinx and friends to (gnu packages sphinx).
* gnu/packages/python-xyz.scm (python-sphinxcontrib-websupport,
python2-sphinxcontrib-websupport, python-sphinx, python2-sphinx,
python-sphinx-gallery, python2-sphinx-gallery, python-sphinx-rtd-theme,
python2-sphinx-rtd-theme, python-guzzle-sphinx-theme,
python2-guzzle-sphinx-theme, python-sphinxcontrib-newsfeed,
python-sphinxcontrib-programoutput, python2-sphinxcontrib-programoutput,
python-sphinx-repoze-interface, python2-sphinx-repoze-interface,
python-sphinx-cloud-sptheme, python2-sphinx-cloud-sptheme,
python-sphinx-alabaster-theme, python2-sphinx-alabaster-theme,
python-sphinx-me, python-sphinxcontrib-svg2pdfconverter): Move to ...
(gnu):
* gnu/packages/sphinx.scm: ... here. New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/packages/admin.scm, gnu/packages/bioinformatics.scm,
gnu/packages/calendar.scm, gnu/packages/cluster.scm,
gnu/packages/databases.scm, gnu/packages/dav.scm, gnu/packages/disk.scm,
gnu/packages/django.scm, gnu/packages/elf.scm, gnu/packages/emacs-xyz.scm,
gnu/packages/emulators.scm, gnu/packages/finance.scm, gnu/packages/image.scm,
gnu/packages/libffi.scm, gnu/packages/mail.scm, gnu/packages/mpd.scm,
gnu/packages/openstack.scm, gnu/packages/pdf.scm, gnu/packages/python-web.scm,
gnu/packages/search.scm, gnu/packages/statistics.scm,
gnu/packages/storage.scm, gnu/packages/sync.scm, gnu/packages/terminals.scm,
gnu/packages/tls.scm, gnu/packages/web.scm: Adjust module imports.
2019-05-12 16:56:54 -04:00
|
|
|
|
#:use-module (gnu packages sphinx)
|
gnu: Move sqlite to separate module.
* gnu/packages/databases.scm (sqlite, sqlite-3.26.0, sqlite-with-fts5,
sqlite-with-column-metadata): Move variables from here...
* gnu/packages/sqlite.scm: ...to this new module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/apl.scm,
gnu/packages/bittorrent.scm,
gnu/packages/calendar.scm,
gnu/packages/code.scm,
gnu/packages/crypto.scm,
gnu/packages/databases.scm,
gnu/packages/dc.scm,
gnu/packages/disk.scm,
gnu/packages/ebook.scm,
gnu/packages/education.scm,
gnu/packages/emacs.scm,
gnu/packages/emulators.scm,
gnu/packages/file-systems.scm,
gnu/packages/freedesktop.scm,
gnu/packages/ftp.scm,
gnu/packages/games.scm,
gnu/packages/geo.scm,
gnu/packages/gnome.scm,
gnu/packages/gnunet.scm,
gnu/packages/gnupg.scm,
gnu/packages/gnuzilla.scm,
gnu/packages/gps.scm,
gnu/packages/guile.scm,
gnu/packages/ibus.scm,
gnu/packages/kerberos.scm,
gnu/packages/kodi.scm,
gnu/packages/lisp.scm,
gnu/packages/mail.scm,
gnu/packages/messaging.scm,
gnu/packages/mpd.scm,
gnu/packages/music.scm,
gnu/packages/networking.scm,
gnu/packages/nfs.scm,
gnu/packages/ocaml.scm,
gnu/packages/package-management.scm,
gnu/packages/pdf.scm,
gnu/packages/photo.scm,
gnu/packages/php.scm,
gnu/packages/python.scm,
gnu/packages/qt.scm,
gnu/packages/ruby.scm,
gnu/packages/scheme.scm,
gnu/packages/sync.scm,
gnu/packages/syndication.scm,
gnu/packages/version-control.scm,
gnu/packages/video.scm,
gnu/packages/web-browsers.scm,
gnu/packages/webkit.scm: Adjust module references.
2019-01-15 15:47:05 -05:00
|
|
|
|
#:use-module (gnu packages sqlite)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
#:use-module (gnu packages texinfo)
|
|
|
|
|
#:use-module (gnu packages textutils)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages tls)
|
|
|
|
|
#:use-module (gnu packages upnp)
|
|
|
|
|
#:use-module (gnu packages video)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages vulkan)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages wxwidgets)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages xdisorg)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages xiph)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (gnu packages xml)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:use-module (gnu packages xorg)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
#:use-module (gnu packages web)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:use-module (guix build-system cmake)
|
2019-10-21 12:09:02 -04:00
|
|
|
|
#:use-module (guix build-system glib-or-gtk)
|
2020-03-27 19:20:31 -04:00
|
|
|
|
#:use-module (guix build-system gnu)
|
|
|
|
|
#:use-module (guix build-system python))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
|
|
|
|
|
(define-public desmume
|
|
|
|
|
(package
|
|
|
|
|
(name "desmume")
|
|
|
|
|
(version "0.9.11")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"mirror://sourceforge/desmume/desmume/"
|
|
|
|
|
version "/desmume-" version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2020-02-19 08:36:26 -05:00
|
|
|
|
"15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))
|
|
|
|
|
(patches (search-patches "desmume-gcc6-fixes.patch"
|
|
|
|
|
"desmume-gcc7-fixes.patch"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
;; Enable support for WiFi and microphone.
|
|
|
|
|
`(#:configure-flags '("--enable-wifi"
|
|
|
|
|
"--enable-openal")))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("intltool" ,intltool)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("zlib" ,zlib)
|
|
|
|
|
("sdl" ,sdl)
|
|
|
|
|
("glib" ,glib)
|
|
|
|
|
("gtk+" ,gtk+-2)
|
|
|
|
|
("glu" ,glu)))
|
|
|
|
|
(home-page "http://desmume.org/")
|
|
|
|
|
(synopsis "Nintendo DS emulator")
|
|
|
|
|
(description
|
|
|
|
|
"DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
|
|
|
|
|
(license license:gpl2)))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
|
|
|
|
|
;; Building from recent Git because the official 5.0 release no longer builds.
|
|
|
|
|
(define-public dolphin-emu
|
2019-09-04 14:23:18 -04:00
|
|
|
|
(let ((commit "a9745400ec5cea7e55d94955afbdc44d1a4982d1")
|
|
|
|
|
(revision "7"))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(package
|
|
|
|
|
(name "dolphin-emu")
|
|
|
|
|
(version (git-version "5.0" revision commit))
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/dolphin-emu/dolphin.git")
|
|
|
|
|
(commit commit)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 13:42:11 -05:00
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
'(begin
|
|
|
|
|
;; Remove external stuff we don't need.
|
|
|
|
|
(for-each (lambda (dir)
|
|
|
|
|
(delete-file-recursively
|
|
|
|
|
(string-append "Externals/" dir)))
|
2018-07-03 03:09:17 -04:00
|
|
|
|
'("LZO" "OpenAL" "Qt" "SFML" "curl" "ffmpeg"
|
2018-02-22 13:42:11 -05:00
|
|
|
|
"gettext" "hidapi" "libpng" "libusb" "mbedtls"
|
2019-09-04 14:23:18 -04:00
|
|
|
|
"miniupnpc" "MoltenVK" "zlib"))
|
2018-02-22 13:42:11 -05:00
|
|
|
|
;; Clean up source.
|
|
|
|
|
(for-each delete-file (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
|
|
|
|
|
#t))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2019-09-04 14:23:18 -04:00
|
|
|
|
"0ic08ii4vlqlmk2wkfc99jiy6nji2wfq56r7slj23wgvhznnaabk"))))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:tests? #f
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
2018-02-23 04:13:40 -05:00
|
|
|
|
(add-before 'configure 'generate-fonts&hardcore-libvulkan-path
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let ((fontfile
|
|
|
|
|
(string-append (assoc-ref inputs "font-wqy-microhei")
|
2018-02-23 04:13:40 -05:00
|
|
|
|
"/share/fonts/truetype/wqy-microhei.ttc"))
|
|
|
|
|
(libvulkan
|
2018-06-06 03:59:15 -04:00
|
|
|
|
(string-append (assoc-ref inputs "vulkan-loader")
|
2018-02-23 04:13:40 -05:00
|
|
|
|
"/lib/libvulkan.so")))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(chdir "docs")
|
gnu: Remove more GCC < 7 workarounds.
* gnu/packages/abiword.scm (abiword)[arguments]: Do not pass "-std=c++11" to
the GCC command line.
* gnu/packages/aidc.scm (zbar)[arguments]: Likewise.
* gnu/packages/android.scm (android-libbase, android-libcutils,
android-libziparchive, fastboot)[arguments]: Likewise.
* gnu/packages/audio.scm (azr3, guitarix, suil)[arguments]: Likewise.
* gnu/packages/bioinformatics.scm (bless)[arguments]: Likewise.
* gnu/packages/bittorrent.scm (libtorrent-rasterbar)[arguments]: Likewise.
* gnu/packages/code.scm (rtags)[arguments]: Likewise.
* gnu/packages/coq.scm (coq-gappa)[arguments]: Likewise.
* gnu/packages/emulators.scm (dolphin-emu)[arguments]: Likewise.
* gnu/packages/engineering.scm (xyce-serial, xyce-parallel)[arguments]: Likewise.
* gnu/packages/gnupg.scm (pinentry-qt)[arguments]: Likewise.
* gnu/packages/gobby.scm (libnet6, obby)[arguments]: Likewise.
* gnu/packages/graph.scm (python-faiss)[arguments]: Likewise.
* gnu/packages/graphics.scm (povray)[arguments]: Likewise.
* gnu/packages/image-processing.scm (opencv, itk-snap)[arguments]: Likewise.
* gnu/packages/image.scm (freeimage)[arguments]: Likewise.
* gnu/packages/kodi.scm (crossguid)[arguments]: Likewise.
* gnu/packages/music.scm (amsynth, qmidiarp, qmidiroute, seq24)[arguments]: Likewise.
* gnu/packages/pdf.scm (python-poppler-qt5)[arguments]: Likewise.
* gnu/packages/sagemath.scm (lcalc)[arguments]: Likewise.
* gnu/packages/video.scm (vlc, mlt, v4l-utils)[arguments]: Likewise.
2019-10-20 07:31:19 -04:00
|
|
|
|
(invoke "bash" "-c" "g++ -O2 $(freetype-config \
|
2018-02-22 03:17:55 -05:00
|
|
|
|
--cflags --libs) gc-font-tool.cpp -o gc-font-tool")
|
|
|
|
|
(invoke "./gc-font-tool" "a" fontfile "font_western.bin")
|
|
|
|
|
(invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
|
|
|
|
|
(copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
|
|
|
|
|
(copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
|
|
|
|
|
(chdir "..")
|
2018-02-23 04:13:40 -05:00
|
|
|
|
(substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
|
2019-09-04 14:23:18 -04:00
|
|
|
|
(("\"vulkan\", 1") (string-append "\"vulkan\"")))
|
|
|
|
|
(substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
|
|
|
|
|
(("\"vulkan\"") (string-append "\"" libvulkan "\"")))
|
|
|
|
|
(substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
|
|
|
|
|
(("Common::DynamicLibrary::GetVersionedFilename") ""))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#t))))
|
|
|
|
|
|
2018-07-03 03:09:17 -04:00
|
|
|
|
;; The FindGTK2 cmake script only checks hardcoded directories for
|
|
|
|
|
;; glib/gtk headers.
|
|
|
|
|
|
2018-02-22 03:17:55 -05:00
|
|
|
|
#:configure-flags
|
2018-07-03 03:09:17 -04:00
|
|
|
|
(list (string-append "-DX11_INCLUDE_DIR="
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(assoc-ref %build-inputs "libx11")
|
|
|
|
|
"/include")
|
|
|
|
|
(string-append "-DX11_LIBRARIES="
|
|
|
|
|
(assoc-ref %build-inputs "libx11")
|
|
|
|
|
"/lib/libX11.so")
|
|
|
|
|
"-DX11_FOUND=1")))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
2020-04-04 09:48:44 -04:00
|
|
|
|
("gettext" ,gettext-minimal)))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("ao" ,ao)
|
|
|
|
|
("bluez" ,bluez)
|
|
|
|
|
("curl" ,curl)
|
|
|
|
|
("eudev" ,eudev)
|
2018-11-01 03:18:18 -04:00
|
|
|
|
("ffmpeg" ,ffmpeg)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
("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)
|
2018-07-03 03:09:17 -04:00
|
|
|
|
("pugixml" ,pugixml)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
("pulseaudio" ,pulseaudio)
|
|
|
|
|
("qtbase" ,qtbase)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("sfml" ,sfml)
|
|
|
|
|
("soil" ,soil)
|
|
|
|
|
("soundtouch" ,soundtouch)
|
2018-06-06 03:59:15 -04:00
|
|
|
|
("vulkan-loader" ,vulkan-loader)
|
2018-02-22 03:17:55 -05:00
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(home-page "https://dolphin-emu.org/")
|
|
|
|
|
(synopsis "Nintendo Wii and GameCube emulator")
|
|
|
|
|
(description
|
|
|
|
|
"Dolphin is an emulator for two Nintendo video game consoles: the
|
|
|
|
|
GameCube and the Wii. It provides compatibility with all PC controllers,
|
|
|
|
|
turbo speed, networked multiplayer, and graphical enhancements.")
|
2018-02-22 13:28:55 -05:00
|
|
|
|
(supported-systems '("x86_64-linux" "aarch64-linux"))
|
2018-02-22 03:17:55 -05:00
|
|
|
|
; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
|
|
|
|
|
(license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
|
|
|
|
|
(define-public dosbox
|
|
|
|
|
(package
|
|
|
|
|
(name "dosbox")
|
2019-06-27 04:21:47 -04:00
|
|
|
|
(version "0.74-3")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(source (origin
|
2019-01-14 03:04:23 -05:00
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://sourceforge.net/projects/dosbox"
|
|
|
|
|
"/files/dosbox/" version "/dosbox-"
|
|
|
|
|
version ".tar.gz/download"))
|
|
|
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2019-06-27 04:21:47 -04:00
|
|
|
|
"02i648i50dwicv1vaql15rccv4g8h5blf5g6inv67lrfxpbkvlf0"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("autoconf" ,autoconf)
|
|
|
|
|
("automake" ,automake)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("sdl" ,sdl)
|
|
|
|
|
("libpng" ,libpng)
|
|
|
|
|
("zlib" ,zlib)
|
|
|
|
|
("alsa-lib" ,alsa-lib)
|
|
|
|
|
("glu" ,glu)
|
|
|
|
|
("mesa" ,mesa)))
|
2020-01-18 18:28:57 -05:00
|
|
|
|
(home-page "https://www.dosbox.com")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
|
|
|
|
|
(description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
|
|
|
|
|
also emulates CPU:286/386 realmode/protected mode, Directory
|
|
|
|
|
FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
|
|
|
|
|
SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
|
|
|
|
|
older games.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public emulation-station
|
2020-02-15 18:51:56 -05:00
|
|
|
|
;; No release for a long time, new commits fix build issues
|
|
|
|
|
(let ((commit "9cc42adff67946175d2b7e25c6ae69cc374e98a0")
|
|
|
|
|
(revision "1"))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(package
|
|
|
|
|
(name "emulation-station")
|
2020-02-15 18:51:56 -05:00
|
|
|
|
(version (git-version "2.0.1" revision commit))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch) ; no tarball available
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/Aloshi/EmulationStation.git")
|
|
|
|
|
(commit commit))) ; no version tag
|
2020-02-15 18:51:56 -05:00
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2020-02-15 18:51:56 -05:00
|
|
|
|
"1cva0ns650v17lfn8in095zci6lc43d23f1x3mlzc41qfqa6mbd1"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:tests? #f)) ; no tests
|
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("boost" ,boost)
|
|
|
|
|
("curl" ,curl)
|
|
|
|
|
("eigin" ,eigen)
|
|
|
|
|
("freeimage" ,freeimage)
|
|
|
|
|
("freetype" ,freetype)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(synopsis "Video game console emulator front-end")
|
|
|
|
|
(description "EmulationStation provides a graphical front-end to a large
|
|
|
|
|
number of video game console emulators. It features an interface that is
|
|
|
|
|
usable with any game controller that has at least 4 buttons, theming support,
|
|
|
|
|
and a game metadata scraper.")
|
2020-01-18 19:24:52 -05:00
|
|
|
|
(home-page "https://emulationstation.org")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(license license:expat))))
|
|
|
|
|
|
|
|
|
|
(define-public higan
|
|
|
|
|
(package
|
|
|
|
|
(name "higan")
|
2020-04-08 03:54:40 -04:00
|
|
|
|
(version "110")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
2020-02-15 17:05:30 -05:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2020-04-08 03:54:40 -04:00
|
|
|
|
(url "https://github.com/higan-emu/higan.git")
|
|
|
|
|
(commit (string-append "v" version))))
|
2020-02-15 17:05:30 -05:00
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2020-04-08 03:54:40 -04:00
|
|
|
|
(base32 "11rvm53c3p2f6zk8xbyv2j51xp8zmqnch7zravhj3fk590qrjrr2"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("ao" ,ao)
|
|
|
|
|
("eudev" ,eudev)
|
|
|
|
|
("gtk+" ,gtk+-2)
|
|
|
|
|
("gtksourceview-2" ,gtksourceview-2)
|
2020-04-08 03:54:40 -04:00
|
|
|
|
("libxrandr" ,libxrandr)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("libxv" ,libxv)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("openal" ,openal)
|
|
|
|
|
("pulseaudio" ,pulseaudio)
|
2020-04-08 03:54:40 -04:00
|
|
|
|
("sdl2" ,sdl2)))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(let ((build-phase (assoc-ref %standard-phases 'build))
|
|
|
|
|
(install-phase (assoc-ref %standard-phases 'install)))
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The higan build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
(add-before 'build 'chdir-to-higan
|
|
|
|
|
(lambda _
|
2020-02-15 16:43:56 -05:00
|
|
|
|
(chdir "higan")
|
|
|
|
|
#t))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(add-before 'install 'create-/share/applications
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
|
|
|
|
;; It seems the author forgot to do this in the Makefile.
|
2020-02-15 16:43:56 -05:00
|
|
|
|
(mkdir-p (string-append out "/share/applications"))
|
|
|
|
|
#t)))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(add-after 'install 'chdir-to-icarus
|
|
|
|
|
(lambda _
|
2020-02-15 16:43:56 -05:00
|
|
|
|
(chdir "../icarus")
|
|
|
|
|
#t))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(add-after 'chdir-to-icarus 'build-icarus build-phase)
|
|
|
|
|
(add-after 'build-icarus 'install-icarus install-phase)
|
|
|
|
|
(add-after 'install-icarus 'wrap-higan-executable
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(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"))
|
|
|
|
|
(coreutils (assoc-ref inputs "coreutils"))
|
|
|
|
|
(mkdir (string-append coreutils "/bin/mkdir"))
|
|
|
|
|
(cp (string-append coreutils "/bin/cp"))
|
|
|
|
|
(cp-r (string-append cp " -r --no-preserve=mode")))
|
|
|
|
|
;; First, have the executable make sure ~/.local/share/higan
|
|
|
|
|
;; contains up to date files. Higan insists on looking there
|
|
|
|
|
;; for these data files.
|
|
|
|
|
(rename-file higan higan-original)
|
|
|
|
|
(with-output-to-file higan
|
|
|
|
|
(lambda ()
|
|
|
|
|
(display
|
|
|
|
|
(string-append
|
|
|
|
|
"#!" bash "\n"
|
|
|
|
|
;; higan doesn't respect $XDG_DATA_HOME
|
|
|
|
|
mkdir " -p ~/.local/share\n"
|
|
|
|
|
cp-r " " out "/share/higan ~/.local/share\n"
|
|
|
|
|
"exec " higan-original))))
|
|
|
|
|
(chmod higan #o555)
|
|
|
|
|
;; Second, make sure higan will find icarus in PATH.
|
|
|
|
|
(wrap-program higan
|
2020-02-15 16:43:56 -05:00
|
|
|
|
`("PATH" ":" prefix (,bin)))
|
|
|
|
|
#t)))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:make-flags
|
|
|
|
|
(list "compiler=g++"
|
|
|
|
|
(string-append "prefix=" (assoc-ref %outputs "out")))
|
|
|
|
|
;; There is no test suite.
|
|
|
|
|
#:tests? #f))
|
2020-04-08 03:54:40 -04:00
|
|
|
|
(home-page "https://github.com/higan-emu/higan/")
|
2020-04-08 04:03:25 -04:00
|
|
|
|
(synopsis "Multi-system emulator")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(description
|
2020-04-08 04:03:25 -04:00
|
|
|
|
"higan is a multi-system emulator with an uncompromising focus on
|
|
|
|
|
accuracy and code readability.
|
|
|
|
|
|
|
|
|
|
It currently emulates the following systems: Famicom, Famicom Disk System,
|
|
|
|
|
Super Famicom, Super Game Boy, Game Boy, Game Boy Color, Game Boy Advance,
|
|
|
|
|
Game Boy Player, SG-1000, SC-3000, Master System, Game Gear, Mega Drive, Mega
|
|
|
|
|
CD, PC Engine, SuperGrafx, MSX, MSX2, ColecoVision, Neo Geo Pocket, Neo Geo
|
|
|
|
|
Pocket Color, WonderSwan, WonderSwan Color, SwanCrystal, Pocket Challenge
|
|
|
|
|
V2.")
|
2020-04-08 03:54:40 -04:00
|
|
|
|
(license license:gpl3+)))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
|
2020-06-16 16:51:39 -04:00
|
|
|
|
(define-public mednafen
|
|
|
|
|
(package
|
|
|
|
|
(name "mednafen")
|
|
|
|
|
(version "1.24.3")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://mednafen.github.io/releases/files/"
|
|
|
|
|
"mednafen-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "03zplcfvmnnv7grhacmr1zy789pb2wda36wylmzmar23g0zqbsix"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:configure-flags
|
|
|
|
|
(list
|
|
|
|
|
;; "--with-external-mpcdec"
|
|
|
|
|
"--with-external-lzo")))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa" ,alsa-lib)
|
|
|
|
|
;; ("libmpcdec" ,libmpcdec) FIXME: not recognized.
|
|
|
|
|
("libsndfile" ,libsndfile)
|
|
|
|
|
("lzo" ,lzo)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(home-page "https://mednafen.github.io/")
|
|
|
|
|
(synopsis "Multi-system emulator utilizing OpenGL and SDL")
|
|
|
|
|
(description
|
|
|
|
|
"Mednafen is a portable, utilizing OpenGL and SDL, argument-driven
|
|
|
|
|
multi-system emulator. Mednafen has the ability to remap hotkey functions and
|
|
|
|
|
virtual system inputs to a keyboard, a joystick, or both simultaneously. Save
|
|
|
|
|
states are supported, as is real-time game rewinding. Screen snapshots may be
|
|
|
|
|
taken, in the PNG file format, at the press of a button. Mednafen can record
|
|
|
|
|
audiovisual movies in the QuickTime file format, with several different
|
|
|
|
|
lossless codecs supported.
|
|
|
|
|
|
|
|
|
|
The following systems are supported:
|
|
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
|
@item Apple II/II+
|
|
|
|
|
@item Atari Lynx
|
|
|
|
|
@item Neo Geo Pocket (Color)
|
|
|
|
|
@item WonderSwan
|
|
|
|
|
@item GameBoy (Color)
|
|
|
|
|
@item GameBoy Advance
|
|
|
|
|
@item Nintendo Entertainment System
|
|
|
|
|
@item Super Nintendo Entertainment System/Super Famicom
|
|
|
|
|
@item Virtual Boy
|
|
|
|
|
@item PC Engine/TurboGrafx 16 (CD)
|
|
|
|
|
@item SuperGrafx
|
|
|
|
|
@item PC-FX
|
|
|
|
|
@item Sega Game Gear
|
|
|
|
|
@item Sega Genesis/Megadrive
|
|
|
|
|
@item Sega Master System
|
|
|
|
|
@item Sega Saturn (experimental, x86_64 only)
|
|
|
|
|
@item Sony PlayStation
|
|
|
|
|
@end itemize")
|
|
|
|
|
;; Main license is GPL2+. Some parts are BSD-3.
|
|
|
|
|
(license (list license:gpl2+ license:bsd-3))))
|
|
|
|
|
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(define-public mgba
|
|
|
|
|
(package
|
|
|
|
|
(name "mgba")
|
2020-06-17 07:32:22 -04:00
|
|
|
|
(version "0.8.2")
|
2020-01-25 17:49:07 -05:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mgba-emu/mgba.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
2020-06-17 07:32:22 -04:00
|
|
|
|
(base32 "0dlwhn3hrpaqnl5hjs53y8j2i16idxrg3gy688gcwrc9z1a6bkn2"))
|
2020-01-25 17:49:07 -05:00
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
;; Make sure we don't use the bundled software.
|
|
|
|
|
'(begin
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (subdir)
|
|
|
|
|
(let ((lib-subdir (string-append "src/third-party/" subdir)))
|
|
|
|
|
(delete-file-recursively lib-subdir)))
|
|
|
|
|
'("libpng" "lzma" "sqlite3" "zlib"))
|
|
|
|
|
#t))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ;no "test" target
|
|
|
|
|
#:configure-flags
|
|
|
|
|
(list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
|
2019-01-28 03:15:09 -05:00
|
|
|
|
"-DUSE_LIBZIP=OFF"))) ;use "zlib" instead
|
2020-02-23 07:43:50 -05:00
|
|
|
|
(native-inputs `(("pkg-config" ,pkg-config)
|
|
|
|
|
("qttools" ,qttools)))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(inputs `(("ffmpeg" ,ffmpeg)
|
|
|
|
|
("imagemagick" ,imagemagick)
|
|
|
|
|
("libedit" ,libedit)
|
2019-02-26 10:18:12 -05:00
|
|
|
|
("libelf" ,libelf)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("libepoxy" ,libepoxy)
|
|
|
|
|
("libpng" ,libpng)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("minizip" ,minizip)
|
|
|
|
|
("ncurses" ,ncurses)
|
|
|
|
|
("qtbase" ,qtbase)
|
|
|
|
|
("qtmultimedia" ,qtmultimedia)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("sqlite" ,sqlite)
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(home-page "https://mgba.io")
|
|
|
|
|
(synopsis "Game Boy Advance emulator")
|
|
|
|
|
(description
|
|
|
|
|
"mGBA is an emulator for running Game Boy Advance games. It aims to be
|
|
|
|
|
faster and more accurate than many existing Game Boy Advance emulators, as
|
|
|
|
|
well as adding features that other emulators lack. It also supports Game Boy
|
|
|
|
|
and Game Boy Color games.")
|
2020-02-23 07:43:50 -05:00
|
|
|
|
;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+, "inih.c" is
|
|
|
|
|
;; BSD-3, and "discord-rpc" is Expat.
|
|
|
|
|
(license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3 license:expat))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
|
2020-01-02 19:29:04 -05:00
|
|
|
|
(define-public sameboy
|
|
|
|
|
(package
|
|
|
|
|
(name "sameboy")
|
2020-06-24 17:19:36 -04:00
|
|
|
|
(version "0.13.3")
|
2020-01-02 19:29:04 -05:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/LIJI32/SameBoy.git")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
2020-06-24 17:19:36 -04:00
|
|
|
|
(base32 "1mv5a7p6plz0359l3z9g232rgaq2h3yby5949ps0s88cxj94w9qm"))))
|
2020-01-02 19:29:04 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("rgbds" ,rgbds)
|
|
|
|
|
("gcc" ,gcc-9)
|
|
|
|
|
("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ; There are no tests
|
2020-06-11 08:08:07 -04:00
|
|
|
|
#:make-flags `("CC=gcc" "NATIVE_CC=gcc" "CONF=release"
|
2020-01-02 19:29:04 -05:00
|
|
|
|
,(string-append "DATA_DIR="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/share/sameboy/"))
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(bin (string-append out "/bin"))
|
|
|
|
|
(data (string-append out "/share/sameboy/")))
|
|
|
|
|
(with-directory-excursion "build/bin/SDL"
|
|
|
|
|
(install-file "sameboy" bin)
|
|
|
|
|
(delete-file "sameboy")
|
2020-03-29 12:21:40 -04:00
|
|
|
|
(copy-recursively "." data))
|
|
|
|
|
#t))))))
|
2020-01-02 19:29:04 -05:00
|
|
|
|
(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
|
|
|
|
|
and Super Game Boy emulator. SameBoy is accurate and includes a wide
|
|
|
|
|
range of debugging features. It has all the features one would expect
|
|
|
|
|
from an emulator---from save states to scaling filters.")
|
|
|
|
|
(license license:expat)))
|
|
|
|
|
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(define-public mupen64plus-core
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-core")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:11 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-core.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:11 -04:00
|
|
|
|
(base32 "116fndl6652zrp1r6ag4xv3dzp1x52mlvadj8xwflq07fd5rhri1"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("freetype" ,freetype)
|
|
|
|
|
("glu" ,glu)
|
|
|
|
|
("libpng" ,libpng)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
2019-07-10 04:26:41 -04:00
|
|
|
|
'build 'chdir-to-project-directory
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(lambda _
|
2019-07-10 04:26:41 -04:00
|
|
|
|
(chdir "projects/unix")
|
|
|
|
|
#t)))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:make-flags (let ((out (assoc-ref %outputs "out")))
|
|
|
|
|
(list "all" (string-append "PREFIX=" out)))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
|
|
|
|
;; As per the Makefile (in projects/unix/Makefile):
|
|
|
|
|
(supported-systems '("i686-linux" "x86_64-linux"))
|
2019-07-10 04:26:41 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Nintendo 64 emulator core library")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
core library.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-audio-sdl
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-audio-sdl")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:20 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-audio-sdl.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:20 -04:00
|
|
|
|
(base32 "0z19amfg9vr2pqjjri1ipc7hs681fzjcnb0f9y7bjhp5n8d7p6bb"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:26:51 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus SDL input plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
SDL audio plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-input-sdl
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-input-sdl")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:28 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-input-sdl.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:28 -04:00
|
|
|
|
(base32 "1dyazfbdjycdfslq8jixqiqhziw0rlkvach2r9dz91229jmkyc9c"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:27:01 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus SDL input plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
SDL input plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-rsp-hle
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-rsp-hle")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:36 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-rsp-hle.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:36 -04:00
|
|
|
|
(base32 "0pi31qzjjp7aypdvvnz6ms18g09c4gqzxi6328zj8sji94b75gf0"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mupen64plus-core" ,mupen64plus-core)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:27:11 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus SDL input plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
high-level emulation (HLE) RSP processor plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-rsp-z64
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-rsp-z64")
|
|
|
|
|
(version "2.0.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:45 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-rsp-z64.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:45 -04:00
|
|
|
|
(base32 "0nfyjns9k8xbg3aqs7593nfaxvlj72h3l8h467442xlk8ajfcylx"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mupen64plus-core" ,mupen64plus-core)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:27:24 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus SDL input plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Z64 RSP processor plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-video-arachnoid
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-video-arachnoid")
|
|
|
|
|
(version "2.0.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:48:52 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-video-arachnoid.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:48:52 -04:00
|
|
|
|
(base32 "1v9fqwpb6pawr8z5cm2ki7bqkks4iyr5c4jy4v5khj6h8zcv55gc"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mesa" ,mesa)
|
|
|
|
|
("mupen64plus-core" ,mupen64plus-core)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:27:41 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus Rice Video plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Arachnoid video plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-video-glide64
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-video-glide64")
|
|
|
|
|
(version "2.0.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:49:02 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-video-glide64.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:49:02 -04:00
|
|
|
|
(base32 "0qn5za7g7796kh2ag3xpmhbqg0yf71g9liz6ks0rha8pz73lgs01"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mesa" ,mesa)
|
|
|
|
|
("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix")))
|
|
|
|
|
;; XXX Should be unnecessary with the next release.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'use-sdl2
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("SDL_CONFIG = (.*)sdl-config" all prefix)
|
|
|
|
|
(string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:27:56 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus Rice Video plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Glide64 video plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-video-glide64mk2
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-video-glide64mk2")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:49:12 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-video-glide64mk2.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:49:12 -04:00
|
|
|
|
(base32 "08pm28a36dpr0cvr8pzw0n5ksdazp7jqvlmqfy2lwb4dm0cwhkqd"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("boost" ,boost)
|
|
|
|
|
("libpng" ,libpng)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:28:11 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus Rice Video plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Glide64MK2 video plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-video-rice
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-video-rice")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:49:22 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-video-rice.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:49:22 -04:00
|
|
|
|
(base32 "0rpmbcq67gsj5h5jjis146378qc1mskskvx20y1ikx59yhbamh13"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("libpng" ,libpng)
|
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:28:28 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus Rice Video plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Rice Video plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-video-z64
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-video-z64")
|
|
|
|
|
(version "2.0.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:49:30 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-video-z64.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:49:30 -04:00
|
|
|
|
(base32 "04qa2fdd6dakpk2v0d4l80xh9b4h8gm71g80c0wyyxdhmhwk1r9c"))
|
2018-04-15 06:05:54 -04:00
|
|
|
|
(patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch"))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("glew" ,glew)
|
|
|
|
|
("mupen64plus-core" ,mupen64plus-core)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix")))
|
|
|
|
|
;; XXX Should be unnecessary with the next release.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'use-sdl2
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("SDL_CONFIG = (.*)sdl-config" all prefix)
|
|
|
|
|
(string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:28:56 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(synopsis "Mupen64Plus Z64 video plugin")
|
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
Z64 video plugin.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public mupen64plus-ui-console
|
|
|
|
|
(package
|
|
|
|
|
(name "mupen64plus-ui-console")
|
|
|
|
|
(version "2.5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-04-08 17:49:46 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mupen64plus/mupen64plus-ui-console.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-04-08 17:49:46 -04:00
|
|
|
|
(base32 "0vrf98qa6a0y3647kslsv644fag233dxh5dcr1yncjiiwickcr5a"))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(patches (search-patches "mupen64plus-ui-console-notice.patch"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("which" ,which)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("sdl2" ,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
|
|
|
|
|
;; all packages from which data and plugin files are needed into one's
|
|
|
|
|
;; profile, and point the configuration there. Hence, propagate the most
|
|
|
|
|
;; important packages here to save the user from the bother. The patch
|
|
|
|
|
;; 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)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
;; The mupen64plus build system has no configure phase.
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
;; Makefile is in a subdirectory.
|
|
|
|
|
(add-before
|
|
|
|
|
'build 'cd-to-project-dir
|
|
|
|
|
(lambda _
|
|
|
|
|
(chdir "projects/unix"))))
|
|
|
|
|
#:make-flags
|
|
|
|
|
(let ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(m64p (assoc-ref %build-inputs "mupen64plus-core")))
|
|
|
|
|
(list "all"
|
|
|
|
|
(string-append "PREFIX=" out)
|
|
|
|
|
(string-append "APIDIR=" m64p "/include/mupen64plus")
|
|
|
|
|
;; Trailing slash matters here.
|
|
|
|
|
(string-append "COREDIR=" m64p "/lib/")))
|
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
2019-07-10 04:30:16 -04:00
|
|
|
|
(home-page "https://www.mupen64plus.org/")
|
2019-07-10 04:39:29 -04:00
|
|
|
|
(synopsis "Mupen64Plus command line user interface")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(description
|
|
|
|
|
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
|
|
|
|
|
which is capable of accurately playing many games. This package contains the
|
|
|
|
|
command line user interface. Installing this package is the easiest way
|
|
|
|
|
towards a working Mupen64Plus for casual users.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public nestopia-ue
|
|
|
|
|
(package
|
|
|
|
|
(name "nestopia-ue")
|
2018-04-07 00:11:39 -04:00
|
|
|
|
(version "1.48")
|
2019-04-08 17:50:32 -04:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/rdanbrook/nestopia.git")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "19c8vx5yxbysl0sszk5blfngwacshdgwbf44g1qaxvq8ywiyxmb4"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
'(begin
|
|
|
|
|
;; We don't need libretro for the GNU/Linux build.
|
|
|
|
|
(delete-file-recursively "libretro")
|
|
|
|
|
#t))))
|
2018-04-07 00:11:39 -04:00
|
|
|
|
(build-system cmake-build-system)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("ao" ,ao)
|
|
|
|
|
("gtk+" ,gtk+)
|
|
|
|
|
("libarchive" ,libarchive)
|
2018-04-07 00:11:39 -04:00
|
|
|
|
("libepoxy" ,libepoxy)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
2018-04-07 00:11:39 -04:00
|
|
|
|
;; This fixes the file chooser crash that happens with GTK 3.
|
|
|
|
|
(add-after 'install 'wrap-program
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(nestopia (string-append out "/bin/nestopia"))
|
|
|
|
|
(gtk (assoc-ref inputs "gtk+"))
|
|
|
|
|
(gtk-share (string-append gtk "/share")))
|
|
|
|
|
(wrap-program nestopia
|
|
|
|
|
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
;; There are no tests.
|
|
|
|
|
#:tests? #f))
|
|
|
|
|
(home-page "http://0ldsk00l.ca/nestopia/")
|
|
|
|
|
(synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
|
|
|
|
|
(description
|
|
|
|
|
"Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
|
|
|
|
|
System (NES/Famicom) emulator Nestopia, with enhancements from members of the
|
|
|
|
|
emulation community. It provides highly accurate emulation.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
|
|
|
|
(define-public retroarch
|
|
|
|
|
(package
|
|
|
|
|
(name "retroarch")
|
2019-11-02 19:50:22 -04:00
|
|
|
|
(version "1.8.1")
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
2018-10-03 23:45:02 -04:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/libretro/RetroArch.git")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(sha256
|
2019-11-29 12:57:45 -05:00
|
|
|
|
(base32 "0y7rcpz7psf8k3agsrq277jdm651vbnn9xpqvmj2in1a786idya7"))
|
|
|
|
|
(patches
|
|
|
|
|
(search-patches "retroarch-disable-online-updater.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
'(begin
|
|
|
|
|
;; Don't suggest using the Online Updater if available: it never
|
|
|
|
|
;; is. This disables translation of this particular message.
|
|
|
|
|
(substitute* (find-files "menu/drivers" "\\.c$")
|
|
|
|
|
(("msg_hash_to_str\\(MSG_MISSING_ASSETS\\)")
|
|
|
|
|
"\"Warning: Missing assets, go get some\""))
|
|
|
|
|
#t))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
2018-09-13 11:40:02 -04:00
|
|
|
|
`(#:tests? #f ; no tests
|
2018-02-22 06:04:14 -05:00
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(replace 'configure
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(etc (string-append out "/etc"))
|
2019-02-05 05:36:22 -05:00
|
|
|
|
(vulkan (assoc-ref inputs "vulkan-loader"))
|
|
|
|
|
(wayland-protocols (assoc-ref inputs "wayland-protocols")))
|
2019-11-29 12:57:45 -05:00
|
|
|
|
;; Hard-code some store file names.
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(substitute* "gfx/common/vulkan_common.c"
|
|
|
|
|
(("libvulkan.so") (string-append vulkan "/lib/libvulkan.so")))
|
2019-02-05 05:36:22 -05:00
|
|
|
|
(substitute* "gfx/common/wayland/generate_wayland_protos.sh"
|
|
|
|
|
(("/usr/local/share/wayland-protocols")
|
|
|
|
|
(string-append wayland-protocols "/share/wayland-protocols")))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(substitute* "qb/qb.libs.sh"
|
|
|
|
|
(("/bin/true") (which "true")))
|
2019-11-29 12:57:45 -05:00
|
|
|
|
|
2018-09-13 11:39:22 -04:00
|
|
|
|
;; Use shared zlib.
|
|
|
|
|
(substitute* '("libretro-common/file/archive_file_zlib.c"
|
2019-08-26 09:07:58 -04:00
|
|
|
|
"libretro-common/streams/trans_stream_zlib.c")
|
2018-09-13 11:39:22 -04:00
|
|
|
|
(("<compat/zlib.h>") "<zlib.h>"))
|
2019-11-29 12:57:45 -05:00
|
|
|
|
|
2018-02-22 06:04:14 -05:00
|
|
|
|
;; The configure script does not yet accept the extra arguments
|
|
|
|
|
;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
|
2018-09-13 11:40:02 -04:00
|
|
|
|
(invoke
|
|
|
|
|
"./configure"
|
|
|
|
|
,@(if (string-prefix? "armhf" (or (%current-target-system)
|
|
|
|
|
(%current-system)))
|
|
|
|
|
'("--enable-neon" "--enable-floathard")
|
|
|
|
|
'())
|
|
|
|
|
(string-append "--prefix=" out)
|
2019-11-28 14:25:54 -05:00
|
|
|
|
(string-append "--global-config-dir=" etc)
|
|
|
|
|
"--disable-builtinminiupnpc")))))))
|
2018-02-22 06:04:14 -05:00
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("ffmpeg" ,ffmpeg)
|
|
|
|
|
("freetype" ,freetype)
|
|
|
|
|
("libxinerama" ,libxinerama)
|
|
|
|
|
("libxkbcommon" ,libxkbcommon)
|
|
|
|
|
("libxml2" ,libxml2)
|
2019-02-04 03:00:16 -05:00
|
|
|
|
("libxrandr" ,libxrandr)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("libxv" ,libxv)
|
|
|
|
|
("mesa" ,mesa)
|
2019-11-28 14:25:54 -05:00
|
|
|
|
("miniupnpc" ,miniupnpc)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("openal" ,openal)
|
|
|
|
|
("pulseaudio" ,pulseaudio)
|
|
|
|
|
("python" ,python)
|
2018-05-05 05:01:53 -04:00
|
|
|
|
("qtbase" ,qtbase)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("sdl" ,sdl2)
|
|
|
|
|
("udev" ,eudev)
|
2018-06-06 03:59:15 -04:00
|
|
|
|
("vulkan-loader" ,vulkan-loader)
|
2018-03-16 11:50:14 -04:00
|
|
|
|
("wayland" ,wayland)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
2019-02-05 05:36:22 -05:00
|
|
|
|
("wayland-protocols" ,wayland-protocols)
|
2018-02-22 06:04:14 -05:00
|
|
|
|
("which" ,which)))
|
|
|
|
|
(home-page "https://www.libretro.com/")
|
|
|
|
|
(synopsis "Reference frontend for the libretro API")
|
|
|
|
|
(description
|
|
|
|
|
"Libretro is a simple but powerful development interface that allows for
|
|
|
|
|
the easy creation of emulators, games and multimedia applications that can plug
|
|
|
|
|
straight into any libretro-compatible frontend. RetroArch is the official
|
|
|
|
|
reference frontend for the libretro API, currently used by most as a modular
|
|
|
|
|
multi-system game/emulator system.")
|
|
|
|
|
(license license:gpl3+)))
|
2018-05-24 18:34:46 -04:00
|
|
|
|
|
|
|
|
|
(define-public scummvm
|
|
|
|
|
(package
|
|
|
|
|
(name "scummvm")
|
2020-05-01 08:19:03 -04:00
|
|
|
|
(version "2.1.2")
|
2018-05-24 18:34:46 -04:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "http://www.scummvm.org/frs/scummvm/" version
|
|
|
|
|
"/scummvm-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
2020-05-01 08:19:03 -04:00
|
|
|
|
(base32 "1c4fz1nfg0nqnqx9iipayhzcsiqdmfxm2i95nw9dbhshhsdnrhf4"))))
|
2018-05-24 18:34:46 -04:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
2019-12-01 16:04:52 -05:00
|
|
|
|
`(#:tests? #f ;require "git"
|
2018-05-24 18:34:46 -04:00
|
|
|
|
#:configure-flags (list "--enable-release") ;for optimizations
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
2019-12-29 09:38:31 -05:00
|
|
|
|
(add-after 'unpack 'fix-build
|
|
|
|
|
;; XXX: The following works around a build failure introduced when
|
|
|
|
|
;; Fluidsynth was updated to version 2.1. It has been applied
|
|
|
|
|
;; upstream as 68758a879e0c8ecc0d40962516d4e808aa4e15e5 and can be
|
2020-01-18 23:45:03 -05:00
|
|
|
|
;; removed once this commit makes it into a release.
|
2019-12-29 09:38:31 -05:00
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "audio/softsynth/fluidsynth.cpp"
|
|
|
|
|
(("#include <fluidsynth.h>") "")
|
|
|
|
|
(("#include \"common/scummsys.h\"") "#include \"config.h\"")
|
|
|
|
|
(("#include \"common/config-manager.h\"" line)
|
|
|
|
|
(string-append "#include <fluidsynth.h>\n"
|
|
|
|
|
"#include \"common/scummsys.h\"\n"
|
|
|
|
|
line)))
|
|
|
|
|
#t))
|
2018-05-24 18:34:46 -04:00
|
|
|
|
(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)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(bash (which "bash"))
|
|
|
|
|
(flags `(,(string-append "--prefix=" out)
|
|
|
|
|
,@configure-flags)))
|
|
|
|
|
(setenv "SHELL" bash)
|
|
|
|
|
(setenv "CONFIG_SHELL" bash)
|
|
|
|
|
(apply invoke "./configure" flags)))))))
|
|
|
|
|
(native-inputs
|
2020-02-02 13:06:19 -05:00
|
|
|
|
`(("nasm" ,nasm)
|
|
|
|
|
("pkg-config" ,pkg-config)))
|
2018-05-24 18:34:46 -04:00
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("faad2" ,faad2)
|
|
|
|
|
("fluidsynth" ,fluidsynth)
|
|
|
|
|
("freetype" ,freetype)
|
2019-12-01 16:04:52 -05:00
|
|
|
|
("liba52" ,liba52)
|
2018-05-24 18:34:46 -04:00
|
|
|
|
("libflac" ,flac)
|
|
|
|
|
("libjpeg-turbo" ,libjpeg-turbo)
|
|
|
|
|
("libmad" ,libmad)
|
|
|
|
|
("libmpeg2" ,libmpeg2)
|
|
|
|
|
("libogg" ,libogg)
|
|
|
|
|
("libpng" ,libpng)
|
|
|
|
|
("libtheora" ,libtheora)
|
|
|
|
|
("libvorbis" ,libvorbis)
|
2019-12-01 16:04:52 -05:00
|
|
|
|
("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
|
2018-05-24 18:34:46 -04:00
|
|
|
|
("zlib" ,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
|
|
|
|
|
classic graphical point-and-click adventure games, provided you
|
|
|
|
|
already have their data files. The clever part about this: ScummVM
|
|
|
|
|
just replaces the executables shipped with the games, allowing you to
|
|
|
|
|
play them on systems for which they were never designed!")
|
|
|
|
|
(license license:gpl2+)))
|
2018-05-31 11:08:10 -04:00
|
|
|
|
|
|
|
|
|
(define-public mame
|
|
|
|
|
(package
|
|
|
|
|
(name "mame")
|
2020-06-30 20:52:54 -04:00
|
|
|
|
(version "0.222")
|
2018-05-31 11:08:10 -04:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/mamedev/mame.git")
|
|
|
|
|
(commit (apply string-append "mame" (string-split version #\.)))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
2020-06-30 20:52:54 -04:00
|
|
|
|
(base32 "1bfnwfxsnmza4s77ca0cyx4b290dwadkbbc2lyd7xa0yqrh7vvlx"))
|
2018-05-31 11:08:10 -04:00
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
;; Remove bundled libraries.
|
|
|
|
|
'(begin
|
|
|
|
|
(with-directory-excursion "3rdparty"
|
|
|
|
|
(for-each delete-file-recursively
|
|
|
|
|
'("asio" "expat" "glm" "libflac" "libjpeg" "lua"
|
|
|
|
|
"portaudio" "portmidi" "pugixml" "rapidjson" "SDL2"
|
|
|
|
|
"SDL2-override" "sqlite3" "utf8proc" "zlib")))
|
|
|
|
|
#t))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:make-flags
|
|
|
|
|
(cons*
|
2019-11-21 10:37:40 -05:00
|
|
|
|
;; A 'strict-overflow' error pops up on i686 so disable '-Werror'.
|
|
|
|
|
"NOWERROR=1"
|
2018-05-31 11:08:10 -04:00
|
|
|
|
(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
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
(add-after 'build 'build-documentation
|
|
|
|
|
(lambda _ (invoke "make" "-C" "docs" "man" "info")))
|
|
|
|
|
(replace 'install
|
|
|
|
|
;; Upstream does not provide an installation phase.
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(share (string-append out "/share/mame")))
|
|
|
|
|
;; Install data.
|
|
|
|
|
(for-each (lambda (dir)
|
|
|
|
|
(copy-recursively dir (string-append share "/" dir)))
|
|
|
|
|
'("artwork" "bgfx" "ctrlr" "hash" "ini" "language"
|
|
|
|
|
"plugins" "samples"))
|
|
|
|
|
(let ((keymaps (string-append share "/keymaps")))
|
|
|
|
|
(for-each (lambda (file) (install-file file keymaps))
|
|
|
|
|
(find-files "keymaps" ".*LINUX\\.map")))
|
|
|
|
|
(let ((fonts (string-append share "/fonts")))
|
|
|
|
|
(install-file "uismall.bdf" fonts))
|
2018-06-12 12:08:32 -04:00
|
|
|
|
(when (file-exists? "mame64")
|
|
|
|
|
(rename-file "mame64" "mame"))
|
2018-05-31 11:08:10 -04:00
|
|
|
|
(install-file "mame" (string-append out "/bin")))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'install-documentation
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(man (string-append out "/share/man/man1"))
|
|
|
|
|
(info (string-append out "/share/info")))
|
|
|
|
|
(install-file "docs/build/man/MAME.1" man)
|
|
|
|
|
(install-file "docs/build/texinfo/MAME.info" info))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'install-ini-file
|
|
|
|
|
;; Generate an ini file so as to set some directories (e.g., roms)
|
|
|
|
|
;; to a writable location, i.e., "$HOME/.mame/" and "$HOME/mame/".
|
|
|
|
|
;;
|
|
|
|
|
;; XXX: We need to insert absolute references to the store. It can
|
|
|
|
|
;; be an issue if they leak into user's home directory, e.g., with
|
|
|
|
|
;; "mame -createconfig" and the package is later GC'ed.
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(share (string-append out "/share/mame"))
|
|
|
|
|
(ini (string-append share "/ini")))
|
|
|
|
|
(with-output-to-file (string-append ini "/mame.ini")
|
|
|
|
|
(lambda _
|
|
|
|
|
(format #t
|
|
|
|
|
"inipath $HOME/.mame;~a/ini~@
|
|
|
|
|
homepath $HOME/mame~@
|
|
|
|
|
rompath $HOME/mame/roms~@
|
|
|
|
|
samplepath $HOME/mame/samples;~a/samples~@
|
|
|
|
|
cheatpath $HOME/mame/cheat~@
|
|
|
|
|
artpath $HOME/mame/artwork;~a/artwork~@
|
|
|
|
|
crosshairpath $HOME/mame/crosshair~@
|
|
|
|
|
snapshot_directory $HOME/mame/snapshots~@
|
|
|
|
|
hashpath ~a/hash~@
|
|
|
|
|
fontpath $HOME/mame/fonts;~a/fonts~@
|
|
|
|
|
ctrlrpath $HOME/mame/ctrlr;~a/ctrlr~@
|
|
|
|
|
bgfx_path ~a/bgfx~@
|
|
|
|
|
pluginspath $HOME/mame/plugins;~a/plugins~@
|
|
|
|
|
languagepath ~a/language~@
|
|
|
|
|
cfg_directory $HOME/.mame/cfg~@
|
|
|
|
|
nvram_directory $HOME/.mame/nvram~@
|
|
|
|
|
input_directory $HOME/.mame/inp~@
|
|
|
|
|
state_directory $HOME/.mame/sta~@
|
|
|
|
|
diff_directory $HOME/.mame/diff~@
|
|
|
|
|
comment_directory $HOME/.mame/comments~%"
|
|
|
|
|
share share share share share share share share
|
|
|
|
|
share)))
|
|
|
|
|
(with-output-to-file (string-append ini "/ui.ini")
|
|
|
|
|
(lambda _
|
|
|
|
|
(format #t
|
|
|
|
|
"historypath $HOME/mame/history~@
|
|
|
|
|
categorypath $HOME/mame/folders~@
|
|
|
|
|
cabinets_directory $HOME/mame/cabinets~@
|
|
|
|
|
cpanels_directory $HOME/mame/cpanel~@
|
|
|
|
|
pcbs_directory $HOME/mame/pcb~@
|
|
|
|
|
flyers_directory $HOME/mame/flyers~@
|
|
|
|
|
titles_directory $HOME/mame/titles~@
|
|
|
|
|
ends_directory $HOME/mame/ends~@
|
|
|
|
|
marquees_directory $HOME/mame/marquees~@
|
|
|
|
|
artwork_preview_directory $HOME/mame/artpreview~@
|
|
|
|
|
bosses_directory $HOME/mame/bosses~@
|
|
|
|
|
logos_directory $HOME/mame/logo~@
|
|
|
|
|
scores_directory $HOME/mame/scores~@
|
|
|
|
|
versus_directory $HOME/mame/versus~@
|
|
|
|
|
gameover_directory $HOME/mame/gameover~@
|
|
|
|
|
howto_directory $HOME/mame/howto~@
|
|
|
|
|
select_directory $HOME/mame/select~@
|
|
|
|
|
icons_directory $HOME/mame/icons~@
|
|
|
|
|
covers_directory $HOME/mame/covers~@
|
|
|
|
|
ui_path $HOME/.mame/ui~%")))
|
|
|
|
|
#t)))
|
|
|
|
|
(add-after 'install 'install-desktop-file
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(desktop (string-append out "/share/applications"))
|
|
|
|
|
(executable (string-append out "/bin/mame")))
|
|
|
|
|
(mkdir-p desktop)
|
|
|
|
|
(with-output-to-file (string-append desktop "/mame.desktop")
|
|
|
|
|
(lambda _
|
|
|
|
|
(format #t
|
|
|
|
|
"[Desktop Entry]~@
|
|
|
|
|
Name=mame~@
|
|
|
|
|
Comment=Multi-purpose emulation framework~@
|
|
|
|
|
Exec=~a~@
|
|
|
|
|
TryExec=~@*~a~@
|
|
|
|
|
Terminal=false~@
|
|
|
|
|
Type=Application~@
|
|
|
|
|
Categories=Game;Emulator;~@
|
|
|
|
|
Keywords=Game;Emulator;Arcade;~%"
|
|
|
|
|
executable)))
|
|
|
|
|
#t))))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
2019-04-03 15:28:17 -04:00
|
|
|
|
("sphinx" ,python-sphinx)
|
|
|
|
|
("sphinxcontrib-svg2pdfconverter" ,python-sphinxcontrib-svg2pdfconverter)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
("texinfo" ,texinfo)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("asio" ,asio)
|
|
|
|
|
("expat" ,expat)
|
|
|
|
|
("flac" ,flac)
|
|
|
|
|
("fontconfig" ,fontconfig)
|
|
|
|
|
("glm" ,glm)
|
2020-01-20 05:28:11 -05:00
|
|
|
|
("libjpeg" ,libjpeg-turbo)
|
2019-06-05 17:30:00 -04:00
|
|
|
|
("libxi" ,libxi)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
("libxinerama" ,libxinerama)
|
|
|
|
|
("lua" ,lua)
|
|
|
|
|
("portaudio" ,portaudio)
|
|
|
|
|
("portmidi" ,portmidi)
|
2019-03-10 15:16:09 -04:00
|
|
|
|
("pugixml" ,pugixml)
|
2018-05-31 11:08:10 -04:00
|
|
|
|
("python-wrapper" ,python-wrapper)
|
|
|
|
|
("qtbase" ,qtbase)
|
|
|
|
|
("rapidjson" ,rapidjson)
|
|
|
|
|
("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))
|
|
|
|
|
("sqlite" ,sqlite)
|
|
|
|
|
("utf8proc" ,utf8proc)
|
|
|
|
|
("zlib" ,zlib)))
|
2020-01-18 18:08:56 -05:00
|
|
|
|
(home-page "https://www.mamedev.org")
|
2018-05-31 11:08:10 -04:00
|
|
|
|
(synopsis "Multi-purpose emulation framework")
|
|
|
|
|
(description "MAME's purpose is to preserve decades of software
|
|
|
|
|
history. As electronic technology continues to rush forward, MAME
|
|
|
|
|
prevents this important @emph{vintage} software from being lost and
|
|
|
|
|
forgotten. This is achieved by documenting the hardware and how it
|
|
|
|
|
functions. The source code to MAME serves as this documentation.")
|
|
|
|
|
;; The MAME project as a whole is distributed under the terms of GPL2+.
|
|
|
|
|
;; However, over 90% of the files are under Expat license. Also, artwork,
|
|
|
|
|
;; keymaps, languages and samples are under CC0.
|
|
|
|
|
(license (list license:gpl2+ license:expat license:cc0))))
|
2019-10-21 08:45:10 -04:00
|
|
|
|
|
2020-02-18 09:26:49 -05:00
|
|
|
|
(define-public gnome-arcade
|
|
|
|
|
(package
|
|
|
|
|
(name "gnome-arcade")
|
|
|
|
|
(version "0.218.2")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/strippato/gnome-arcade")
|
|
|
|
|
(commit (string-append "v." version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"1qc01a62p65qb6mwjfmxqsd6n3rglsfwrjhsp25nr7q54107n55l"))))
|
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ; No tests.
|
|
|
|
|
#:configure-flags (list
|
|
|
|
|
(string-append "-DMAME_BIN=\""
|
|
|
|
|
(assoc-ref %build-inputs "mame")
|
|
|
|
|
"/bin/mame\"")
|
|
|
|
|
(string-append "-DAPP_RES=\""
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/share/gnome-arcade/\""))
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-before 'build 'fix-paths
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
|
|
|
|
(pk 'cwd (getcwd))
|
|
|
|
|
(substitute* "../source/src/config.c"
|
|
|
|
|
(("/usr/share") (string-append out "/share"))))
|
|
|
|
|
#t))
|
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(bin (string-append out "/bin"))
|
|
|
|
|
(rom (string-append out "/share/gnome-arcade/data/rom"))
|
|
|
|
|
(tile (string-append out "/share/gnome-arcade/data/tile")))
|
|
|
|
|
(mkdir-p bin)
|
|
|
|
|
(install-file "../gnome-arcade" bin)
|
|
|
|
|
(copy-recursively "../source/res"
|
|
|
|
|
(string-append out "/share/gnome-arcade/res"))
|
|
|
|
|
(mkdir-p rom)
|
|
|
|
|
(install-file "../source/data/rom/ROM.TXT" rom)
|
|
|
|
|
(mkdir-p tile)
|
|
|
|
|
(install-file "../source/data/tile/TILE.TXT" tile))
|
|
|
|
|
#t)))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("mame" ,mame)
|
|
|
|
|
("gtk" ,gtk+)
|
|
|
|
|
("libevdev" ,libevdev)
|
|
|
|
|
("libvlc" ,vlc)
|
|
|
|
|
("libarchive" ,libarchive)))
|
|
|
|
|
(home-page "https://github.com/strippato/gnome-arcade")
|
|
|
|
|
(synopsis "Minimal MAME frontend")
|
|
|
|
|
(description
|
|
|
|
|
"A minimal GTK+ frontend for MAME, the multi-purpose arcade and console
|
|
|
|
|
emulator.")
|
|
|
|
|
(license license:gpl3+)))
|
|
|
|
|
|
2019-10-21 08:45:10 -04:00
|
|
|
|
(define-public pcsxr
|
|
|
|
|
;; No release since 2017.
|
|
|
|
|
(let ((commit "6484236cb0281e8040ff6c8078c87899a3407534"))
|
|
|
|
|
(package
|
|
|
|
|
(name "pcsxr")
|
|
|
|
|
;; Version is tagged here: https://github.com/frealgagu/PCSX-Reloaded
|
|
|
|
|
(version "1.9.95")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/pcsxr/PCSX-Reloaded")
|
|
|
|
|
(commit commit)))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"138mayp7zi9v4l3lm5f6xxkds619w1fgg769zm8s45c84jbz7dza"))
|
|
|
|
|
(file-name (git-file-name name commit))))
|
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ;no "test" target
|
|
|
|
|
#:configure-flags
|
|
|
|
|
(list "-DSND_BACKEND=pulse"
|
|
|
|
|
"-DENABLE_CCDDA='ON'"
|
|
|
|
|
"-DUSE_LIBARCHIVE='ON'"
|
|
|
|
|
"-DUSE_LIBCDIO='ON'")
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'cd-subdir
|
2020-01-26 19:01:00 -05:00
|
|
|
|
(lambda _ (chdir "pcsxr") #t))
|
2019-10-21 08:45:10 -04:00
|
|
|
|
(add-before 'configure 'fix-cdio-lookup
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(substitute* "cmake/FindCdio.cmake"
|
|
|
|
|
(("/usr/include/cdio")
|
2020-01-26 19:01:00 -05:00
|
|
|
|
(string-append (assoc-ref inputs "libcdio") "/include/cdio")))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'wrap-program
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(wrap-program (string-append (assoc-ref outputs "out")
|
|
|
|
|
"/bin/pcsxr")
|
|
|
|
|
;; For GtkFileChooserDialog.
|
|
|
|
|
`("GSETTINGS_SCHEMA_DIR" =
|
|
|
|
|
(,(string-append (assoc-ref inputs "gtk+")
|
|
|
|
|
"/share/glib-2.0/schemas"))))
|
|
|
|
|
#t)))))
|
2019-10-21 08:45:10 -04:00
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("intltool" ,intltool)
|
|
|
|
|
("glib" ,glib "bin")))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("libcdio" ,libcdio)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("gtk+" ,gtk+)
|
|
|
|
|
("ffmpeg" ,ffmpeg)
|
|
|
|
|
("libxv" ,libxv)
|
|
|
|
|
("libarchive" ,libarchive)
|
|
|
|
|
("pulseaudio" ,pulseaudio)))
|
|
|
|
|
(home-page "https://archive.codeplex.com/?p=pcsxr")
|
|
|
|
|
(synopsis "PlayStation emulator")
|
|
|
|
|
(description
|
|
|
|
|
"A PlayStation emulator based on PCSX-df Project with bugfixes and
|
|
|
|
|
improvements.")
|
|
|
|
|
(license license:gpl2+))))
|
2019-10-21 12:09:02 -04:00
|
|
|
|
|
|
|
|
|
(define-public gens-gs
|
|
|
|
|
(package
|
|
|
|
|
(name "gens-gs")
|
|
|
|
|
(version "7")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://retrocdn.net/images/6/6d/Gens-gs-r"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"1ha5s6d3y7s9aq9f4zmn9p88109c3mrj36z2w68jhiw5xrxws833"))))
|
|
|
|
|
(build-system glib-or-gtk-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:system "i686-linux"
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'fix-CFLAGS
|
|
|
|
|
(lambda* _
|
|
|
|
|
;; Remove GTK API deprecation flags that cause build errors.
|
|
|
|
|
(substitute* "configure"
|
|
|
|
|
(("GTK_CFLAGS=\"\\$GTK_CFLAGS .*\"") ""))
|
|
|
|
|
#t)))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("nasm" ,nasm)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("sdl" ,sdl)
|
|
|
|
|
("gtk" ,gtk+-2)))
|
|
|
|
|
(home-page "https://segaretro.org/Gens/GS")
|
|
|
|
|
(synopsis "Emulator for Sega Genesis/Mega Drive systems")
|
|
|
|
|
(description
|
|
|
|
|
"Gens/GS is an emulator for the Mega Drive (also known as Sega Genesis),
|
|
|
|
|
derived from Gens. Project goals include clean source code, combined features
|
|
|
|
|
from various forks of Gens, and improved platform portability.")
|
|
|
|
|
(supported-systems '("i686-linux" "x86_64-linux"))
|
|
|
|
|
(license license:gpl2+)))
|
2020-06-16 04:52:49 -04:00
|
|
|
|
|
|
|
|
|
(define-public bsnes
|
|
|
|
|
(package
|
|
|
|
|
(name "bsnes")
|
|
|
|
|
(version "115")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/bsnes-emu/bsnes")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"0j054x38fwai61vj36sc04r3zkzay5acq2cgd9zqv5hs51s36g5b"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:make-flags (list "-C" "bsnes"
|
|
|
|
|
(string-append "prefix=" (assoc-ref %outputs "out")))
|
|
|
|
|
#:tests? #f ; No tests.
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(delete 'configure))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("alsa-lib" ,alsa-lib)
|
|
|
|
|
("ao" ,ao)
|
|
|
|
|
("cairo" ,cairo)
|
|
|
|
|
("eudev" ,eudev)
|
|
|
|
|
("gtksourceview-2" ,gtksourceview-2)
|
|
|
|
|
("libxrandr" ,libxrandr)
|
|
|
|
|
("libxv" ,libxv)
|
|
|
|
|
("openal" ,openal)
|
|
|
|
|
("pulseaudio" ,pulseaudio)
|
|
|
|
|
("sdl2" ,sdl2)))
|
|
|
|
|
(home-page "https://bsnes.dev/")
|
|
|
|
|
(synopsis "Emulator for the Super Nintendo / Super Famicom systems")
|
|
|
|
|
(description
|
|
|
|
|
"bsnes is a Super Nintendo / Super Famicom emulator that focuses on
|
|
|
|
|
performance, features, and ease of use.")
|
|
|
|
|
(license license:gpl3)))
|
2020-03-27 19:20:31 -04:00
|
|
|
|
|
|
|
|
|
;; python-pwntools requires a -rc release of unicorn
|
|
|
|
|
(define-public unicorn
|
|
|
|
|
(let ((unless-x86
|
|
|
|
|
(lambda (code)
|
|
|
|
|
(if (member (%current-system) '("x86_64-linux" "i686-linux"))
|
|
|
|
|
'()
|
|
|
|
|
code))))
|
|
|
|
|
(package
|
|
|
|
|
(name "unicorn")
|
|
|
|
|
(version "1.0.2-rc4")
|
|
|
|
|
;; NOTE: unicorn ships a bundled QEMU, but with a lot of custom modifications.
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/unicorn-engine/unicorn")
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy"))))
|
|
|
|
|
(outputs '("out" "python"))
|
|
|
|
|
;; The main library is not written in Python, but the build process has
|
|
|
|
|
;; little in common with any defined build system, so we might as well
|
|
|
|
|
;; build on top of python-build-system and make use of all
|
|
|
|
|
;; the Python-specific phases that can be reused.
|
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:modules ((srfi srfi-26)
|
|
|
|
|
(guix build python-build-system)
|
|
|
|
|
(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"
|
|
|
|
|
"-j" (number->string (parallel-job-count))
|
|
|
|
|
"UNICORN_STATIC=no"
|
|
|
|
|
"CC=gcc")))
|
|
|
|
|
(add-after 'build-library 'install-library
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(invoke "make" "install"
|
|
|
|
|
"UNICORN_STATIC=no"
|
|
|
|
|
(string-append
|
|
|
|
|
"PREFIX="
|
|
|
|
|
(assoc-ref outputs "lib")))))
|
|
|
|
|
(add-before 'build 'prepare-bindings
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(chdir "bindings/python")
|
|
|
|
|
;; Set this environment variable so that the Python bindings
|
|
|
|
|
;; don't build their own copy of the shared object, but use
|
|
|
|
|
;; a dummy value such that the bindings test suite uses the
|
|
|
|
|
;; same mechanism for loading the library as any other user.
|
|
|
|
|
(setenv "LIBUNICORN_PATH" "1")
|
|
|
|
|
(substitute* "unicorn/unicorn.py"
|
|
|
|
|
(("_path_list = \\[.*")
|
|
|
|
|
(string-append
|
|
|
|
|
"_path_list = [\""
|
|
|
|
|
(assoc-ref outputs "lib")
|
|
|
|
|
;; eat the rest of the list
|
|
|
|
|
"/lib\"] + 0*[")))
|
|
|
|
|
#t))
|
|
|
|
|
(add-before 'check 'check-library
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (suite)
|
|
|
|
|
(with-directory-excursion
|
|
|
|
|
(string-append "../../tests/" suite)
|
|
|
|
|
(invoke "make" "test" "CC=gcc"
|
|
|
|
|
,@(unless-x86
|
|
|
|
|
'("AS=i686-unknown-linux-gnu-as"
|
|
|
|
|
"OBJCOPY=i686-unknown-linux-gnu-objcopy")))))
|
|
|
|
|
'("unit" "regress"))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'install-samples
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((python-samples (find-files "." "sample_.*"))
|
|
|
|
|
(c-samples (find-files "../../samples" ".*\\.c"))
|
|
|
|
|
(python-docdir
|
|
|
|
|
(string-append (assoc-ref outputs "out")
|
|
|
|
|
"/share/doc/unicorn/samples"))
|
|
|
|
|
(c-docdir
|
|
|
|
|
(string-append (assoc-ref outputs "lib")
|
|
|
|
|
"/share/doc/unicorn/samples")))
|
|
|
|
|
(for-each (cut install-file <> c-docdir) c-samples)
|
|
|
|
|
(for-each (cut install-file <> python-docdir) python-samples)
|
|
|
|
|
#t))))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
;; NOTE: cross-binutils needs to be wrapped with unless-x86, as otherwise
|
|
|
|
|
;; the linker provided by the package will be used, circumventing the ld-wrapper.
|
|
|
|
|
`(,@(unless-x86
|
|
|
|
|
`(("assembler-for-tests" ,(cross-binutils "i686-unknown-linux-gnu"))))
|
|
|
|
|
("cmocka" ,cmocka)
|
|
|
|
|
("hexdump-for-tests" ,util-linux)))
|
|
|
|
|
(home-page "http://www.unicorn-engine.org")
|
|
|
|
|
(synopsis "Unicorn CPU emulator framework")
|
|
|
|
|
(description
|
|
|
|
|
"Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator
|
|
|
|
|
framework based on QEMU.")
|
|
|
|
|
(license license:gpl2+))))
|
2020-06-29 06:06:50 -04:00
|
|
|
|
|
|
|
|
|
(define-public ppsspp
|
|
|
|
|
(package
|
|
|
|
|
(name "ppsspp")
|
|
|
|
|
(version "1.10")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/hrydgard/ppsspp.git")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "02yx1w0ygclnmdl0imsvgj24lkzi55wvxkf47q617j0jgrqhy8yl"))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(patches
|
|
|
|
|
(search-patches "ppsspp-disable-upgrade-and-gold.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
`(begin
|
2020-06-30 13:34:38 -04:00
|
|
|
|
;; 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 (list "ext/native/thin3d/vulkan_utils.cpp"
|
|
|
|
|
"ext/native/thin3d/thin3d_vulkan.cpp")
|
|
|
|
|
(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/") "")
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(("ext/glslang/") "")
|
2020-06-30 13:34:38 -04:00
|
|
|
|
(("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.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(substitute* "CMakeLists.txt"
|
2020-06-30 13:34:38 -04:00
|
|
|
|
;; Drop unnecessary includes and targets.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(("include_directories\\(ext/glslang\\)") "")
|
2020-06-30 13:34:38 -04:00
|
|
|
|
(("include_directories\\(ext/xxhash\\)") "")
|
|
|
|
|
(("include_directories\\(ext/cityhash\\)") "")
|
|
|
|
|
(("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/native/ext/cityhash/.*\\.(cpp|h)") "")
|
|
|
|
|
;; Link all of spirv-cross.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(("spirv-cross-glsl" all)
|
|
|
|
|
(string-append all
|
|
|
|
|
" spirv-cross-core spirv-cross-cpp"
|
|
|
|
|
" spirv-cross-reflect spirv-cross-util")))
|
|
|
|
|
(substitute* "ext/CMakeLists.txt"
|
2020-06-30 13:34:38 -04:00
|
|
|
|
(("add_subdirectory\\(glew\\)") "")
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(("add_subdirectory\\(glslang\\)") "")
|
2020-06-30 13:34:38 -04:00
|
|
|
|
(("add_subdirectory\\(snappy\\)") "")
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(("add_subdirectory\\(SPIRV-Cross-build\\)") ""))
|
2020-06-30 13:34:38 -04:00
|
|
|
|
;; Finally, we can delete the bundled sources.
|
|
|
|
|
(for-each delete-file-recursively
|
|
|
|
|
'("ext/cmake"
|
|
|
|
|
"ext/glew"
|
|
|
|
|
"ext/glslang" "ext/glslang-build"
|
|
|
|
|
"ext/native/ext/cityhash"
|
|
|
|
|
"ext/native/ext/libpng17"
|
|
|
|
|
"ext/native/ext/libzip"
|
|
|
|
|
"ext/snappy"
|
|
|
|
|
"ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
|
|
|
|
|
"ext/vulkan"
|
|
|
|
|
"ext/xxhash.c"
|
|
|
|
|
"ext/xxhash.h"
|
|
|
|
|
"ext/zlib"))
|
|
|
|
|
;; Since we are not including git as an input, PPSSPP is confused
|
|
|
|
|
;; about its version. Let's fix that here.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(substitute* "git-version.cmake"
|
|
|
|
|
(("unknown") ,version))))))
|
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("pkg-config" ,pkg-config)
|
|
|
|
|
("python" ,python)))
|
|
|
|
|
(inputs
|
2020-06-30 13:34:38 -04:00
|
|
|
|
`(("cityhash" ,cityhash)
|
|
|
|
|
("ffmpeg" ,ffmpeg)
|
2020-06-29 06:06:50 -04:00
|
|
|
|
("glew" ,glew)
|
|
|
|
|
("glslang" ,glslang)
|
|
|
|
|
("libpng" ,libpng)
|
2020-06-30 13:34:38 -04:00
|
|
|
|
("libzip" ,libzip)
|
2020-06-29 06:06:50 -04:00
|
|
|
|
("mesa" ,mesa)
|
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
|
("snappy" ,snappy)
|
|
|
|
|
("spirv-cross" ,spirv-cross)
|
2020-06-30 13:34:38 -04:00
|
|
|
|
("vulkan-headers" ,vulkan-headers)
|
|
|
|
|
("vulkan-loader" ,vulkan-loader)
|
|
|
|
|
("xxhash" ,xxhash)
|
2020-06-29 06:06:50 -04:00
|
|
|
|
("zlib" ,zlib)
|
2020-06-30 13:34:38 -04:00
|
|
|
|
;; TODO: unbundle armips.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
("armips-source" ,(package-source armips))
|
|
|
|
|
("lang"
|
|
|
|
|
,(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/hrydgard/ppsspp-lang.git")
|
|
|
|
|
(commit "d184ba2b607a03435be579406b816c90add334e6")))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "0s003x6247nx09qd6a1jz1l2hsk5d6k1zmh8mg3m6hjjhvbvd9j9"))))
|
|
|
|
|
("tests"
|
|
|
|
|
,(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/hrydgard/pspautotests.git")
|
|
|
|
|
(commit "328b839c7243e7f733f9eae88d059485e3d808e7")))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "1gj1kr5ijxrqwvz7c41phskjr70ndp8iz0gr8c3xxsd8p9z5gdvm"))))))
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:out-of-source? #f
|
|
|
|
|
#:configure-flags (list "-DUSE_DISCORD=OFF"
|
|
|
|
|
"-DUSE_SYSTEM_FFMPEG=ON"
|
2020-06-30 13:34:38 -04:00
|
|
|
|
"-DUSE_SYSTEM_LIBZIP=ON"
|
|
|
|
|
;; for testing
|
2020-06-29 06:06:50 -04:00
|
|
|
|
"-DUNITTEST=ON" "-DHEADLESS=ON")
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'add-external-sources
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
2020-06-30 13:34:38 -04:00
|
|
|
|
;; TODO: unbundle armips.
|
2020-06-29 06:06:50 -04:00
|
|
|
|
(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))
|
|
|
|
|
(replace 'check
|
|
|
|
|
(lambda _
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (t) (invoke "./unitTest" t))
|
|
|
|
|
'("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
|
|
|
|
|
"SinCos" "VFPUSinCos" "MathUtil" "Parsers" "Jit"
|
|
|
|
|
"MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ" "MemMap"))
|
|
|
|
|
(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"))
|
|
|
|
|
|
|
|
|
|
(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
|
|
|
|
|
system.")
|
|
|
|
|
(license license:gpl2+)))
|