First version of gzdoom.

main
Jacob Sowder 1 year ago
commit 40a2504e87

1
.gitignore vendored

@ -0,0 +1 @@
*~

@ -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
;; ;; <https://zdoom.org/wiki/license#commercial_use>, the contribution
;; ;; guidelines at <https://github.com/zdoom>, 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
Loading…
Cancel
Save