From 40a2504e87a938960c0e6553020ebe5899fb2873 Mon Sep 17 00:00:00 2001 From: Jacob Sowder Date: Sat, 23 Nov 2024 17:31:04 -0500 Subject: [PATCH] First version of gzdoom. --- .gitignore | 1 + my-gzdoom.scm | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 .gitignore create mode 100644 my-gzdoom.scm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/my-gzdoom.scm b/my-gzdoom.scm new file mode 100644 index 0000000..92f4fb8 --- /dev/null +++ b/my-gzdoom.scm @@ -0,0 +1,191 @@ +(define-module (my-gzdoom) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system cmake) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages audio) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages gl) + #:use-module (gnu packages mp3) + #:use-module (gnu packages sdl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages glib) + #:use-module (gnu packages linux) + #:use-module (gnu packages video)) + +(define-public zmusic + (package + (name "zmusic") + (version "1.1.14") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ZDoom/ZMusic") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "19arzkbwdj84vw1cfawc6930dfxdhhq4k6yawkkppaphj8qkfhdc")))) + (build-system cmake-build-system) + (inputs (list alsa-lib)) + (native-inputs (list pkg-config + glib)) + (arguments + (list + #:tests? #f + #:configure-flags + #~(list + (string-append + "-DYN_SNDFILE=off" + "-DYN_MPG123=off")))) + (synopsis "GZDoom's music system as a standalone library") + (description "This library for use with the projects GZDoom, Raze, and the newer PrBoom+.") + (home-page "https://zdoom.org/index") + ;; the source uses x86 assembly + (supported-systems '("x86_64-linux" "i686-linux")) + (license (list license:gpl3 + license:lgpl2.1)))) + +(define-public gzdoom + (package + (name "gzdoom") + (version "4.13.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ZDoom/gzdoom") + (commit (string-append "g" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zlvrdayrj1rk5x2hwnc57l8pl29bl64zmfq3qc9yfypknj1syfy")) + ;; (patches (search-patches "gzdoom-search-in-installed-share.patch" + ;; ;; "gzdoom-find-system-libgme.patch" + ;; )) + (modules '((guix build utils) + (ice-9 regex))) + ;; (snippet + ;; '(begin + ;; ;; remove files which mustn't be commercially redistributed. see + ;; ;; , the ‘contribution + ;; ;; guidelines’ at , and guix issue #73435. + ;; (for-each + ;; (lambda (directory) + ;; (delete-file-recursively directory) + ;; (substitute* "CMakeLists.txt" + ;; (((string-append "add_subdirectory\\([[:blank:]]*" + ;; directory + ;; "[[:blank:]]*\\)")) + ;; ""))) + ;; '( ;; "wadsrc_extra" ;game_support.pk3 + ;; "wadsrc_bm")) ;brightmaps.pk3 + + ;; ;; removing game_support.pk3 entirely would break freedoom & remove + ;; ;; users' ability to play commercial games, despite owning (only) the + ;; ;; non-functional data. that can't be right. out of an abundance of + ;; ;; caution, remove anything from the pk3 that could conceivably be + ;; ;; derived from copyrightable data that's not freely redistributable. + ;; ;; (display "keeping only the following game_support.pk3 files:\n") + ;; ;; (let* ((regexps (list "/font\\.inf$" + ;; ;; "/harmony/.*\\.(txt|zs)$" + ;; ;; "/(iwadinfo|mapinfo|sprofs)\\.txt$" + ;; ;; "\\.z$")) + ;; ;; (regexp* (format #f "(~{~a~^|~})" regexps)) + ;; ;; (regexp (make-regexp regexp* regexp/icase))) + ;; ;; (define (keep-file? file stat) + ;; ;; (let ((keep? (regexp-exec regexp file))) + ;; ;; (when keep? + ;; ;; (format #t " ~a~%" file)) + ;; ;; keep?)) + + ;; ;; (for-each delete-file (find-files "wadsrc_extra/static" + ;; ;; (negate keep-file?)))) + + ;; ;; remove some bundled libraries. xxx there are more, but removing + ;; ;; them would require, at least, patching the build system. + ;; (with-directory-excursion "libraries" + ;; (delete-file-recursively "bzip2") + ;; ))) + )) + (arguments + (list + #:tests? #f + #:configure-flags + #~(list + (string-append + "-DCMAKE_CXX_FLAGS:=" + "-DSHARE_DIR=\\\"" #$output "/share\\\" " + "-DGUIX_OUT_PK3=\\\"" #$output "/share/games/doom\\\"") + + ;; the build requires some extra convincing not to use the bundled + ;; libgme previously deleted in the soure snippet. + ;; "-dforce_internal_gme=off" + + ;; link libraries at build time instead of loading them at run time. + "-DDYN_OPENAL=off" + "-DDYN_FLUIDSYNTH=off" + "-DDYN_GTK=off" + "-DDYN_MPG123=off" + "-DDYN_SNDFILE=off" + + ;; Pointing CMake to precompiled binaries in library so that they can be statically linked into + ) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'fix-file-names + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/CMakeLists.txt" + (("command /bin/sh") + (string-append "command " (which "sh")))) + ;; (substitute* + ;; "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp" + ;; (("/usr/share/sounds/sf2/fluidr3_gm.sf2") + ;; (search-input-file inputs + ;; "share/soundfonts/fluidr3mono_gm.sf3"))) + ;; (substitute* + ;; "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp" + ;; (("(exename = \")(timidity)(\".*)" _ prefix exe suffix) + ;; (string-append prefix + ;; (search-input-file inputs + ;; (string-append "bin/" exe)) + ;; suffix))) + ))))) + (build-system cmake-build-system) + (inputs (list bzip2 + fluid-3 + fluidsynth + gtk+ + libgme + libjpeg-turbo + libsndfile + libvpx + mesa + mpg123 + openal + sdl2 + timidity++ + zlib + zmusic)) + (native-inputs (list pkg-config unzip)) + (synopsis "modern doom 2 source port") + (description "gzdoom is a port of the doom 2 game engine, with a modern +renderer. it improves modding support with zdoom's advanced mapping features +and the new zscript language. in addition to doom, it supports heretic, hexen, +strife, chex quest, and fan-created games like harmony, hacx and freedoom.") + (home-page "https://zdoom.org/index") + ;; the source uses x86 assembly + (supported-systems '("x86_64-linux" "i686-linux")) + (license (list license:gpl3+ ; gzdoom game + license:lgpl3+ ; gzdoom renderer + license:expat ; gdtoa + (license:non-copyleft ; modified dumb + "file://dumb/licence.txt" + "dumb license, explicitly gpl compatible."))))) + +gzdoom +