forked from mirrors/nixpkgs
333d69a5f0
The most complex problems were from dealing with switches reverted in the meantime (gcc5, gmp6, ncurses6). It's likely that darwin is (still) broken nontrivially.
96 lines
3.2 KiB
Nix
96 lines
3.2 KiB
Nix
{ stdenv, fetchurl, pkgconfig, audiofile, libcap
|
|
, openglSupport ? false, mesa ? null
|
|
, alsaSupport ? true, alsaLib ? null
|
|
, x11Support ? true, xlibsWrapper ? null, libXrandr ? null
|
|
, pulseaudioSupport ? true, libpulseaudio ? null
|
|
, OpenGL, CoreAudio, CoreServices, AudioUnit, Kernel, Cocoa
|
|
}:
|
|
|
|
# OSS is no longer supported, for it's much crappier than ALSA and
|
|
# PulseAudio.
|
|
assert (stdenv.isLinux && !(stdenv ? cross)) -> alsaSupport || pulseaudioSupport;
|
|
|
|
assert openglSupport -> (mesa != null && x11Support);
|
|
assert x11Support -> (xlibsWrapper != null && libXrandr != null);
|
|
assert alsaSupport -> alsaLib != null;
|
|
assert pulseaudioSupport -> libpulseaudio != null;
|
|
|
|
let
|
|
inherit (stdenv.lib) optional optionals;
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
version = "1.2.15";
|
|
name = "SDL-${version}";
|
|
|
|
src = fetchurl {
|
|
url = "http://www.libsdl.org/release/${name}.tar.gz";
|
|
sha256 = "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn";
|
|
};
|
|
|
|
outputs = [ "dev" "out" ];
|
|
outputBin = "dev"; # sdl-config
|
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
|
|
# Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated.
|
|
propagatedBuildInputs =
|
|
optionals x11Support [ xlibsWrapper libXrandr ] ++
|
|
optional alsaSupport alsaLib ++
|
|
optional stdenv.isLinux libcap ++
|
|
optional openglSupport mesa ++
|
|
optional pulseaudioSupport libpulseaudio;
|
|
|
|
buildInputs = let
|
|
notMingw = !(stdenv ? cross) || stdenv.cross.libc != "msvcrt";
|
|
in optional notMingw audiofile
|
|
++ optionals stdenv.isDarwin [ OpenGL CoreAudio CoreServices AudioUnit Kernel Cocoa ];
|
|
|
|
# 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 = [
|
|
"--disable-oss"
|
|
"--disable-video-x11-xme"
|
|
"--disable-x11-shared"
|
|
"--disable-alsa-shared"
|
|
"--enable-rpath"
|
|
"--disable-pulseaudio-shared"
|
|
"--disable-osmesa-shared"
|
|
] ++ stdenv.lib.optionals (stdenv ? cross) ([
|
|
"--without-x"
|
|
] ++ stdenv.lib.optional alsaSupport "--with-alsa-prefix=${alsaLib.out}/lib");
|
|
|
|
# Fix a build failure on OS X Mavericks
|
|
# Ticket: https://bugzilla.libsdl.org/show_bug.cgi?id=2085
|
|
patches = stdenv.lib.optional stdenv.isDarwin [ (fetchurl {
|
|
url = "http://bugzilla-attachments.libsdl.org/attachment.cgi?id=1320";
|
|
sha1 = "3137feb503a89a8d606405373905b92dcf7e293b";
|
|
}) ];
|
|
|
|
postFixup = ''_moveToOutput share/aclocal "$dev" '';
|
|
|
|
crossAttrs =stdenv.lib.optionalAttrs (stdenv.cross.libc == "libSystem") {
|
|
patches = let
|
|
f = rev: sha256: fetchurl {
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/${rev}";
|
|
inherit sha256;
|
|
};
|
|
in [
|
|
(f "e9466ead70e5" "0ygir3k83d0vxp7s3k48jn3j8n2bnv9wm6613wpx3ybnjrxabrip")
|
|
(f "bbfb41c13a87" "17v29ybjifvka19m8qf14rjc43nfdwk9v9inaizznarhb17amlnv")
|
|
];
|
|
postPatch = ''
|
|
sed -i -e 's/ *-fpascal-strings//' configure
|
|
'';
|
|
};
|
|
|
|
passthru = {inherit openglSupport;};
|
|
|
|
meta = with stdenv.lib; {
|
|
description = "A cross-platform multimedia library";
|
|
homepage = http://www.libsdl.org/;
|
|
maintainers = with maintainers; [ lovek323 ];
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|