dfd300c81d
Upstream killed the pkgs server but src continues to serve up the exact same content, so we can just point there and all hashes should be unchanged.
110 lines
3.9 KiB
Nix
110 lines
3.9 KiB
Nix
{ stdenv, fetchurl, fetchpatch, pkgconfig, audiofile, libcap
|
|
, openglSupport ? false, mesa_noglu, mesa_glu
|
|
, alsaSupport ? true, alsaLib
|
|
, x11Support ? hostPlatform == buildPlatform, libXext, libICE, libXrandr
|
|
, pulseaudioSupport ? true, libpulseaudio
|
|
, OpenGL, CoreAudio, CoreServices, AudioUnit, Kernel, Cocoa
|
|
, hostPlatform, buildPlatform
|
|
}:
|
|
|
|
# OSS is no longer supported, for it's much crappier than ALSA and
|
|
# PulseAudio.
|
|
assert hostPlatform.isLinux -> alsaSupport || pulseaudioSupport;
|
|
|
|
let
|
|
inherit (stdenv.lib) optional optionals;
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
name = "SDL-${version}";
|
|
version = "1.2.15";
|
|
|
|
src = fetchurl {
|
|
url = "http://www.libsdl.org/release/${name}.tar.gz";
|
|
sha256 = "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn";
|
|
};
|
|
|
|
outputs = [ "out" "dev" ];
|
|
outputBin = "dev"; # sdl-config
|
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
|
|
# Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated.
|
|
propagatedBuildInputs =
|
|
optionals x11Support [ libXext libICE libXrandr ] ++
|
|
optional alsaSupport alsaLib ++
|
|
optional stdenv.isLinux libcap ++
|
|
optionals openglSupport [ mesa_noglu mesa_glu ] ++
|
|
optional pulseaudioSupport libpulseaudio ++
|
|
optional stdenv.isDarwin Cocoa;
|
|
|
|
buildInputs = let
|
|
notMingw = !hostPlatform.isMinGW;
|
|
in optional notMingw audiofile
|
|
++ optionals stdenv.isDarwin [ OpenGL CoreAudio CoreServices AudioUnit Kernel ];
|
|
|
|
# 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"
|
|
] ++ optional (!x11Support) "--without-x"
|
|
++ optional (alsaSupport && hostPlatform != buildPlatform) "--with-alsa-prefix=${alsaLib.out}/lib";
|
|
|
|
patches = [
|
|
# Fix window resizing issues, e.g. for xmonad
|
|
# Ticket: http://bugzilla.libsdl.org/show_bug.cgi?id=1430
|
|
(fetchpatch {
|
|
name = "fix_window_resizing.diff";
|
|
url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=fix_window_resizing.diff;att=2;bug=665779";
|
|
sha256 = "1z35azc73vvi19pzi6byck31132a8w1vzrghp1x3hy4a4f9z4gc6";
|
|
})
|
|
# Fix drops of keyboard events for SDL_EnableUNICODE
|
|
(fetchpatch {
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/0aade9c0203f";
|
|
sha256 = "1y9izncjlqvk1mkz1pkl9lrk9s452cmg2izjjlqqrhbn8279xy50";
|
|
})
|
|
# Ignore insane joystick axis events
|
|
(fetchpatch {
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/95abff7adcc2";
|
|
sha256 = "0i8x0kx0pw12ld5bfxhyzs466y3c0n9dscw1ijhq1b96r72xyhqq";
|
|
})
|
|
# Workaround X11 bug to allow changing gamma
|
|
# Ticket: https://bugs.freedesktop.org/show_bug.cgi?id=27222
|
|
(fetchpatch {
|
|
name = "SDL_SetGamma.patch";
|
|
url = "http://src.fedoraproject.org/cgit/rpms/SDL.git/plain/SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch?id=04a3a7b1bd88c2d5502292fad27e0e02d084698d";
|
|
sha256 = "0x52s4328kilyq43i7psqkqg7chsfwh0aawr50j566nzd7j51dlv";
|
|
})
|
|
# Fix a build failure on OS X Mavericks
|
|
# Ticket: https://bugzilla.libsdl.org/show_bug.cgi?id=2085
|
|
(fetchpatch {
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/e9466ead70e5";
|
|
sha256 = "0mpwdi09h89df2wxqw87m1rdz7pr46k0w6alk691k8kwv970z6pl";
|
|
})
|
|
(fetchpatch {
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/bbfb41c13a87";
|
|
sha256 = "1336g7waaf1c8yhkz11xbs500h8bmvabh4h437ax8l1xdwcppfxv";
|
|
})
|
|
./find-headers.patch
|
|
];
|
|
|
|
postFixup = ''moveToOutput share/aclocal "$dev" '';
|
|
|
|
setupHook = ./setup-hook.sh;
|
|
|
|
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;
|
|
license = licenses.lgpl21;
|
|
};
|
|
}
|