|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
{ stdenv, fetchurl, fetchpatch, pkgconfig, audiofile, libcap, libiconv |
|
|
|
|
{ stdenv, lib, fetchurl, fetchpatch, pkgconfig, audiofile, libcap, libiconv |
|
|
|
|
, openglSupport ? false, libGL, libGLU |
|
|
|
|
, alsaSupport ? true, alsaLib |
|
|
|
|
, x11Support ? hostPlatform == buildPlatform, libXext, libICE, libXrandr |
|
|
|
@ -7,13 +7,32 @@ |
|
|
|
|
, hostPlatform, buildPlatform |
|
|
|
|
}: |
|
|
|
|
|
|
|
|
|
# OSS is no longer supported, for it's much crappier than ALSA and |
|
|
|
|
# PulseAudio. |
|
|
|
|
assert hostPlatform.isLinux -> alsaSupport || pulseaudioSupport; |
|
|
|
|
# NOTE: When editing this expression see if the same change applies to |
|
|
|
|
# SDL2 expression too |
|
|
|
|
|
|
|
|
|
with lib; |
|
|
|
|
|
|
|
|
|
assert !stdenv.isDarwin -> alsaSupport || pulseaudioSupport; |
|
|
|
|
assert openglSupport -> (stdenv.isDarwin || x11Support && libGL != null && libGLU != null); |
|
|
|
|
|
|
|
|
|
let |
|
|
|
|
inherit (stdenv.lib) optional optionals; |
|
|
|
|
|
|
|
|
|
# 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'. |
|
|
|
|
configureFlagsFun = attrs: [ |
|
|
|
|
"--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 "--with-alsa-prefix=${attrs.alsaLib.out}/lib"; |
|
|
|
|
|
|
|
|
|
in |
|
|
|
|
|
|
|
|
|
stdenv.mkDerivation rec { |
|
|
|
|
name = "SDL-${version}"; |
|
|
|
|
version = "1.2.15"; |
|
|
|
@ -29,35 +48,27 @@ stdenv.mkDerivation rec { |
|
|
|
|
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 [ libGL libGLU ] ++ |
|
|
|
|
optional pulseaudioSupport libpulseaudio ++ |
|
|
|
|
optional stdenv.isDarwin Cocoa; |
|
|
|
|
|
|
|
|
|
buildInputs = let |
|
|
|
|
notMingw = !hostPlatform.isMinGW; |
|
|
|
|
in optional notMingw audiofile |
|
|
|
|
++ optionals stdenv.isDarwin [ OpenGL CoreAudio CoreServices AudioUnit Kernel ] |
|
|
|
|
++ [ libiconv ]; |
|
|
|
|
propagatedBuildInputs = [ ] |
|
|
|
|
++ optionals x11Support [ libXext libICE libXrandr ] |
|
|
|
|
++ optional stdenv.isLinux libcap |
|
|
|
|
++ optionals openglSupport [ libGL libGLU ] |
|
|
|
|
++ optional alsaSupport alsaLib |
|
|
|
|
++ optional pulseaudioSupport libpulseaudio |
|
|
|
|
++ optional stdenv.isDarwin 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" |
|
|
|
|
] ++ optional (!x11Support) "--without-x" |
|
|
|
|
++ optional (alsaSupport && hostPlatform != buildPlatform) "--with-alsa-prefix=${alsaLib.out}/lib"; |
|
|
|
|
buildInputs = [ libiconv ] |
|
|
|
|
++ optional (!hostPlatform.isMinGW) audiofile |
|
|
|
|
++ optionals stdenv.isDarwin [ AudioUnit CoreAudio CoreServices Kernel OpenGL ]; |
|
|
|
|
|
|
|
|
|
configureFlags = configureFlagsFun { inherit alsaLib; }; |
|
|
|
|
|
|
|
|
|
crossAttrs = { |
|
|
|
|
configureFlags = configureFlagsFun { alsaLib = alsaLib.crossDrv; }; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
patches = [ |
|
|
|
|
./find-headers.patch |
|
|
|
|
|
|
|
|
|
# Fix window resizing issues, e.g. for xmonad |
|
|
|
|
# Ticket: http://bugzilla.libsdl.org/show_bug.cgi?id=1430 |
|
|
|
|
(fetchpatch { |
|
|
|
@ -97,10 +108,11 @@ stdenv.mkDerivation rec { |
|
|
|
|
url = "http://hg.libsdl.org/SDL/raw-rev/bbfb41c13a87"; |
|
|
|
|
sha256 = "1336g7waaf1c8yhkz11xbs500h8bmvabh4h437ax8l1xdwcppfxv"; |
|
|
|
|
}) |
|
|
|
|
./find-headers.patch |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
postFixup = ''moveToOutput share/aclocal "$dev" ''; |
|
|
|
|
postInstall = '' |
|
|
|
|
moveToOutput share/aclocal "$dev" |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
setupHook = ./setup-hook.sh; |
|
|
|
|
|
|
|
|
|