about summary refs log tree commit diff
path: root/pkgs/development/libraries/SDL
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2018-03-05 17:30:34 +0000
committerJan Malakhovski <oxij@oxij.org>2018-03-06 15:42:26 +0000
commit6166027ca88eab5372508f0fd3f3b6bc51e91a19 (patch)
treea98783d27c8ad28df1cbb9fda6097d60cede5467 /pkgs/development/libraries/SDL
parentd3c3364bfa797766875e17ca71dd8a5a8312f73a (diff)
SDL, SDL2: cleanup and cross-pollinate with useful changes to either expression
Diffstat (limited to 'pkgs/development/libraries/SDL')
-rw-r--r--pkgs/development/libraries/SDL/default.nix78
1 files changed, 45 insertions, 33 deletions
diff --git a/pkgs/development/libraries/SDL/default.nix b/pkgs/development/libraries/SDL/default.nix
index 9679b104f2049..8af3f0a548c8e 100644
--- a/pkgs/development/libraries/SDL/default.nix
+++ b/pkgs/development/libraries/SDL/default.nix
@@ -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;