From e5f9ec8bc3bfae5922394b01ccc38f60b55a373d Mon Sep 17 00:00:00 2001 From: Rutger Helling Date: Thu, 22 Feb 2018 09:17:55 +0100 Subject: [PATCH] gnu: Add dolphin-emu. * gnu/packages/emulators.scm (dolphin-emu): New variable. --- gnu/packages/emulators.scm | 175 +++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 gnu/packages/emulators.scm 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 +;;; Copyright © 2018 Rutger Helling +;;; +;;; 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 . + +(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+)))))