gnu: libgit2: Patch use-after-free.
[jackhill/guix/guix.git] / gnu / packages / game-development.scm
CommitLineData
6cb89466
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Tomáš Čech <sleep_walker@suse.cz>
f586c877 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
c24fff61 4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
0f6139b1 5;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
68c6110c 6;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
e8ea01d9 7;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
1a0c4437 8;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
19d311b4 9;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
c8edd7e6 10;;; Copyright © 2016 Julian Graham <joolean@gmail.com>
6cb89466
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages game-development)
b0910aad 28 #:use-module ((guix licenses) #:prefix license:)
6cb89466
29 #:use-module (guix packages)
30 #:use-module (guix download)
2a068aec 31 #:use-module (guix git-download)
6cb89466 32 #:use-module (guix build-system cmake)
b0910aad 33 #:use-module (guix build-system gnu)
4bc37bf0 34 #:use-module (guix build-system python)
b0910aad 35 #:use-module (gnu packages)
2a068aec 36 #:use-module (gnu packages curl)
c24fff61 37 #:use-module (gnu packages databases)
99828fa7 38 #:use-module (gnu packages documentation)
d2cc38b7
KK
39 #:use-module (gnu packages fontutils)
40 #:use-module (gnu packages fribidi)
c24fff61
JG
41 #:use-module (gnu packages glib)
42 #:use-module (gnu packages gnunet)
43 #:use-module (gnu packages guile)
44 #:use-module (gnu packages multiprecision)
4bc37bf0 45 #:use-module (gnu packages music)
c24fff61 46 #:use-module (gnu packages ncurses)
4bc37bf0 47 #:use-module (gnu packages python)
b0910aad 48 #:use-module (gnu packages qt)
4bc37bf0 49 #:use-module (gnu packages video)
5809ffcc
DT
50 #:use-module (gnu packages compression)
51 #:use-module (gnu packages zip)
52 #:use-module (gnu packages gl)
53 #:use-module (gnu packages linux)
54 #:use-module (gnu packages xorg)
2a068aec 55 #:use-module (gnu packages xdisorg)
5809ffcc
DT
56 #:use-module (gnu packages fontutils)
57 #:use-module (gnu packages image)
58 #:use-module (gnu packages audio)
d620ea88
DT
59 #:use-module (gnu packages pulseaudio)
60 #:use-module (gnu packages gnome)
61 #:use-module (gnu packages gtk)
62 #:use-module (gnu packages sdl)
240f2785 63 #:use-module (gnu packages pkg-config)
83a4a70b
DT
64 #:use-module (gnu packages xiph)
65 #:use-module (gnu packages lua)
2a068aec
DT
66 #:use-module (gnu packages mp3)
67 #:use-module (gnu packages xml))
6cb89466
68
69(define-public bullet
70 (package
71 (name "bullet")
937bc2d1 72 (version "2.85.1")
6cb89466
73 (source (origin
74 (method url-fetch)
937bc2d1
EF
75 (uri (string-append "https://github.com/bulletphysics/bullet3/"
76 "archive/" version ".tar.gz"))
77 (file-name (string-append name "-" version ".tar.gz"))
6cb89466
78 (sha256
79 (base32
937bc2d1 80 "0qpd37ws0xlxwy55dg058a5b4yw2jxiz09yyc3lc0frpa05pq5bf"))))
6cb89466 81 (build-system cmake-build-system)
937bc2d1
EF
82 (arguments
83 '(#:configure-flags (list (string-append
84 "-DBUILD_SHARED_LIBS=ON "
85 "-DCMAKE_CXX_FLAGS=-fPIC "
86 (or (getenv "CXXFLAGS") "")))))
87 (inputs
88 `(("glu" ,glu)
89 ("libx11" ,libx11)
90 ("mesa" ,mesa)))
6cb89466
91 (home-page "http://bulletphysics.org/")
92 (synopsis "3D physics engine library")
93 (description
94 "Bullet is a physics engine library usable for collision detection. It
95is used in some video games and movies.")
b0910aad
DT
96 (license license:zlib)))
97
1a0c4437
KK
98(define-public deutex
99 (package
100 (name "deutex")
101 (version "4.4.902")
102 (source (origin
103 (method url-fetch)
104 (uri (string-append "https://github.com/Doom-Utils/" name
105 "/archive/v" version ".tar.gz"))
106 (file-name (string-append name "-" version ".tar.gz"))
107 (sha256
108 (base32
109 "0rwz1yzgd539x4h25kzhar4q02xyxjwfrcpz4m8ixi312a82p7cn"))))
110 (build-system gnu-build-system)
111 (arguments
112 '(#:tests? #f ; no check target
113 #:phases
114 (modify-phases %standard-phases
115 ;; The provided configure script takes a restricted number of arguments.
116 (replace 'configure
117 (lambda* (#:key outputs #:allow-other-keys)
118 (zero? (system* "./configure" "--prefix"
119 (assoc-ref %outputs "out")))))
120 ;; "make install" is broken for this package.
121 ;; Notably, the binaries overrwrite one another upon installation as
122 ;; they are all installed to the "bin" file in the output directory,
123 ;; and the manual page fails to install because the directory for the
124 ;; manual page is not created.
125 (replace 'install
126 (lambda* (#:key outputs #:allow-other-keys)
127 (let* ((out (assoc-ref %outputs "out"))
128 (bin (string-append out "/bin"))
129 (share (string-append out "/share")))
130 (install-file "deusf" bin)
131 (install-file "deutex" bin)
132 (install-file "deutex.6" (string-append share "/man/man6")))
133 #t)))))
134 (home-page "https://github.com/Doom-Utils/deutex")
135 (synopsis "WAD file composer for Doom and related games")
136 (description
137 "DeuTex is a wad composer for Doom, Heretic, Hexen and Strife. It can be
138used to extract the lumps of a wad and save them as individual files.
139Conversely, it can also build a wad from separate files. When extracting a
140lump to a file, it does not just copy the raw data, it converts it to an
141appropriate format (such as PPM for graphics, Sun audio for samples, etc.).
142Conversely, when it reads files for inclusion in pwads, it does the necessary
143conversions (for example, from PPM to Doom picture format). In addition,
144DeuTex has functions such as merging wads, etc.")
145 (license license:gpl2+)))
146
c24fff61
JG
147(define-public gzochi
148 (package
149 (name "gzochi")
7b39b7eb 150 (version "0.10.1")
c24fff61
JG
151 (source (origin
152 (method url-fetch)
153 (uri (string-append "mirror://savannah/gzochi/gzochi-"
154 version ".tar.gz"))
155 (sha256
156 (base32
7b39b7eb 157 "166rawdal45kvanhvi0bkzy1d2pwf1p0lzslb287lcnm9vdw97yy"))))
c24fff61
JG
158 (build-system gnu-build-system)
159 (arguments
160 '(#:phases (modify-phases %standard-phases
161 (add-before 'configure 'remove-Werror
162 (lambda _
163 ;; We can't build with '-Werror', notably
164 ;; because deprecated functions of
165 ;; libmicrohttpd are being used.
166 (substitute* (find-files "." "^Makefile\\.in$")
167 (("-Werror")
168 ""))
169 #t)))))
170 (native-inputs `(("pkgconfig" ,pkg-config)))
171 (inputs `(("bdb" ,bdb)
172 ("glib" ,glib)
c24fff61
JG
173 ("guile" ,guile-2.0)
174 ("libmicrohttpd" ,libmicrohttpd)
175 ("ncurses" ,ncurses)
176 ("sdl" ,sdl)
177 ("zlib" ,zlib)))
178 (home-page "http://www.nongnu.org/gzochi/")
179 (synopsis "Scalable middleware for multiplayer games")
180 (description
181 "gzochi is a framework for developing massively multiplayer online games.
182A server container provides services to deployed games, which are written in
183Guile Scheme, that abstract and simplify some of the most challenging and
184error-prone aspects of online game development: Concurrency, data persistence,
185and network communications. A very thin client library can be embedded to
186provide connectivity for client applications written in any language.")
187 (license license:gpl3+)))
188
b0910aad
DT
189(define-public tiled
190 (package
191 (name "tiled")
c055a37c 192 (version "0.18.0")
b0910aad
DT
193 (source (origin
194 (method url-fetch)
195 (uri (string-append "https://github.com/bjorn/tiled/archive/v"
196 version ".tar.gz"))
f586c877 197 (file-name (string-append name "-" version ".tar.gz"))
b0910aad
DT
198 (sha256
199 (base32
c055a37c 200 "0csrwf7k3fxv6bv580w6wxjk1q2j9mj9k0xba3nb1ms6jiz1bvzk"))))
b0910aad
DT
201 (build-system gnu-build-system)
202 (inputs `(("qt" ,qt)
203 ("zlib" ,zlib)))
204 (arguments
205 '(#:phases
d06fc008
EF
206 (modify-phases %standard-phases
207 (replace 'configure
208 (lambda* (#:key outputs #:allow-other-keys)
209 (let ((out (assoc-ref outputs "out")))
210 (system* "qmake"
211 (string-append "PREFIX=" out))))))))
b0910aad
DT
212 (home-page "http://www.mapeditor.org/")
213 (synopsis "Tile map editor")
214 (description
215 "Tiled is a general purpose tile map editor. It is meant to be used for
216editing maps of any tile-based game, be it an RPG, a platformer or a Breakout
217clone.")
218
219 ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is
220 ;; under BSD-2.
221 (license license:gpl2+)))
5809ffcc
DT
222
223(define-public sfml
224 (package
225 (name "sfml")
7d1b5022 226 (version "2.3.2")
5809ffcc
DT
227 (source (origin
228 (method url-fetch)
7d1b5022
RW
229 ;; Do not fetch the archives from
230 ;; http://mirror0.sfml-dev.org/files/ because files there seem
231 ;; to be changed in place.
232 (uri (string-append "https://github.com/SFML/SFML/archive/"
233 version ".tar.gz"))
234 (file-name (string-append name "-" version ".tar.gz"))
5809ffcc
DT
235 (sha256
236 (base32
7d1b5022 237 "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
5809ffcc
DT
238 (build-system cmake-build-system)
239 (arguments
a6e25a50
RW
240 '(#:configure-flags
241 (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE")
242 #:tests? #f)) ; no tests
5809ffcc
DT
243 (inputs
244 `(("mesa" ,mesa)
245 ("glew" ,glew)
240f2785
RW
246 ("flac" ,flac)
247 ("libvorbis" ,libvorbis)
5809ffcc 248 ("libx11" ,libx11)
240f2785 249 ("xcb-util-image" ,xcb-util-image)
5809ffcc
DT
250 ("libxrandr" ,libxrandr)
251 ("eudev" ,eudev)
252 ("freetype" ,freetype)
253 ("libjpeg" ,libjpeg)
254 ("libsndfile" ,libsndfile)
255 ("openal" ,openal)))
256 (home-page "http://www.sfml-dev.org")
257 (synopsis "Simple and Fast Multimedia Library")
258 (description
259 "SFML provides a simple interface to the various computer components,
260to ease the development of games and multimedia applications. It is composed
261of five modules: system, window, graphics, audio and network.")
262 (license license:zlib)))
d620ea88
DT
263
264(define-public sfxr
265 (package
266 (name "sfxr")
267 (version "1.2.1")
268 (source (origin
269 (method url-fetch)
270 (uri (string-append "http://www.drpetter.se/files/sfxr-sdl-1.2.1.tar.gz"))
271 (sha256
272 (base32
273 "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya"))))
274 (build-system gnu-build-system)
275 (arguments
276 `(#:phases (modify-phases %standard-phases
277 (delete 'configure) ; no configure script
278 (add-before 'build 'patch-makefile
279 (lambda* (#:key outputs #:allow-other-keys)
280 (let ((out (assoc-ref outputs "out")))
281 (substitute* "Makefile"
282 (("\\$\\(DESTDIR\\)/usr") out))
283 (substitute* "main.cpp"
284 (("/usr/share")
285 (string-append out "/share")))
286 #t))))
287 #:tests? #f)) ; no tests
288 (native-inputs
289 `(("pkg-config" ,pkg-config)
290 ("desktop-file-utils" ,desktop-file-utils)))
291 (inputs
292 `(("sdl" ,sdl)
293 ("gtk+" ,gtk+)))
294 (synopsis "Simple sound effect generator")
295 (description "Sfxr is a tool for quickly generating simple sound effects.
296Originally created for use in video game prototypes, it can generate random
297sounds from presets such as \"explosion\" or \"powerup\".")
298 (home-page "http://www.drpetter.se/project_sfxr.html")
299 (license license:expat)))
0f6139b1
AK
300
301(define-public physfs
302 (package
303 (name "physfs")
304 (version "2.0.3")
305 (source (origin
306 (method url-fetch)
307 (uri (string-append
308 "http://icculus.org/physfs/downloads/physfs-"
309 version ".tar.bz2"))
310 (file-name (string-append name "-" version ".tar.gz"))
311 (sha256
312 (base32
313 "0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"))))
314 (build-system cmake-build-system)
315 (arguments
316 '(#:tests? #f)) ; no check target
317 (inputs
318 `(("zlib" ,zlib)))
319 (native-inputs
320 `(("doxygen" ,doxygen)))
321 (home-page "http://icculus.org/physfs")
322 (synopsis "File system abstraction library")
323 (description
324 "PhysicsFS is a library to provide abstract access to various archives.
325It is intended for use in video games. For security, no file writing done
326through the PhysicsFS API can leave a defined @emph{write directory}. For
327file reading, a @emph{search path} with archives and directories is defined,
328and it becomes a single, transparent hierarchical file system. So archive
329files can be accessed in the same way as you access files directly on a disk,
330and it makes it easy to ship a new archive that will override a previous
331archive on a per-file basis.")
332 (license license:zlib)))
83a4a70b
DT
333
334(define-public love
335 (package
336 (name "love")
2c1d46b2 337 (version "0.10.2")
83a4a70b
DT
338 (source (origin
339 (method url-fetch)
340 (uri (string-append "https://bitbucket.org/rude/love/downloads/"
341 "love-" version "-linux-src.tar.gz"))
342 (sha256
343 (base32
2c1d46b2 344 "11x346pw0gqad8nmkmywzx4xpcbfc3dslbrdw5x94n1i25mk0sxj"))))
83a4a70b
DT
345 (build-system gnu-build-system)
346 (native-inputs
347 `(("pkg-config" ,pkg-config)))
348 (inputs
349 `(("devil" ,devil)
350 ("freetype" ,freetype)
351 ("libmodplug" ,libmodplug)
05d48c52 352 ("libtheora" ,libtheora)
83a4a70b
DT
353 ("libvorbis" ,libvorbis)
354 ("luajit" ,luajit)
355 ("mesa" ,mesa)
356 ("mpg123" ,mpg123)
357 ("openal" ,openal)
358 ("physfs" ,physfs)
359 ("sdl2" ,sdl2)
360 ("zlib" ,zlib)))
361 (synopsis "2D game framework for Lua")
362 (description "LÖVE is a framework for making 2D games in the Lua
363programming language.")
364 (home-page "https://love2d.org/")
365 (license license:zlib)))
154f6156
DT
366
367(define-public allegro-4
368 (package
369 (name "allegro")
370 (version "4.4.2")
371 (source (origin
372 (method url-fetch)
373 (uri (string-append "http://download.gna.org/allegro/allegro/"
374 version "/allegro-" version ".tar.gz"))
375 (sha256
376 (base32
377 "1p0ghkmpc4kwij1z9rzxfv7adnpy4ayi0ifahlns1bdzgmbyf88v"))))
378 (build-system cmake-build-system)
379 (arguments
380 '(#:phases
381 (modify-phases %standard-phases
382 (add-after 'unpack 'patch-build-system
383 (lambda _
384 ;; Build addons as shared libraries. Trying to set ADDON_LINKAGE
385 ;; via a command line option doesn't work because it is
386 ;; unconditionally clobbered in the build script.
387 (substitute* '("CMakeLists.txt")
388 (("ADDON_LINKAGE STATIC")
389 "ADDON_LINKAGE SHARED"))
390 #t)))))
391 (inputs
392 `(("glu" ,glu)
393 ("libpng" ,libpng)
394 ("libvorbis" ,libvorbis)
395 ("mesa" ,mesa)
396 ("zlib" ,zlib)))
397 (synopsis "Game programming library")
398 (description "Allegro is a library mainly aimed at video game and
399multimedia programming. It handles common, low-level tasks such as creating
400windows, accepting user input, loading data, drawing images, playing sounds,
401etc.")
402 (home-page "http://liballeg.org")
403 (license license:giftware)))
2a068aec 404
19d311b4
RW
405(define-public allegro
406 (package
407 (name "allegro")
408 (version "5.2.0")
409 (source (origin
410 (method url-fetch)
411 (uri (string-append "http://download.gna.org/allegro/allegro/"
412 version "/allegro-" version ".tar.gz"))
413 (sha256
414 (base32
415 "1mwzgzc4nb5k5zkbq7yrc6hg63yxq3wk69lmjag1h19x8b6njnmg"))))
416 (build-system cmake-build-system)
417 (arguments `(#:tests? #f)) ; there are no tests
418 (inputs
419 ;; FIXME: Add the following optional inputs: xinput2, opensl, dumb
420 `(("flac" ,flac)
421 ("freetype" ,freetype)
422 ("glu" ,glu)
423 ("gtk" ,gtk+-2)
424 ("libjpeg" ,libjpeg)
425 ("libpng" ,libpng)
426 ("libtheora" ,libtheora)
427 ("libvorbis" ,libvorbis)
428 ("libxcursor" ,libxcursor)
429 ("libxinerama" ,libxinerama)
430 ("libxrandr" ,libxrandr)
431 ("mesa" ,mesa)
432 ("openal" ,openal)
433 ("physfs" ,physfs)
434 ("zlib" ,zlib)))
435 (native-inputs
436 `(("pkg-config" ,pkg-config)))
437 (synopsis "Game programming library")
438 (description "Allegro is a library mainly aimed at video game and
439multimedia programming. It handles common, low-level tasks such as creating
440windows, accepting user input, loading data, drawing images, playing sounds,
441etc.")
442 (home-page "http://liballeg.org")
443 (license license:bsd-3)))
444
cdf8f391
RW
445(define-public allegro-5.0
446 (package (inherit allegro)
447 (name "allegro")
448 (version "5.0.11")
449 (source (origin
450 (method url-fetch)
451 (uri (string-append "http://download.gna.org/allegro/allegro/"
452 version "/allegro-" version ".tar.gz"))
453 (sha256
454 (base32
455 "0cd51qrh97jrr0xdmnivqgwljpmizg8pixsgvc4blqqlaz4i9zj9"))))))
456
2a068aec
DT
457(define-public aseprite
458 (package
459 (name "aseprite")
460 (version "1.1.1")
461 ;; The release tarball isn't good enough because it's missing some
462 ;; necessary code that is only in git submodules.
463 (source (origin
464 (method git-fetch)
465 (uri (git-reference
466 (url "https://github.com/aseprite/aseprite.git")
467 (commit "v1.1.1")
468 (recursive? #t)))
469 (sha256
470 (base32
471 "1yr0l3bc68lyrffrzxgw98zznv8yz5ldl98lyvp6s5grny4s4jyk"))))
472 (build-system cmake-build-system)
473 (arguments
474 '(#:configure-flags
475 ;; Use shared libraries instead of building bundled source.
476 (list "-DWITH_WEBP_SUPPORT=1"
477 "-DUSE_SHARED_CURL=1"
478 "-DUSE_SHARED_GIFLIB=1"
479 "-DUSE_SHARED_JPEGLIB=1"
480 "-DUSE_SHARED_ZLIB=1"
481 "-DUSE_SHARED_LIBPNG=1"
482 "-DUSE_SHARED_LIBLOADPNG=1"
483 "-DUSE_SHARED_LIBWEBP=1"
484 "-DUSE_SHARED_TINYXML=1"
485 "-DUSE_SHARED_PIXMAN=1"
486 "-DUSE_SHARED_FREETYPE=1"
487 "-DUSE_SHARED_ALLEGRO4=1"
488 "-DENABLE_UPDATER=0" ; no auto-updates
489 (string-append "-DFREETYPE_INCLUDE_DIR="
490 (assoc-ref %build-inputs "freetype")
de1d68a2 491 "/include/freetype2"))))
2a068aec
DT
492 (native-inputs
493 `(("pkg-config" ,pkg-config)))
494 ;; TODO: Use a patched Allegro 4 that supports window resizing. This
495 ;; patched version is bundled with Aseprite, but the patches should be
496 ;; extracted and applied on top of a standalone Allegro 4 package.
497 (inputs
498 `(("allegro" ,allegro-4)
499 ("curl" ,curl)
500 ("freetype" ,freetype)
501 ("giflib" ,giflib)
502 ("libjpeg" ,libjpeg)
503 ("libpng" ,libpng)
504 ("libwebp" ,libwebp)
505 ("libx11" ,libx11)
506 ("libxext" ,libxext)
507 ("libxxf86vm" ,libxxf86vm)
508 ("pixman" ,pixman)
509 ("tinyxml" ,tinyxml)
510 ("zlib" ,zlib)))
511 (synopsis "Animated sprite editor and pixel art tool")
512 (description "Aseprite is a tool for creating 2D pixel art for video
513games. In addition to basic pixel editing features, Aseprite can assist in
514the creation of animations, tiled graphics, texture atlases, and more.")
515 (home-page "http://www.aseprite.org/")
516 (license license:gpl2+)))
966dff3b
KY
517
518(define-public qqwing
519 (package
520 (name "qqwing")
521 (version "1.3.4")
522 (source (origin
523 (method url-fetch)
524 (uri (string-append
525 "https://qqwing.com/"
526 name "-" version ".tar.gz"))
527 (sha256
528 (base32
529 "0bw0papyqjg22z6irf36gs54y8236wa37b6gyn2h1spy65n76lqp"))))
530 (build-system gnu-build-system)
531 (native-inputs
532 `(("pkg-config" ,pkg-config)))
533 (home-page "https://qqwing.com/")
534 (synopsis "Sudoku puzzle solver and generator")
535 (description
536 "QQWing is a Sudoku puzzle generator and solver.
537It offers the following features:
538@enumerate
539@item Can solve 1000 puzzles in 1 second and generate 1000 puzzles in 25 seconds.
540@item Uses logic. Uses as many solve techniques as possible when solving
541 puzzles rather than guessing.
542@item Rates puzzles. Most generators don't give an indication of the difficulty
543 of a Sudoku puzzle. QQwing does.
544@item Can print solve instructions for any puzzle.
545@item Customizable output style, including a CSV style that is easy to
546 import into a database.
547@end enumerate")
548 (license license:gpl2+)))
d2cc38b7
KK
549
550(define-public quesoglc
551 (package
552 (name "quesoglc")
553 (version "0.7.2")
554 (source (origin
555 (method url-fetch)
556 (uri (string-append "mirror://sourceforge/" name "/" version "/"
557 name "-" version "-free.tar.bz2"))
558 (sha256
559 (base32
560 "08ddhywdy2qg17m592ng3yr0p1ih96irg8wg729g75hsxxq9ipks"))))
561 (build-system gnu-build-system)
562 (native-inputs `(("pkg-config" ,pkg-config)))
563 (inputs `(("fontconfig" ,fontconfig)
564 ("freeglute" ,freeglut)
565 ("fribidi" ,fribidi)
566 ("glew" ,glew)))
567 (home-page "http://quesoglc.sourceforge.net")
568 (synopsis "Implementation of the OpenGL Character Renderer (GLC)")
569 (description
570 "The OpenGL Character Renderer (GLC) is a state machine that provides
571OpenGL programs with character rendering services via an application programming
572interface (API).")
573 (license (list license:expat license:lgpl2.1+))))
4bc37bf0
KK
574
575(define-public python-pygame
576 (package
577 (name "python-pygame")
052f75da 578 (version "1.9.3")
4bc37bf0
KK
579 (source (origin
580 (method url-fetch)
052f75da 581 (uri (pypi-uri "pygame" version))
4bc37bf0
KK
582 (sha256
583 (base32
052f75da 584 "1hlydiyygl444bq5m5g8n3jsxsgrdyxlm42ipmfbw36wkf0j243m"))))
4bc37bf0
KK
585 (build-system python-build-system)
586 (arguments
052f75da 587 `(#:tests? #f ; Tests require pygame to be installed first.
4bc37bf0
KK
588 #:phases
589 (modify-phases %standard-phases
590 ;; Set the paths to the dependencies manually because
591 ;; the configure script does not allow passing them as
592 ;; parameters. This also means we can skip the configure
593 ;; phase.
594 (add-before 'build 'set-library-paths
595 (lambda* (#:key inputs outputs #:allow-other-keys)
596 (let ((sdl-ref (assoc-ref inputs "sdl"))
597 (font-ref (assoc-ref inputs "sdl-ttf"))
598 (image-ref (assoc-ref inputs "sdl-image"))
599 (mixer-ref (assoc-ref inputs "sdl-mixer"))
600 (smpeg-ref (assoc-ref inputs "libsmpeg"))
601 (png-ref (assoc-ref inputs "libpng"))
602 (jpeg-ref (assoc-ref inputs "libjpeg"))
052f75da 603 (freetype-ref (assoc-ref inputs "freetype"))
4bc37bf0
KK
604 (v4l-ref (assoc-ref inputs "v4l-utils"))
605 (out-ref (assoc-ref outputs "out")))
606 (substitute* "Setup.in"
607 (("SDL = -I/usr/include/SDL")
608 (string-append "SDL = -I" sdl-ref "/include/SDL -I.")))
609 (substitute* "Setup.in"
610 (("FONT = -lSDL_ttf")
611 (string-append "FONT = -I" font-ref "/include/SDL -L"
612 font-ref "/lib -lSDL_ttf")))
613 (substitute* "Setup.in"
614 (("IMAGE = -lSDL_image")
615 (string-append "IMAGE = -I" image-ref "/include/SDL -L"
616 image-ref "/lib -lSDL_image")))
617 (substitute* "Setup.in"
618 (("MIXER = -lSDL_mixer")
619 (string-append "MIXER = -I" mixer-ref "/include/SDL -L"
620 mixer-ref "/lib -lSDL_mixer")))
621 (substitute* "Setup.in"
622 (("SMPEG = -lsmpeg")
623 (string-append "SMPEG = -I" smpeg-ref "/include/smpeg -L"
624 smpeg-ref "/lib -lsmpeg")))
625 (substitute* "Setup.in"
626 (("PNG = -lpng")
627 (string-append "PNG = -I" png-ref "/include -L"
628 png-ref "/lib -lpng")))
629 (substitute* "Setup.in"
630 (("JPEG = -ljpeg")
631 (string-append "JPEG = -I" jpeg-ref "/include -L"
632 jpeg-ref "/lib -ljpeg")))
052f75da
DM
633
634 (substitute* "Setup.in"
635 (("FREETYPE = -lfreetype")
636 (string-append "FREETYPE = -I" freetype-ref "/include/freetype2 -L"
637 freetype-ref "/lib -lfreetype")))
638
4bc37bf0
KK
639 (substitute* "Setup.in"
640 (("^pypm") "#pypm"))
4bc37bf0
KK
641 ;; Create a path to a header file provided by v4l-utils.
642 (system* "mkdir" "linux")
643 (system* "ln" "--symbolic"
644 (string-append v4l-ref "/include/libv4l1-videodev.h")
645 "linux/videodev.h")
646 (system* "ln" "--symbolic" "Setup.in" "Setup")))))))
4bc37bf0 647 (inputs
052f75da
DM
648 `(("freetype" ,freetype)
649 ("sdl" ,sdl)
4bc37bf0
KK
650 ("sdl-image" ,sdl-image)
651 ("sdl-mixer" ,sdl-mixer)
652 ("sdl-ttf" ,sdl-ttf)
653 ("sdl-gfx" ,sdl-gfx)
654 ("libjpeg" ,libjpeg)
655 ("libpng" ,libpng)
656 ("libX11" ,libx11)
657 ("libsmpeg" ,libsmpeg)
658 ("portmidi" ,portmidi)
659 ("v4l-utils" ,v4l-utils)))
660 (home-page "http://www.pygame.org")
661 (synopsis "SDL wrapper for Python")
662 (description "Pygame is a set of Python modules designed for writing games.
663Pygame adds functionality on top of the excellent SDL library. This allows you
664to create fully featured games and multimedia programs in the python language.")
665 (license (list license:bsd-2
666 ;; python numeric license as listed by Debian looks like
667 ;; an Expat-style license with a warranty disclaimer for
668 ;; the U.S. government and the University of California.
669 license:expat
670 license:lgpl2.0+
671 license:lgpl2.1+
672 license:gpl3+
673 license:psfl
674 license:public-domain
675 license:lgpl2.1+))))
052f75da
DM
676
677(define-public python2-pygame
678 (package-with-python2 python-pygame))
68c6110c
DT
679
680(define-public grafx2
681 (package
682 (name "grafx2")
683 (version "2.4")
684 (source (origin
685 (method url-fetch)
686 ;; XXX: There is no URL that contains the version. :(
687 (uri "http://pulkomandy.tk/projects/GrafX2/downloads/21")
688 (sha256
689 (base32
690 "0svsy6rqmdj11b400c242i2ixihyz0hds0dgicqz6g6dcgmcl62q"))))
691 (build-system gnu-build-system)
692 (arguments
693 '(#:phases
694 (modify-phases %standard-phases
695 (delete 'configure) ; no configure script
696 (add-before 'build 'change-to-src-directory
697 (lambda _
698 (chdir "src")
699 #t)))
700 #:make-flags
701 ;; SDL header files are referenced without the preceeding "SDL/".
702 (list (string-append "CFLAGS=-I"
703 (assoc-ref %build-inputs "sdl-union")
704 "/include/SDL")
705 (string-append "prefix="
706 (assoc-ref %outputs "out")))
707 #:tests? #f)) ; no check target
708 (native-inputs
709 `(("pkg-config" ,pkg-config)))
710 (inputs
711 `(("libpng" ,libpng)
712 ("lua" ,lua-5.1)
713 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-ttf)))))
714 (synopsis "Bitmap paint program")
715 (description "GrafX2 is a bitmap paint program inspired by the Amiga
716programs ​Deluxe Paint and Brilliance. Specializing in 256-color drawing, it
717includes a very large number of tools and effects that make it particularly
718suitable for pixel art, game graphics, and generally any detailed graphics
719painted with a mouse.")
720 (home-page "http://pulkomandy.tk/projects/GrafX2")
721 (license license:gpl2))) ; GPLv2 only