aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/game-development.scm81
-rw-r--r--gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch22
2 files changed, 103 insertions, 0 deletions
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index d4b2fdcab2..05cc152afd 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -38,6 +38,7 @@
(define-module (gnu packages game-development)
#:use-module (srfi srfi-1)
+ #:use-module (ice-9 match)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@@ -2225,3 +2226,83 @@ rigid body physics library written in C.")
developers providing an advanced true color console, input, and lots of other
utilities frequently used in roguelikes.")
(license license:bsd-3)))
+
+(define-public warsow-qfusion
+ ;; As of 2020-04-09, the latest stable version 2.1.0 is deprecated.
+ ;; The 2.5 beta as published on the homepage is commit
+ ;; c4de15df559410aff0ca6643724e24cddb0ecbbd
+ (let ((commit "c4de15df559410aff0ca6643724e24cddb0ecbbd"))
+ (package
+ (name "warsow-qfusion")
+ (version (git-version "2.5" "1" commit)) ; 2.5-beta
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Warsow/qfusion/")
+ (commit commit)
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0xv2yycr43p3xmq7lm6j6zb3cpcr6w00x7qg918faq0mw9j7v48g"))
+ ;; Issue reported here: https://github.com/Warsow/qfusion/issues/46
+ (patches (search-patches "warsow-qfusion-fix-bool-return-type.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No tests.
+ #:configure-flags '("-DQFUSION_GAME=Warsow")
+ #:modules
+ ((guix build utils)
+ (guix build cmake-build-system)
+ (ice-9 match))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-to-build-dir
+ (lambda _
+ (chdir "source")
+ #t))
+ (add-after 'install 'really-install
+ (lambda* (#:key outputs system #:allow-other-keys)
+ (let ((arch (match system
+ ("x86_64-linux" "x86_64")
+ ("i686-linux" "i386")))
+ (out (assoc-ref outputs "out")))
+ (install-file (string-append "../source/build/basewsw/libgame_"
+ arch ".so")
+ (string-append out "/lib/"))
+ (install-file (string-append "../source/build/libui_" arch ".so")
+ (string-append out "/lib/"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append out "/bin/")))
+ (append (find-files "../source/build" "warsow")
+ (find-files "../source/build" "wsw_server."))))
+ #t)))))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("curl" ,curl)
+ ("freetype" ,freetype)
+ ("ffmpeg" ,ffmpeg)
+ ("libjpeg" ,libjpeg)
+ ("libogg" ,libogg)
+ ("libpng" ,libpng)
+ ("libtheora" ,libtheora)
+ ("libvorbis" ,libvorbis)
+ ("mesa" ,mesa)
+ ("openal" ,openal)
+ ("pulseaudio" ,pulseaudio)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("sdl2" ,sdl2)
+ ("uuid.h" ,util-linux)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/Warsow/qfusion")
+ (supported-systems '("i686-linux" "x86_64-linux"))
+ (synopsis "Warsow's fork of qfusion, the id Tech 2 derived game engine")
+ (description
+ "This package contains the game engine of Warsow, a first-person
+shooter video game. The engine is based on qfusion, the id Tech 2 derived
+game engine. id Tech 2 is the engine originally behind Quake 2.")
+ (license license:gpl2+))))
diff --git a/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch b/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch
new file mode 100644
index 0000000000..ec22377446
--- /dev/null
+++ b/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch
@@ -0,0 +1,22 @@
+diff --git a/source/ref_gl/r_imagelib.cpp b/source/ref_gl/r_imagelib.cpp
+index 418028a..f76916b 100644
+--- a/source/ref_gl/r_imagelib.cpp
++++ b/source/ref_gl/r_imagelib.cpp
+@@ -762,7 +762,7 @@ static void q_jpg_noop( j_decompress_ptr cinfo ) {
+
+ static boolean q_jpg_fill_input_buffer( j_decompress_ptr cinfo ) {
+ Com_DPrintf( "Premature end of jpeg file\n" );
+- return 1;
++ return TRUE;
+ }
+
+ static void q_jpg_skip_input_data( j_decompress_ptr cinfo, long num_bytes ) {
+@@ -955,7 +955,7 @@ bool WriteJPG( const char *name, r_imginfo_t *info, int quality ) {
+ }
+
+ // start compression
+- qjpeg_start_compress( &cinfo, true );
++ qjpeg_start_compress( &cinfo, TRUE );
+
+ // feed scanline data
+ w3 = cinfo.image_width * info->samples;