gnu: Add dolphin-emu.
* gnu/packages/emulators.scm (dolphin-emu): New variable.
This commit is contained in:
parent
6352e99437
commit
e5f9ec8bc3
|
@ -0,0 +1,175 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 David Thompson <dthompson2@worcester.edu>
|
||||
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
|
||||
;;;
|
||||
;;; 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)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu packages audio)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages fonts)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages game-development)
|
||||
#: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)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pulseaudio)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages upnp)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages wxwidgets)
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (guix build-system cmake))
|
||||
|
||||
;; Building from recent Git because the official 5.0 release no longer builds.
|
||||
(define-public dolphin-emu
|
||||
(let ((commit "d04b179111f8d863f360839474cb82c766f762b8")
|
||||
(revision "0"))
|
||||
(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))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(for-each delete-file-recursively
|
||||
;; Remove external stuff we don't need.
|
||||
'("Externals/LZO"
|
||||
"Externals/OpenAL"
|
||||
"Externals/Qt"
|
||||
"Externals/SFML"
|
||||
"Externals/SOIL"
|
||||
"Externals/curl"
|
||||
"Externals/ffmpeg"
|
||||
"Externals/gettext"
|
||||
"Externals/hidapi"
|
||||
"Externals/libpng"
|
||||
"Externals/libusb"
|
||||
"Externals/mbedtls"
|
||||
"Externals/miniupnpc"
|
||||
"Externals/wxWidgets3"
|
||||
"Externals/zlib"))
|
||||
;; Clean up source.
|
||||
(for-each delete-file (find-files "." "\\.bin$"))
|
||||
(for-each delete-file (find-files "." "\\.dsy$"))
|
||||
(for-each delete-file (find-files "." "\\.exe$"))
|
||||
(for-each delete-file (find-files "." "\\.jar$"))
|
||||
(for-each delete-file (find-files "." "\\.rar$"))
|
||||
#t))
|
||||
(sha256
|
||||
(base32
|
||||
"0g725wmhlim73zrhi47wmr1bmplpy4b7sbimd5pm8xpfhj5nm10l"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f
|
||||
;; The FindGTK2 cmake script only checks hardcoded directories for
|
||||
;; glib/gtk headers.
|
||||
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'generate-fonts
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((fontfile
|
||||
(string-append (assoc-ref inputs "font-wqy-microhei")
|
||||
"/share/fonts/truetype/wqy-microhei.ttc")))
|
||||
(chdir "docs")
|
||||
(invoke "bash" "-c" "g++ -O2 -std=c++11 $(freetype-config \
|
||||
--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 "..")
|
||||
#t))))
|
||||
|
||||
#:configure-flags
|
||||
(list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
|
||||
(assoc-ref %build-inputs "gtk+")
|
||||
"/lib/gtk-2.0/include")
|
||||
(string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
|
||||
(assoc-ref %build-inputs "glib")
|
||||
"/lib/glib-2.0/include")
|
||||
(string-append "-DX11_INCLUDE_DIR="
|
||||
(assoc-ref %build-inputs "libx11")
|
||||
"/include")
|
||||
(string-append "-DX11_LIBRARIES="
|
||||
(assoc-ref %build-inputs "libx11")
|
||||
"/lib/libX11.so")
|
||||
"-DX11_FOUND=1")))
|
||||
; TODO: Make Vulkan backend work.
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("gettext" ,gnu-gettext)))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("ao" ,ao)
|
||||
("bluez" ,bluez)
|
||||
("curl" ,curl)
|
||||
("eudev" ,eudev)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("font-wqy-microhei" ,font-wqy-microhei)
|
||||
("freetype" ,freetype)
|
||||
("glew" ,glew)
|
||||
("glib" ,glib)
|
||||
("glu" ,glu)
|
||||
("gtk+" ,gtk+-2)
|
||||
("hidapi" ,hidapi)
|
||||
("libevdev" ,libevdev)
|
||||
("libpng" ,libpng)
|
||||
("libusb" ,libusb)
|
||||
("libx11" ,libx11)
|
||||
("libxi" ,libxi)
|
||||
("libxrandr" ,libxrandr)
|
||||
("lzo" ,lzo)
|
||||
("mbedtls-apache" ,mbedtls-apache)
|
||||
("mesa" ,mesa)
|
||||
("miniupnpc" ,miniupnpc)
|
||||
("openal" ,openal)
|
||||
("pulseaudio" ,pulseaudio)
|
||||
("qtbase" ,qtbase)
|
||||
("sdl2" ,sdl2)
|
||||
("sfml" ,sfml)
|
||||
("soil" ,soil)
|
||||
("soundtouch" ,soundtouch)
|
||||
("wxwidgets" ,wxwidgets-gtk2-3.1)
|
||||
("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.")
|
||||
(supported-systems '("x86_64-linux")) ; TODO: should also work on ARM64.
|
||||
; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
|
||||
(license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
|
Loading…
Reference in New Issue