at 17.09-beta 120 lines 3.6 kB view raw
1{ stdenv, fetchgit, autoreconfHook 2, pkgconfig, libtool, boost, SDL 3, glib, pango, gettext, curl, xorg 4, libpng, libjpeg, giflib, speex, atk 5 6# renderers 7, enableAGG ? true, agg ? null 8, enableCairo ? false, cairo ? null 9, enableOpenGL ? false, mesa ? null 10 11# GUI toolkits 12, enableGTK ? true, gtk2 ? null, gnome2 ? null, gnome3 ? null 13, enableSDL ? false 14, enableQt ? false, qt4 ? null 15 16# media 17, enableFFmpeg ? true, ffmpeg_2 ? null 18, enableGstreamer ? false, gst-plugins-base ? null 19 , gst-plugins-ugly ? null 20 , gst-ffmpeg ? null 21 22# misc 23, enableJemalloc ? true, jemalloc ? null 24, enableHwAccel ? true 25, enablePlugins ? false, xulrunner ? null, npapi_sdk ? null 26}: 27 28with stdenv.lib; 29 30let 31 available = x: x != null; 32 33 sound = 34 if enableFFmpeg then "ffmpeg" else 35 if enableGstreamer then "gst" else "none"; 36 37 renderers = [] 38 ++ optional enableAGG "agg" 39 ++ optional enableCairo "cairo" 40 ++ optional enableOpenGL "opengl"; 41 42 toolkits = [] 43 ++ optional enableGTK "gtk" 44 ++ optional enableSDL "sdl" 45 ++ optional enableQt "qt4"; 46 47in 48 49# renderers 50assert enableAGG -> available agg; 51assert enableCairo -> available cairo; 52assert enableOpenGL -> available mesa; 53 54# GUI toolkits 55assert enableGTK -> all available [ gtk2 gnome2.gtkglext gnome3.gconf ]; 56assert enableSDL -> available SDL; 57assert enableQt -> available qt4; 58 59# media libraries 60assert enableFFmpeg -> available ffmpeg_2 ; 61assert enableGstreamer -> all available [ gst-plugins-base gst-plugins-ugly gst-ffmpeg ]; 62 63# misc 64assert enableJemalloc -> available jemalloc; 65assert enableHwAccel -> available mesa; 66assert enablePlugins -> all available [ xulrunner npapi_sdk ]; 67 68assert length toolkits == 0 -> throw "at least one GUI toolkit must be enabled"; 69assert length renderers == 0 -> throw "at least one renderer must be enabled"; 70 71 72stdenv.mkDerivation rec { 73 name = "gnash-${version}"; 74 version = "0.8.11-2017-03-08"; 75 76 src = fetchgit { 77 url = "git://git.sv.gnu.org/gnash.git"; 78 rev = "8a11e60585db4ed6bc4eafadfbd9b3123ced45d9"; 79 sha256 = "1qas084gc4s9cb2jbwi2s1h4hk7m92xmrsb596sd14h0i44dai02"; 80 }; 81 82 postPatch = '' 83 sed -i 's|jemalloc.h|jemalloc/jemalloc.h|' libbase/jemalloc_gnash.c 84 ''; 85 86 nativeBuildInputs = [ autoreconfHook pkgconfig libtool ]; 87 buildInputs = [ 88 glib gettext boost curl SDL speex 89 xorg.libXmu xorg.libSM xorg.libXt 90 libpng libjpeg giflib pango atk 91 ] ++ optional enableAGG agg 92 ++ optional enableCairo cairo 93 ++ optional enableOpenGL mesa 94 ++ optional enableQt qt4 95 ++ optional enableFFmpeg ffmpeg_2 96 ++ optional enableJemalloc jemalloc 97 ++ optional enableHwAccel mesa 98 ++ optionals enablePlugins [ xulrunner npapi_sdk ] 99 ++ optionals enableGTK [ gtk2 gnome2.gtkglext gnome3.gconf ] 100 ++ optionals enableGstreamer [ gst-plugins-base gst-plugins-ugly gst-ffmpeg ]; 101 102 configureFlags = with stdenv.lib; [ 103 "--with-boost-incl=${boost.dev}/include" 104 "--with-boost-lib=${boost.out}/lib" 105 "--enable-renderer=${concatStringsSep "," renderers}" 106 "--enable-gui=${concatStringsSep "," toolkits}" 107 "--enable-media=${sound}" 108 "--with-npapi-install=prefix" 109 (enableFeature enablePlugins "plugins") 110 (enableFeature enableJemalloc "jemalloc") 111 (optionalString enableHwAccel "--enable-device=egl") 112 ]; 113 114 meta = { 115 homepage = https://savannah.gnu.org/projects/gnash; 116 description = "A flash (SWF) player and browser plugin"; 117 license = licenses.gpl3; 118 maintainers = with maintainers; [ rnhmjoj ]; 119 }; 120}