From b8024fa1ade69a4f97990f0e3379eef01dfd40c2 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Sat, 22 Feb 2025 01:08:27 -0500 Subject: [PATCH] gnu: Add woof-doom. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/patches/woof-doom-unbundle-spng-miniz.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/games.scm (woof-doom): New variable. Change-Id: I77cfa0fd2f2a20d6eee5d0339b9673899bb0ecad Signed-off-by: 宋文武 --- gnu/local.mk | 1 + gnu/packages/games.scm | 63 +++++++++++++++++++ .../woof-doom-unbundle-spng-miniz.patch | 26 ++++++++ 3 files changed, 90 insertions(+) create mode 100644 gnu/packages/patches/woof-doom-unbundle-spng-miniz.patch diff --git a/gnu/local.mk b/gnu/local.mk index 4cb60ade0f..8dfaf66947 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2411,6 +2411,7 @@ dist_patch_DATA = \ %D%/packages/patches/wmctrl-64-fix.patch \ %D%/packages/patches/wmfire-dont-inline-draw-fire.patch \ %D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \ + %D%/packages/patches/woof-doom-unbundle-spng-miniz.patch \ %D%/packages/patches/wordnet-CVE-2008-2149.patch \ %D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \ %D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch \ diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 6db6bce8bb..fa4e4769c9 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -88,6 +88,7 @@ ;;; Copyright © 2024 Ashvith Shetty ;;; Copyright © 2025 Sharlatan Hellseher ;;; Copyright © 2023-2025 Adam Faiz +;;; Copyright © 2025 Andrew Wong ;;; ;;; This file is part of GNU Guix. ;;; @@ -8999,6 +9000,68 @@ entirely config file, savegame, netplay and demo compatible with the original.") (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom"))) +(define-public woof-doom + (package + (name "woof-doom") + (version "15.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fabiangreffrath/woof") + (commit (string-append "woof_" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04c7hm4jnr9aiz6w4520zww6b7j86qv9xaf87hdv48cjc9sp2ljk")) + (modules '((guix build utils))) + (snippet '(begin + (with-directory-excursion "third-party" + (delete-file-recursively "miniz") + (delete-file-recursively "yyjson") + (delete-file-recursively "spng")) + (delete-file-recursively "win32") + (substitute* (find-files "src" ".") + (("miniz.h") "miniz/miniz.h")))) + (patches (search-patches "woof-doom-unbundle-spng-miniz.patch")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f)) ;'demotest' requires internet access. + (native-inputs (list python)) + (inputs (list libebur128 + libsndfile + libxmp + miniz + openal + sdl2 + sdl2-net + spng + yyjson + fluidsynth)) + (home-page "https://github.com/fabiangreffrath/woof") + (synopsis "MBF-style Doom source port targeted at modern systems") + (description + "Woof! is a continuation of the MBF lineage of Doom source ports, with +modern features such as dynamic resolution scaling, uncapped framerates, +adjustable field of view, 3D audio with HRTF and 7.1 surround sound +support, and modern gamepad features including rumble, gyro, and flick +stick support. Supports the new MBF21 format, as well as the MUSINFO, +UMAPINFO, DEHEXTRA, and DSDHacked specifictions.") + (license + ;; See README.md + (list (license:non-copyleft + "https://bitbucket.org/jpommier/pffft/src/master/pffft.h" + "FFTPACK license") + license:bsd-2 + license:bsd-3 + license:cc-by3.0 + license:cc0 + license:expat + license:gpl2 + license:gpl3+ + license:public-domain + license:gpl2+)))) + (define xonotic-data (package (name "xonotic-data") diff --git a/gnu/packages/patches/woof-doom-unbundle-spng-miniz.patch b/gnu/packages/patches/woof-doom-unbundle-spng-miniz.patch new file mode 100644 index 0000000000..43c3b39193 --- /dev/null +++ b/gnu/packages/patches/woof-doom-unbundle-spng-miniz.patch @@ -0,0 +1,26 @@ +Unbundle spng, miniz +*** a/third-party/CMakeLists.txt +--- b/third-party/CMakeLists.txt +@@ -4,20 +4,13 @@ + target_woof_settings(md5) + target_include_directories(md5 INTERFACE md5) + +-add_library(miniz STATIC miniz/miniz.c) +-target_woof_settings(miniz) +-target_compile_definitions(miniz PRIVATE MINIZ_NO_TIME) +-target_include_directories(miniz INTERFACE miniz) ++find_package(miniz) + + add_library(pffft STATIC pffft/pffft.c) + target_woof_settings(pffft) + target_include_directories(pffft INTERFACE pffft) + +-add_library(spng STATIC spng/spng.c) +-target_woof_settings(spng) +-target_compile_definitions(spng PRIVATE SPNG_USE_MINIZ INTERFACE SPNG_STATIC) +-target_include_directories(spng INTERFACE spng) +-target_link_libraries(spng miniz) ++find_package(spng) + + if(NOT yyjson_FOUND) + add_library(yyjson STATIC yyjson/yyjson.c)