X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/0897ad7fac04fc9d814e83eed46e88c7bf9740bc..43b176f36c57aa53883a1e623bd77f399babd788:/gnu/packages/sdl.scm diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 3974cc75ab..7b36d5509c 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -6,10 +6,13 @@ ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2018, 2019 Ricardo Wurmus +;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2019 Kei Kebreau -;;; Copyright © 2019 Nicolas Goaziou +;;; Copyright © 2019, 2020 Nicolas Goaziou ;;; Copyright © 2019 Marius Bakke +;;; Copyright © 2019 Pierre Neidhardt +;;; Copyright © 2020 Timotej Lazar +;;; Copyright © 2020 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,18 +37,22 @@ #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (gnu packages audio) + #:use-module (gnu packages autotools) #:use-module (gnu packages fcitx) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages ibus) #:use-module (gnu packages image) #:use-module (gnu packages linux) + #:use-module (gnu packages mono) #:use-module (gnu packages mp3) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) @@ -108,16 +115,15 @@ joystick, and graphics hardware.") (define-public sdl2 (package (inherit sdl) (name "sdl2") - (version "2.0.10") + (version "2.0.12") (source (origin (method url-fetch) (uri (string-append "https://libsdl.org/release/SDL2-" version ".tar.gz")) - (patches (search-patches "sdl2-mesa-compat.patch")) (sha256 (base32 - "0mqxp6w5jhbq6y1j690g9r3gpzwjxh4czaglw8x05l7hl49nqrdl")))) + "0qy8wbqvfkb5ps8kxgaaf2zzpkjqbsw712hlp74znbn0jpv6i4il")))) (arguments (substitute-keyword-arguments (package-arguments sdl) ((#:configure-flags flags) @@ -125,20 +131,26 @@ joystick, and graphics hardware.") "--disable-kmsdrm-shared") ,flags)) ((#:make-flags flags ''()) - ;; Add the Fcitx header files to GCCs "system header" search path - ;; in order to suppress compiler warnings induced by those: - ;; .../include/fcitx-utils/utarray.h:178:9: error: ISO C90 forbids - ;; mixed declarations and code [-Werror=declaration-after-statement] - `(append (list (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "fcitx") - "/include")) - ,flags)))) + `(cons* + ;; Add the Fcitx header files to GCCs "system header" search path + ;; in order to suppress compiler warnings induced by those: + ;; .../include/fcitx-utils/utarray.h:178:9: error: ISO C90 forbids + ;; mixed declarations and code [-Werror=declaration-after-statement] + (string-append "C_INCLUDE_PATH=" + (assoc-ref %build-inputs "fcitx") "/include") + ;; SDL dlopens libudev, so make sure it is in rpath. This overrides + ;; the LDFLAG set in sdl’s configure-flags, which isn’t necessary + ;; as sdl2 includes Mesa by default. + (string-append "LDFLAGS=-Wl,-rpath," + (assoc-ref %build-inputs "eudev") "/lib") + ,flags)))) (inputs ;; SDL2 needs to be built with ibus support otherwise some systems ;; experience a bug where input events are doubled. ;; ;; For more information, see: https://dev.solus-project.com/T1721 (append `(("dbus" ,dbus) + ("eudev" ,eudev) ; for discovering input devices ("fcitx" ,fcitx) ; helps with CJK input ("glib" ,glib) ("ibus" ,ibus) @@ -258,28 +270,44 @@ WEBP, XCF, XPM, and XV.") "0alrhqgm40p4c92s26mimg9cm1y7rzr6m0p49687jxd9g6130i0n")))) (build-system gnu-build-system) (outputs '("out" "debug")) - ;; no check target - ;; use libmad instead of smpeg - ;; explicitly link against shared libraries instead of dlopening them - (arguments `(#:tests? #f - #:configure-flags '("--enable-music-mp3-mad-gpl" - "--disable-music-mod-shared" - "--disable-music-fluidsynth-shared" - "--disable-music-ogg-shared" - "--disable-music-flac-shared" - "--disable-music-mp3-shared"))) - (inputs `(("libvorbis" ,libvorbis) - ("libflac" ,flac) - ("libmad" ,libmad) - ("libmikmod" ,libmikmod) - ("libmodplug" ,libmodplug))) - ;; FIXME: Add libfluidsynth + (arguments + `(#:tests? #f ; No check target. + #:configure-flags + '("--enable-music-mp3-mad-gpl" ; Use libmad instead of smpeg. + ;; Explicitly link against shared libraries instead of dlopening them. + "--disable-music-flac-shared" + "--disable-music-fluidsynth-shared" + "--disable-music-mod-shared" + "--disable-music-ogg-shared") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-fluidsynth + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "configure" + (("EXTRA_LDFLAGS -lfluidsynth") + (string-append "EXTRA_LDFLAGS " + "-L" + (assoc-ref inputs "fluidsynth") + "/lib -lfluidsynth"))) + #t))))) + (inputs + `(("fluidsynth" ,fluidsynth) + ("libflac" ,flac) + ("libmad" ,libmad) + ("libmikmod" ,libmikmod) + ("libvorbis" ,libvorbis))) (propagated-inputs `(("sdl" ,sdl))) (synopsis "SDL multi-channel audio mixer library") (description "SDL_mixer is a multi-channel audio mixer library for SDL. It supports any number of simultaneously playing channels of 16 bit stereo -audio, plus a single channel of music. Supported format include FLAC, MOD, -MIDI, Ogg Vorbis, and MP3.") +audio, plus a single channel of music. Supported formats include FLAC, MOD, +MIDI, Ogg Vorbis, and MP3. + +This package supports two MIDI backends, selectable at runtime. To use the +newer @code{fluidsynth} library, install a soundfont such as @code{fluid-3} +and specify it using the @code{SDL_SOUNDFONTS} environment variable. For the +legacy @code{timidity} backend, install a patch set such as @code{freepats} +and set the path to the configuration file with @code{TIMIDITY_CFG}.") (home-page "https://www.libsdl.org/projects/SDL_mixer/") (license zlib))) @@ -305,6 +333,54 @@ SDL.") (home-page "https://www.libsdl.org/projects/SDL_net/") (license zlib))) +(define-public sdl-pango + (package + (name "sdl-pango") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/sdlpango/SDL_Pango/" version "/" + "SDL_Pango-" version ".tar.gz")) + (sha256 + (base32 "197baw1dsg0p4pljs5k0fshbyki00r4l49m1drlpqw6ggawx6xbz")) + (patches + (search-patches + "sdl-pango-api_additions.patch" + "sdl-pango-blit_overflow.patch" + "sdl-pango-fillrect_crash.patch" + "sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch" + "sdl-pango-matrix_declarations.patch" + "sdl-pango-sans-serif.patch")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "--disable-static") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + ;; Force reconfiguration because the included libtool + ;; generates linking errors. + (lambda _ (invoke "autoreconf" "-vif")))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (inputs + `(("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glib" ,glib) + ("harfbuzz" ,harfbuzz) + ("pango" ,pango) + ("sdl" ,sdl))) + (home-page "http://sdlpango.sourceforge.net") + (synopsis "Pango SDL binding") + (description "This library is a wrapper around the Pango library. +It allows you to use TrueType fonts to render internationalized and +tagged text in SDL applications.") + (license lgpl2.1))) + (define-public sdl-ttf (package (name "sdl-ttf") @@ -384,7 +460,7 @@ directory.") (define-public sdl2-image (package (inherit sdl-image) (name "sdl2-image") - (version "2.0.4") + (version "2.0.5") (source (origin (method url-fetch) @@ -392,7 +468,7 @@ directory.") (string-append "https://www.libsdl.org/projects/SDL_image/release/" "SDL2_image-" version ".tar.gz")) (sha256 - (base32 "1b6f7002bm007y3zpyxb5r6ag0lml51jyvx1pwpj9sq24jfc8kp7")))) + (base32 "1l0864kas9cwpp2d32yxl81g98lx40dhbdp03dz7sbv84vhgdmdx")))) (propagated-inputs (propagated-inputs-with-sdl2 sdl-image)))) @@ -413,6 +489,23 @@ directory.") #t)) (sha256 (base32 "0694vsz5bjkcdgfdra6x9fq8vpzrl8m6q96gh58df7065hw5mkxl")))) + (arguments + (substitute-keyword-arguments (package-arguments sdl-mixer) + ((#:configure-flags flags) + `(cons* + "--disable-music-opus-shared" + ;; These options were renamed in SDL2 mixer. Keeping the inherited + ;; variants produces a harmless warning. + "--disable-music-mod-modplug-shared" + "--disable-music-midi-fluidsynth-shared" + ,flags)))) + (inputs + `(("opusfile" ,opusfile) + ;; The default MOD library changed in SDL2 mixer. + ("libmodplug" ,libmodplug) + ,@(alist-delete "libmikmod" (package-inputs sdl-mixer)))) + (native-inputs + `(("pkgconfig" ,pkg-config))) ; Needed to find the opus library. (propagated-inputs (propagated-inputs-with-sdl2 sdl-mixer)))) @@ -570,3 +663,54 @@ sound and device input (keyboards, joysticks, mice, etc.).") The bindings are written in pure Scheme using Guile's foreign function interface.") (license lgpl3+))) + +(define-public guile3.0-sdl2 + (package + (inherit guile-sdl2) + (name "guile3.0-sdl2") + (native-inputs + `(("guile" ,guile-3.0) + ("pkg-config" ,pkg-config))))) + +(define-public sdl2-cs + (let ((commit "1a3556441e1394eb0b5d46aeb514b8d1090b93f8")) + (package + (name "sdl2-cs") + (version (git-version "B1" "1" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flibitijibibo/SDL2-CS") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "007mzkqr9nmvfrvvhs2r6cm36lzgsww24kwshsz9c4fd97f9qk58")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; No tests. + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (invoke "make" "release"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "bin/Release/SDL2-CS.dll" (string-append out "/lib")) + #t)))))) + (native-inputs + `(("mono" ,mono))) + (inputs + `(("sdl2" ,sdl2) + ("sdl2-image" ,sdl2-image) + ("sdl2-mixer" ,sdl2-mixer) + ("sdl2-ttf" ,sdl2-ttf))) + (home-page "https://dthompson.us/projects/guile-sdl2.html") + (synopsis "C# wrapper for SDL2") + (description + "SDL2-CS provides C# bindings for the SDL2 C shared library. +The C# wrapper was written to be used for FNA's platform support. However, this +is written in a way that can be used for any general C# application.") + (license zlib))))