nixpkgs/pkgs/development/libraries/SDL2/default.nix
Manuel Adameit c7a74ca5c6 Modified SDL2 derivation to work on Mac OSX darwin
default to no alsa on darwin
default to no x11 support on darwin
changed asserts to check for darwin
2015-02-08 18:08:14 +01:00

66 lines
2.1 KiB
Nix

{ stdenv, fetchurl, pkgconfig, audiofile
, openglSupport ? false, mesa ? null
, alsaSupport ? true, alsaLib ? null
, x11Support ? true, x11 ? null, libXrandr ? null
, pulseaudioSupport ? true, pulseaudio ? null
}:
# OSS is no longer supported, for it's much crappier than ALSA and
# PulseAudio.
assert !stdenv.isDarwin -> alsaSupport || pulseaudioSupport;
assert openglSupport -> (stdenv.isDarwin || mesa != null && x11Support);
assert x11Support -> (x11 != null && libXrandr != null);
assert alsaSupport -> alsaLib != null;
assert pulseaudioSupport -> pulseaudio != null;
let
configureFlagsFun = attrs: ''
--disable-oss --disable-x11-shared
--disable-pulseaudio-shared --disable-alsa-shared
${if alsaSupport then "--with-alsa-prefix=${attrs.alsaLib}/lib" else ""}
'';
in
stdenv.mkDerivation rec {
name = "SDL2-2.0.3";
src = fetchurl {
url = "http://www.libsdl.org/release/${name}.tar.gz";
sha256 = "0369ngvb46x6c26h8zva4x22ywgy6mvn0wx87xqwxg40pxm9m9m5";
};
# Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated.
propagatedBuildInputs = stdenv.lib.optionals x11Support [ x11 libXrandr ] ++
stdenv.lib.optional pulseaudioSupport pulseaudio;
buildInputs = [ pkgconfig audiofile ] ++
stdenv.lib.optional openglSupport [ mesa ] ++
stdenv.lib.optional alsaSupport alsaLib;
# https://bugzilla.libsdl.org/show_bug.cgi?id=1431
dontDisableStatic = true;
# XXX: By default, SDL wants to dlopen() PulseAudio, in which case
# we must arrange to add it to its RPATH; however, `patchelf' seems
# to fail at doing this, hence `--disable-pulseaudio-shared'.
configureFlags = configureFlagsFun { inherit alsaLib; };
crossAttrs = {
configureFlags = configureFlagsFun { alsaLib = alsaLib.crossDrv; };
};
postInstall = ''
rm $out/lib/*.a
'';
passthru = {inherit openglSupport;};
meta = {
description = "A cross-platform multimedia library";
homepage = http://www.libsdl.org/;
license = stdenv.lib.licenses.zlib;
platforms = stdenv.lib.platforms.all;
maintainers = [ stdenv.lib.maintainers.page ];
};
}