diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/SDL')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/SDL/default.nix | 135 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/SDL/find-headers.patch | 26 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/SDL/setup-hook.sh | 10 |
3 files changed, 171 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/SDL/default.nix b/nixpkgs/pkgs/development/libraries/SDL/default.nix new file mode 100644 index 000000000000..225cadac8c60 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/SDL/default.nix @@ -0,0 +1,135 @@ +{ lib, stdenv, config, fetchurl, fetchpatch, pkg-config, audiofile, libcap, libiconv +, libGLSupported ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms +, openglSupport ? libGLSupported, libGL, libGLU +, alsaSupport ? stdenv.isLinux && !stdenv.hostPlatform.isAndroid, alsa-lib +, x11Support ? !stdenv.isCygwin && !stdenv.hostPlatform.isAndroid +, libXext, libICE, libXrandr +, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux && !stdenv.hostPlatform.isAndroid, libpulseaudio +, OpenGL, GLUT, CoreAudio, CoreServices, AudioUnit, Kernel, Cocoa +}: + +# NOTE: When editing this expression see if the same change applies to +# SDL2 expression too + +with lib; + +let + extraPropagatedBuildInputs = [ ] + ++ optionals x11Support [ libXext libICE libXrandr ] + ++ optionals (openglSupport && stdenv.isLinux) [ libGL libGLU ] + ++ optionals (openglSupport && stdenv.isDarwin) [ OpenGL GLUT ] + ++ optional alsaSupport alsa-lib + ++ optional pulseaudioSupport libpulseaudio + ++ optional stdenv.isDarwin Cocoa; + rpath = makeLibraryPath extraPropagatedBuildInputs; +in + +stdenv.mkDerivation rec { + pname = "SDL"; + version = "1.2.15"; + + src = fetchurl { + url = "https://www.libsdl.org/release/${pname}-${version}.tar.gz"; + sha256 = "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn"; + }; + + # make: *** No rule to make target 'build/*.lo', needed by 'build/libSDL.la'. Stop. + postPatch = "patchShebangs ./configure"; + + outputs = [ "out" "dev" ]; + outputBin = "dev"; # sdl-config + + nativeBuildInputs = [ pkg-config ] + ++ optional stdenv.isLinux libcap; + + propagatedBuildInputs = [ libiconv ] ++ extraPropagatedBuildInputs; + + buildInputs = [ ] + ++ optional (!stdenv.hostPlatform.isMinGW && alsaSupport) audiofile + ++ optionals stdenv.isDarwin [ AudioUnit CoreAudio CoreServices Kernel OpenGL ]; + + configureFlags = [ + "--disable-oss" + "--disable-video-x11-xme" + "--enable-rpath" + # Building without this fails on Darwin with + # + # ./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for '_XData32' + # SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) + # + # Please try revert the change that introduced this comment when updating SDL. + ] ++ optional stdenv.isDarwin "--disable-x11-shared" + ++ optional (!x11Support) "--without-x" + ++ optional alsaSupport "--with-alsa-prefix=${alsa-lib.out}/lib"; + + patches = [ + ./find-headers.patch + + # 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"; + }) + # https://bugzilla.libsdl.org/show_bug.cgi?id=1769 + (fetchpatch { + url = "http://hg.libsdl.org/SDL/raw-rev/91ad7b43317a"; + sha256 = "15g537vbl2my4mfrjxfkcx9ri6bk2gjvaqj650rjdxwk2nkdkn4b"; + }) + # Workaround X11 bug to allow changing gamma + # Ticket: https://bugs.freedesktop.org/show_bug.cgi?id=27222 + (fetchpatch { + name = "SDL_SetGamma.patch"; + url = "https://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"; + }) + ]; + + postInstall = '' + moveToOutput share/aclocal "$dev" + ''; + + # See the same place in the expression for SDL2 + postFixup = '' + for lib in $out/lib/*.so* ; do + if [[ -L "$lib" ]]; then + patchelf --set-rpath "$(patchelf --print-rpath $lib):${rpath}" "$lib" + fi + done + ''; + + setupHook = ./setup-hook.sh; + + passthru = { inherit openglSupport; }; + + enableParallelBuilding = true; + + meta = with lib; { + description = "A cross-platform multimedia library"; + homepage = "http://www.libsdl.org/"; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.unix; + license = licenses.lgpl21; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/SDL/find-headers.patch b/nixpkgs/pkgs/development/libraries/SDL/find-headers.patch new file mode 100644 index 000000000000..fd498117fd64 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/SDL/find-headers.patch @@ -0,0 +1,26 @@ +diff --git a/sdl-config.in b/sdl-config.in +index e0fcc0c..bf7928a 100644 +--- a/sdl-config.in ++++ b/sdl-config.in +@@ -42,14 +42,18 @@ while test $# -gt 0; do + echo @SDL_VERSION@ + ;; + --cflags) +- echo -I@includedir@/SDL @SDL_CFLAGS@ ++ SDL_CFLAGS="" ++ for i in @includedir@/SDL $SDL_PATH; do ++ SDL_CFLAGS="$SDL_CFLAGS -I$i" ++ done ++ echo $SDL_CFLAGS @SDL_CFLAGS@ + ;; + @ENABLE_SHARED_TRUE@ --libs) +-@ENABLE_SHARED_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@ ++@ENABLE_SHARED_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@ $SDL_LIB_PATH + @ENABLE_SHARED_TRUE@ ;; + @ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs) + @ENABLE_STATIC_TRUE@@ENABLE_SHARED_FALSE@ --libs|--static-libs) +-@ENABLE_STATIC_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@ ++@ENABLE_STATIC_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@ $SDL_LIB_PATH + @ENABLE_STATIC_TRUE@ ;; + *) + echo "${usage}" 1>&2 diff --git a/nixpkgs/pkgs/development/libraries/SDL/setup-hook.sh b/nixpkgs/pkgs/development/libraries/SDL/setup-hook.sh new file mode 100644 index 000000000000..553e8553a77f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/SDL/setup-hook.sh @@ -0,0 +1,10 @@ +addSDLPath () { + if [ -e "$1/include/SDL" ]; then + export SDL_PATH="${SDL_PATH-}${SDL_PATH:+ }$1/include/SDL" + fi + if [ -e "$1/lib" ]; then + export SDL_LIB_PATH="${SDL_LIB_PATH-}${SDL_LIB_PATH:+ }-L$1/lib" + fi +} + +addEnvHooks "$hostOffset" addSDLPath |