X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/f6dadee4263bcc5cd97447c92b766ef7cca661ec..d19b14c8349ce8cacb62619ab68953265daeeca7:/gnu/packages/sdl.scm diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index fe01086a86..608cb400c5 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -6,8 +6,13 @@ ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2018 Ricardo Wurmus +;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2019 Kei Kebreau +;;; 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. ;;; @@ -32,20 +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 haskell) #: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 haskell) #: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,15 +115,16 @@ joystick, and graphics hardware.") (define-public sdl2 (package (inherit sdl) (name "sdl2") - (version "2.0.9") + (version "2.0.10") (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 - "1c94ndagzkdfqaa838yqg589p1nnqln8mv0hpwfhrkbfczf8cl95")))) + "0mqxp6w5jhbq6y1j690g9r3gpzwjxh4czaglw8x05l7hl49nqrdl")))) (arguments (substitute-keyword-arguments (package-arguments sdl) ((#:configure-flags flags) @@ -133,6 +141,7 @@ joystick, and graphics hardware.") ("glib" ,glib) ("ibus" ,ibus) ("libxkbcommon" ,libxkbcommon) + ("libxcursor" ,libxcursor) ; enables X11 cursor support ("wayland" ,wayland) ("wayland-protocols" ,wayland-protocols)) (package-inputs sdl))) @@ -222,7 +231,7 @@ other supporting functions for SDL.") ;; propagated input because the pkg-config file refers to SDL's pkg-config ;; file. (propagated-inputs `(("sdl" ,sdl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libwebp" ,libwebp))) @@ -247,28 +256,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))) @@ -294,6 +319,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") @@ -373,7 +446,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) @@ -381,7 +454,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)))) @@ -402,9 +475,42 @@ 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)))) +(define-public sdl2-net + (package (inherit sdl-net) + (name "sdl2-net") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri + (string-append "http://www.libsdl.org/projects/SDL_net/release/" + "SDL2_net-" version ".tar.gz")) + (sha256 + (base32 + "08cxc1bicmyk89kiks7izw1rlx5ng5n6xpy8fy0zxni3b9z8mkhm")))) + (propagated-inputs + (propagated-inputs-with-sdl2 sdl-net)))) + (define-public sdl2-ttf (package (inherit sdl-ttf) (name "sdl2-ttf") @@ -442,7 +548,7 @@ directory.") `(("pkg-config" ,pkg-config) ;; Required by test suite. ("xorg-server" ,xorg-server) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (inputs `(("guile" ,guile-2.2) ("sdl-union" ,(sdl-union)))) @@ -508,15 +614,14 @@ sound and device input (keyboards, joysticks, mice, etc.).") (define-public guile-sdl2 (package (name "guile-sdl2") - (version "0.3.1") + (version "0.4.0") (source (origin (method url-fetch) - (uri (string-append - "https://files.dthompson.us/guile-sdl2/guile-sdl2-" - version ".tar.gz")) + (uri (string-append "https://files.dthompson.us/guile-sdl2/" + "guile-sdl2-" version ".tar.gz")) (sha256 (base32 - "0bw7x2lx90k4banc5k7yfkn3as93y25gr1xdr225ll7lmij21k64")))) + "0zcxwgyadwpbhq6h5mv2569c3kalgra26zc186y9fqiyyzmh1v9s")))) (build-system gnu-build-system) (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0") @@ -545,92 +650,53 @@ The bindings are written in pure Scheme using Guile's foreign function interface.") (license lgpl3+))) -(define-public ghc-sdl2 - (package - (name "ghc-sdl2") - (version "2.4.1.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/" - "sdl2/sdl2-" version ".tar.gz")) - (sha256 - (base32 - "0p4b12fmxps0sbnkqdfy0qw19s355yrkw7fgw6xz53wzq706k991")))) - (build-system haskell-build-system) - (arguments '(#:tests? #f)) ; tests require graphical environment - (inputs - `(("ghc-exceptions" ,ghc-exceptions) - ("ghc-linear" ,ghc-linear) - ("ghc-statevar" ,ghc-statevar) - ("ghc-text" ,ghc-text) - ("ghc-vector" ,ghc-vector) - ("sdl2" ,sdl2))) - (native-inputs - `(("ghc-weigh" ,ghc-weigh) - ("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2") - (synopsis "High- and low-level bindings to the SDL library") - (description - "This package contains bindings to the SDL 2 library, in both high- and -low-level forms. The @code{SDL} namespace contains high-level bindings, where -enumerations are split into sum types, and we perform automatic -error-checking. The @code{SDL.Raw} namespace contains an almost 1-1 -translation of the C API into Haskell FFI calls. As such, this does not -contain sum types nor error checking. Thus this namespace is suitable for -building your own abstraction over SDL, but is not recommended for day-to-day -programming.") - (license bsd-3))) - -(define-public ghc-sdl2-mixer +(define-public guile3.0-sdl2 (package - (name "ghc-sdl2-mixer") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/sdl2-mixer/" - "sdl2-mixer-" version ".tar.gz")) - (sha256 - (base32 - "1k8avyccq5l9z7bwxigim312yaancxl1sr3q6a96bcm7pnhiak0g")))) - (build-system haskell-build-system) - (inputs - `(("ghc-data-default-class" ,ghc-data-default-class) - ("ghc-lifted-base" ,ghc-lifted-base) - ("ghc-monad-control" ,ghc-monad-control) - ("ghc-sdl2" ,ghc-sdl2) - ("ghc-vector" ,ghc-vector) - ("sdl2-mixer" ,sdl2-mixer))) + (inherit guile-sdl2) + (name "guile3.0-sdl2") (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2-mixer") - (synopsis "Bindings to SDL2 mixer") - (description "This package provides Haskell bindings to -@code{SDL2_mixer}.") - (license bsd-3))) + `(("guile" ,guile-3.0) + ("pkg-config" ,pkg-config))))) -(define-public ghc-sdl2-image - (package - (name "ghc-sdl2-image") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/sdl2-image/" - "sdl2-image-" version ".tar.gz")) - (sha256 - (base32 - "1pr6dkg73cy9z0w54lrkj9c5bhxj56nl92lxikjy8kz6nyr455rr")))) - (build-system haskell-build-system) - (inputs - `(("ghc-sdl2" ,ghc-sdl2) - ("ghc-text" ,ghc-text) - ("sdl2-image" ,sdl2-image))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2-image") - (synopsis "Bindings to SDL2_image") - (description "This package provides Haskell bindings to -@code{SDL2_image}.") - (license expat))) +(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))))