lol
at v192 66 lines 2.2 kB view raw
1{ stdenv, fetchurl, pkgconfig, audiofile 2, openglSupport ? false, mesa ? null 3, alsaSupport ? true, alsaLib ? null 4, x11Support ? true, x11 ? null, libXrandr ? null 5, pulseaudioSupport ? true, libpulseaudio ? null 6}: 7 8# OSS is no longer supported, for it's much crappier than ALSA and 9# PulseAudio. 10assert !stdenv.isDarwin -> alsaSupport || pulseaudioSupport; 11 12assert openglSupport -> (stdenv.isDarwin || mesa != null && x11Support); 13assert x11Support -> (x11 != null && libXrandr != null); 14assert alsaSupport -> alsaLib != null; 15assert pulseaudioSupport -> libpulseaudio != null; 16 17let 18 configureFlagsFun = attrs: '' 19 --disable-oss --disable-x11-shared 20 --disable-pulseaudio-shared --disable-alsa-shared 21 ${if alsaSupport then "--with-alsa-prefix=${attrs.alsaLib}/lib" else ""} 22 ${if (!x11Support) then "--without-x" else ""} 23 ''; 24in 25stdenv.mkDerivation rec { 26 name = "SDL2-2.0.3"; 27 28 src = fetchurl { 29 url = "http://www.libsdl.org/release/${name}.tar.gz"; 30 sha256 = "0369ngvb46x6c26h8zva4x22ywgy6mvn0wx87xqwxg40pxm9m9m5"; 31 }; 32 33 # Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated. 34 propagatedBuildInputs = stdenv.lib.optionals x11Support [ x11 libXrandr ] ++ 35 stdenv.lib.optional pulseaudioSupport libpulseaudio; 36 37 buildInputs = [ pkgconfig audiofile ] ++ 38 stdenv.lib.optional openglSupport mesa ++ 39 stdenv.lib.optional alsaSupport alsaLib; 40 41 # https://bugzilla.libsdl.org/show_bug.cgi?id=1431 42 dontDisableStatic = true; 43 44 # XXX: By default, SDL wants to dlopen() PulseAudio, in which case 45 # we must arrange to add it to its RPATH; however, `patchelf' seems 46 # to fail at doing this, hence `--disable-pulseaudio-shared'. 47 configureFlags = configureFlagsFun { inherit alsaLib; }; 48 49 crossAttrs = { 50 configureFlags = configureFlagsFun { alsaLib = alsaLib.crossDrv; }; 51 }; 52 53 postInstall = '' 54 rm $out/lib/*.a 55 ''; 56 57 passthru = {inherit openglSupport;}; 58 59 meta = { 60 description = "A cross-platform multimedia library"; 61 homepage = http://www.libsdl.org/; 62 license = stdenv.lib.licenses.zlib; 63 platforms = stdenv.lib.platforms.all; 64 maintainers = [ stdenv.lib.maintainers.page ]; 65 }; 66}