aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRutger Helling <rhelling@mykolab.com>2018-02-22 09:17:55 +0100
committerRutger Helling <rhelling@mykolab.com>2018-02-22 09:20:51 +0100
commite5f9ec8bc3bfae5922394b01ccc38f60b55a373d (patch)
tree0bc45e9a1e3dc1138c121716f0e51faa40686b81
parent6352e99437d6f9f10d872aabe070225fe01b9344 (diff)
downloadguix-e5f9ec8bc3bfae5922394b01ccc38f60b55a373d.tar
guix-e5f9ec8bc3bfae5922394b01ccc38f60b55a373d.tar.gz
gnu: Add dolphin-emu.
* gnu/packages/emulators.scm (dolphin-emu): New variable.
-rw-r--r--gnu/packages/emulators.scm175
1 files changed, 175 insertions, 0 deletions
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
new file mode 100644
index 0000000000..d0d0108115
--- /dev/null
+++ b/gnu/packages/emulators.scm
@@ -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+)))))