gnu: Add 'make-ld-wrapper' procedure.
[jackhill/guix/guix.git] / gnu / packages / games.scm
index 5261c19..192d0db 100644 (file)
@@ -4,9 +4,11 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +33,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -60,6 +63,8 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
@@ -246,7 +251,7 @@ level's exit.  The game is presented in a 2D side view.")
      (origin
        (method url-fetch)
        (uri (string-append "http://www.hyperrealm.com/" name "/"
-                           name  "-" version  ".tar.gz")) 
+                           name  "-" version  ".tar.gz"))
        (sha256
         (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
     (build-system gnu-build-system)
@@ -395,7 +400,7 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
 (define-public xboard
   (package
     (name "xboard")
-    (version "4.7.3")
+    (version "4.8.0")
     (source
      (origin
        (method url-fetch)
@@ -403,17 +408,8 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
                            ".tar.gz"))
        (sha256
         (base32
-         "1amy9krr0qkvcc7gnp3i9x9ma91fc5cq8hy3gdc7rmfsaczv1l3z"))))
+         "05rdj0nyirc4g1qi5hhrjy45y52ihp1j3ldq2c5bwrz0gzy4i3y8"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (alist-cons-before 
-        'configure 'pre-conf
-        ;; This is GNU.  So use gnuchess as the first choice of engine
-        (lambda _
-          (substitute* "xboard.conf.in" 
-            (("-firstChessProgram fairymax") "-firstChessProgram gnuchess")))
-        %standard-phases)))
     (inputs `(("cairo" ,cairo)
               ("librsvg" ,librsvg)
               ("libxt" ,libxt)
@@ -445,21 +441,21 @@ Portable Game Notation.")
      `(#:tests? #f
        #:phases
        (alist-replace
-        'configure 
+        'configure
         (lambda* (#:key outputs #:allow-other-keys)
-          
-          (substitute* "Imakefile" 
+
+          (substitute* "Imakefile"
             (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
              (string-append "XPMINCLUDE = -I" (assoc-ref %build-inputs "libxpm")
                             "/include/X11")))
-          
-          (substitute* "Imakefile" 
+
+          (substitute* "Imakefile"
             (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
-          
+
           ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
-          
-          (zero? (system* "xmkmf" "-a" 
-                          (string-append "-DProjectRoot=" 
+
+          (zero? (system* "xmkmf" "-a"
+                          (string-append "-DProjectRoot="
                                          (assoc-ref outputs "out")))))
         (alist-replace 'install
                        (lambda* (#:key outputs #:allow-other-keys)
@@ -517,69 +513,6 @@ alternative layouts Dvorak and Colemak, as well as for the numpad.  Tutorials
 are primarily in English, however some in other languages are provided.")
     (license license:gpl3+)))
 
-(define-public tiled
-  (package
-    (name "tiled")
-    (version "0.10.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/bjorn/tiled/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0p4p3lv4nw11fkfvvyjirb93r2x4w2rrc2w650gl2k57k92jpiij"))))
-    (build-system gnu-build-system)
-    (inputs `(("qt" ,qt)
-              ("zlib" ,zlib)))
-    (arguments
-     '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            (system* "qmake"
-                     (string-append "PREFIX=" out))))
-        %standard-phases)))
-    (home-page "http://www.mapeditor.org/")
-    (synopsis "Tile map editor")
-    (description
-     "Tiled is a general purpose tile map editor.  It is meant to be used for
-editing maps of any tile-based game, be it an RPG, a platformer or a Breakout
-clone.")
-
-    ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is
-    ;; under BSD-2.
-    (license license:gpl2+)))
-
-(define-public openal
-  (package
-    (name "openal")
-    (version "1.15.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://kcat.strangesoft.net/openal-releases/openal-soft-"
-                    version ".tar.bz2"))
-              (sha256
-               (base32
-                "0mmhdqiyb3c9dzvxspm8h2v8jibhi8pfjxnf6m0wn744y1ia2a8f"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f)) ; no check target
-    (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("pulseaudio" ,pulseaudio)))
-    (synopsis "3D audio API")
-    (description
-     "OpenAL provides capabilities for playing audio in a virtual 3D
-environment.  Distance attenuation, doppler shift, and directional sound
-emitters are among the features handled by the API.  More advanced effects,
-including air absorption, occlusion, and environmental reverb, are available
-through the EFX extension.  It also facilitates streaming audio, multi-channel
-buffers, and audio capture.")
-    (home-page "http://kcat.strangesoft.net/openal.html")
-    (license license:lgpl2.0+)))
-
 (define-public irrlicht
   (package
     (name "irrlicht")
@@ -638,15 +571,16 @@ for common mesh file formats, and collision detection.")
 (define minetest-data
   (package
     (name "minetest-data")
-    (version "0.4.10")
+    (version "0.4.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/minetest/minetest_game/archive/"
                     version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "09mr71kl7mf4ihszqz1vnwk814p7fvqknad150iic2340a7qzf0i"))))
+                "0642vy6r6sv96mz6wbs9qvyr95vd69zj4fxiljdg9801javrmm9p"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("source" ,source)
@@ -678,41 +612,28 @@ for common mesh file formats, and collision detection.")
 (define-public minetest
   (package
     (name "minetest")
-    (version "0.4.10")
+    (version "0.4.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/minetest/minetest/archive/"
                     version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1xxv0g83iqszjgwnbdcbsprqg76cb6jnbsh5qhm7lcwx4wy2y2k2"))
-              ;; This patch will be included in future upstream releases.
-              ;; See: https://github.com/minetest/minetest/commit/fd5eaae2babb322f8a3e2acab55a12e218814c8e
-              (patches (list (search-patch "minetest-subgame-env-var.patch")))))
+                "1pqp8hfwg5wkimig8j5jrihzgjjgplxr24w5xisrxvx1hlvnczdk"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:modules ((guix build utils)
-                  (guix build cmake-build-system)
-                  (ice-9 match))
-       #:phases (alist-cons-before
-                 'configure 'set-cpath
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (use-modules (ice-9 match))
-                   ;; Adjust the CPATH so that cmake can find irrlicht,
-                   ;; openal, and curl headers.
-                   (set-path-environment-variable "CPATH"
-                                                  '("include/AL"
-                                                    "include/irrlicht"
-                                                    "include/curl"
-                                                    "include")
-                                                  (map (match-lambda
-                                                        ((_ . dir) dir))
-                                                       inputs)))
-                 %standard-phases)
-       #:configure-flags '("-DRUN_IN_PLACE=0"
-                           "-DENABLE_FREETYPE=1"
-                           "-DENABLE_GETTEXT=1")
+     '(#:configure-flags
+         (list "-DRUN_IN_PLACE=0"
+               "-DENABLE_FREETYPE=1"
+               "-DENABLE_GETTEXT=1"
+               (string-append "-DIRRLICHT_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "irrlicht")
+                              "/include/irrlicht")
+               (string-append "-DCURL_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "curl")
+                              "/include/curl"))
        #:tests? #f)) ; no check target
     (native-search-paths
      (list (search-path-specification
@@ -723,7 +644,7 @@ for common mesh file formats, and collision detection.")
     (inputs
      `(("irrlicht" ,irrlicht)
        ("libpng" ,libpng)
-       ("libjpeg-8" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("libxxf86vm" ,libxxf86vm)
        ("mesa" ,mesa)
        ("libogg" ,libogg)
@@ -823,3 +744,81 @@ playing interactive fiction.  It was designed by Andrew Plotkin to relieve
 some of the restrictions in the venerable Z-machine format.  This is the
 reference interpreter, using Glk API.")
    (license (license:fsf-free "file://README"))))
+
+(define-public retroarch
+  (package
+    (name "retroarch")
+    (version "1.0.0.3-beta")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/libretro/RetroArch/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1iqcrb076xiih20sk8n1w79xsp4fb8pj4vkmdc1xn562h56y4nxx"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:phases
+       (alist-replace
+        'configure
+        (lambda _
+          (substitute* "qb/qb.libs.sh"
+            (("/bin/true") (which "true")))
+          (zero? (system*
+                  "./configure"
+                  (string-append "--prefix=" %output)
+                  (string-append "--global-config-dir=" %output "/etc"))))
+        %standard-phases)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("ffmpeg" ,ffmpeg)
+       ("freetype" ,freetype)
+       ("libxinerama" ,libxinerama)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxml2" ,libxml2)
+       ("libxv" ,libxv)
+       ("mesa" ,mesa)
+       ("openal" ,openal)
+       ("pulseaudio" ,pulseaudio)
+       ("python" ,python)
+       ("sdl" ,sdl2)
+       ("udev" ,eudev)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("which" ,which)))
+    (home-page "http://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+)))
+
+(define-public gnugo
+  (package
+    (name "gnugo")
+    (version "3.8")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnu/gnugo/gnugo-" version
+                                 ".tar.gz"))
+             (sha256
+              (base32
+               "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
+    (build-system gnu-build-system)
+    (inputs `(("readline" ,readline)))
+    (synopsis "Play the game of Go")
+    (description "GNU Go is a program that plays the game of Go, in which
+players place stones on a grid to form territory or capture other stones.
+While it can be played directly from the terminal, rendered in ASCII
+characters, it is also possible to play GNU Go with 3rd party graphical
+interfaces or even in Emacs.  It supports the standard game storage format
+(SGF, Smart Game Format) and inter-process communication format (GMP, Go
+Modem Protocol).")
+    (home-page "http://www.gnu.org/software/gnugo/")
+    (license license:gpl3+)))