lol
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}