2016-09-26 02:50:08 +01:00
|
|
|
{ stdenv, fetchurl, fetchpatch, pkgconfig, freetype, yasm, ffmpeg
|
2015-03-09 06:58:48 +00:00
|
|
|
, aalibSupport ? true, aalib ? null
|
2013-08-26 20:16:18 +01:00
|
|
|
, fontconfigSupport ? true, fontconfig ? null, freefont_ttf ? null
|
2014-08-19 15:24:58 +01:00
|
|
|
, fribidiSupport ? true, fribidi ? null
|
2012-10-03 22:44:45 +01:00
|
|
|
, x11Support ? true, libX11 ? null, libXext ? null, mesa ? null
|
|
|
|
, xineramaSupport ? true, libXinerama ? null
|
|
|
|
, xvSupport ? true, libXv ? null
|
2016-09-14 07:12:22 +01:00
|
|
|
, alsaSupport ? stdenv.isLinux, alsaLib ? null
|
2012-10-03 22:44:45 +01:00
|
|
|
, screenSaverSupport ? true, libXScrnSaver ? null
|
|
|
|
, vdpauSupport ? false, libvdpau ? null
|
2016-09-14 07:12:22 +01:00
|
|
|
, cddaSupport ? !stdenv.isDarwin, cdparanoia ? null
|
|
|
|
, dvdnavSupport ? !stdenv.isDarwin, libdvdnav ? null
|
2012-10-03 22:44:45 +01:00
|
|
|
, bluraySupport ? true, libbluray ? null
|
|
|
|
, amrSupport ? false, amrnb ? null, amrwb ? null
|
|
|
|
, cacaSupport ? true, libcaca ? null
|
2010-05-25 19:39:29 +01:00
|
|
|
, lameSupport ? true, lame ? null
|
2012-05-09 11:01:35 +01:00
|
|
|
, speexSupport ? true, speex ? null
|
2012-10-03 22:44:45 +01:00
|
|
|
, theoraSupport ? true, libtheora ? null
|
|
|
|
, x264Support ? false, x264 ? null
|
2015-06-27 08:17:52 +01:00
|
|
|
, jackaudioSupport ? false, libjack2 ? null
|
2015-05-27 20:42:15 +01:00
|
|
|
, pulseSupport ? false, libpulseaudio ? null
|
2013-05-17 00:18:48 +01:00
|
|
|
, bs2bSupport ? false, libbs2b ? null
|
2012-11-04 17:58:13 +00:00
|
|
|
# For screenshots
|
|
|
|
, libpngSupport ? true, libpng ? null
|
2014-09-27 07:06:54 +01:00
|
|
|
, libjpegSupport ? true, libjpeg ? null
|
2013-01-14 22:08:27 +00:00
|
|
|
, useUnfreeCodecs ? false
|
2016-09-14 07:12:22 +01:00
|
|
|
, darwin ? null
|
2017-04-26 05:06:11 +01:00
|
|
|
, hostPlatform
|
2005-08-24 16:02:30 +01:00
|
|
|
}:
|
2003-11-11 15:01:07 +00:00
|
|
|
|
2013-08-26 20:16:18 +01:00
|
|
|
assert fontconfigSupport -> (fontconfig != null);
|
|
|
|
assert (!fontconfigSupport) -> (freefont_ttf != null);
|
2014-08-19 15:24:58 +01:00
|
|
|
assert fribidiSupport -> (fribidi != null);
|
2012-10-03 22:44:45 +01:00
|
|
|
assert x11Support -> (libX11 != null && libXext != null && mesa != null);
|
2010-08-11 21:14:25 +01:00
|
|
|
assert xineramaSupport -> (libXinerama != null && x11Support);
|
2012-10-03 22:44:45 +01:00
|
|
|
assert xvSupport -> (libXv != null && x11Support);
|
|
|
|
assert alsaSupport -> alsaLib != null;
|
2010-08-29 12:09:23 +01:00
|
|
|
assert screenSaverSupport -> libXScrnSaver != null;
|
2010-12-27 18:48:16 +00:00
|
|
|
assert vdpauSupport -> libvdpau != null;
|
2012-10-03 22:44:45 +01:00
|
|
|
assert cddaSupport -> cdparanoia != null;
|
|
|
|
assert dvdnavSupport -> libdvdnav != null;
|
|
|
|
assert bluraySupport -> libbluray != null;
|
|
|
|
assert amrSupport -> (amrnb != null && amrwb != null);
|
|
|
|
assert cacaSupport -> libcaca != null;
|
|
|
|
assert lameSupport -> lame != null;
|
2012-05-09 11:01:35 +01:00
|
|
|
assert speexSupport -> speex != null;
|
2012-10-03 22:44:45 +01:00
|
|
|
assert theoraSupport -> libtheora != null;
|
|
|
|
assert x264Support -> x264 != null;
|
2015-06-27 08:17:52 +01:00
|
|
|
assert jackaudioSupport -> libjack2 != null;
|
2015-05-27 20:42:15 +01:00
|
|
|
assert pulseSupport -> libpulseaudio != null;
|
2013-05-17 00:18:48 +01:00
|
|
|
assert bs2bSupport -> libbs2b != null;
|
2012-11-04 17:58:13 +00:00
|
|
|
assert libpngSupport -> libpng != null;
|
2014-09-27 07:06:54 +01:00
|
|
|
assert libjpegSupport -> libjpeg != null;
|
2003-11-11 15:01:07 +00:00
|
|
|
|
2006-12-05 22:28:45 +00:00
|
|
|
let
|
2003-11-11 15:01:07 +00:00
|
|
|
|
2010-08-20 21:09:22 +01:00
|
|
|
codecs_src =
|
|
|
|
let
|
|
|
|
dir = http://www.mplayerhq.hu/MPlayer/releases/codecs/;
|
|
|
|
in
|
|
|
|
if stdenv.system == "i686-linux" then fetchurl {
|
|
|
|
url = "${dir}/essential-20071007.tar.bz2";
|
|
|
|
sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic";
|
|
|
|
} else if stdenv.system == "x86_64-linux" then fetchurl {
|
|
|
|
url = "${dir}/essential-amd64-20071007.tar.bz2";
|
|
|
|
sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x";
|
|
|
|
} else if stdenv.system == "powerpc-linux" then fetchurl {
|
|
|
|
url = "${dir}/essential-ppc-20071007.tar.bz2";
|
|
|
|
sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z";
|
|
|
|
} else null;
|
|
|
|
|
|
|
|
codecs = if codecs_src != null then stdenv.mkDerivation {
|
2010-04-14 13:13:01 +01:00
|
|
|
name = "MPlayer-codecs-essential-20071007";
|
2011-05-21 08:31:07 +01:00
|
|
|
|
2010-08-20 21:09:22 +01:00
|
|
|
src = codecs_src;
|
2004-04-01 19:06:09 +01:00
|
|
|
|
2010-04-14 13:13:01 +01:00
|
|
|
installPhase = ''
|
|
|
|
mkdir $out
|
|
|
|
cp -prv * $out
|
|
|
|
'';
|
2011-05-21 08:31:07 +01:00
|
|
|
|
2014-06-19 05:19:00 +01:00
|
|
|
meta.license = stdenv.lib.licenses.unfree;
|
2010-08-20 21:09:22 +01:00
|
|
|
} else null;
|
2012-01-21 21:25:41 +00:00
|
|
|
|
2011-05-21 08:31:07 +01:00
|
|
|
in
|
2006-12-05 22:28:45 +00:00
|
|
|
|
2010-08-20 22:36:11 +01:00
|
|
|
stdenv.mkDerivation rec {
|
2016-09-26 02:50:08 +01:00
|
|
|
name = "mplayer-1.3.0";
|
2006-12-05 22:28:45 +00:00
|
|
|
|
2012-10-03 22:44:45 +01:00
|
|
|
src = fetchurl {
|
2016-09-26 02:50:08 +01:00
|
|
|
url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz";
|
|
|
|
sha256 = "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s";
|
2006-12-05 22:28:45 +00:00
|
|
|
};
|
|
|
|
|
2011-04-23 22:06:39 +01:00
|
|
|
prePatch = ''
|
|
|
|
sed -i /^_install_strip/d configure
|
2017-06-14 16:44:33 +01:00
|
|
|
|
|
|
|
rm -rf ffmpeg
|
2011-04-23 22:06:39 +01:00
|
|
|
'';
|
|
|
|
|
2012-10-03 22:44:45 +01:00
|
|
|
buildInputs = with stdenv.lib;
|
2016-09-26 02:50:08 +01:00
|
|
|
[ pkgconfig freetype ffmpeg ]
|
2015-03-09 06:58:48 +00:00
|
|
|
++ optional aalibSupport aalib
|
2013-08-26 20:16:18 +01:00
|
|
|
++ optional fontconfigSupport fontconfig
|
2014-08-19 15:24:58 +01:00
|
|
|
++ optional fribidiSupport fribidi
|
2012-10-03 22:44:45 +01:00
|
|
|
++ optionals x11Support [ libX11 libXext mesa ]
|
|
|
|
++ optional alsaSupport alsaLib
|
|
|
|
++ optional xvSupport libXv
|
|
|
|
++ optional theoraSupport libtheora
|
|
|
|
++ optional cacaSupport libcaca
|
|
|
|
++ optional xineramaSupport libXinerama
|
|
|
|
++ optional dvdnavSupport libdvdnav
|
|
|
|
++ optional bluraySupport libbluray
|
|
|
|
++ optional cddaSupport cdparanoia
|
2015-06-27 08:17:52 +01:00
|
|
|
++ optional jackaudioSupport libjack2
|
2012-10-03 22:44:45 +01:00
|
|
|
++ optionals amrSupport [ amrnb amrwb ]
|
|
|
|
++ optional x264Support x264
|
2015-05-27 20:42:15 +01:00
|
|
|
++ optional pulseSupport libpulseaudio
|
2012-10-03 22:44:45 +01:00
|
|
|
++ optional screenSaverSupport libXScrnSaver
|
|
|
|
++ optional lameSupport lame
|
|
|
|
++ optional vdpauSupport libvdpau
|
2012-11-04 17:58:13 +00:00
|
|
|
++ optional speexSupport speex
|
|
|
|
++ optional libpngSupport libpng
|
2014-09-27 07:06:54 +01:00
|
|
|
++ optional libjpegSupport libjpeg
|
2013-05-17 00:18:48 +01:00
|
|
|
++ optional bs2bSupport libbs2b
|
2016-09-14 07:12:22 +01:00
|
|
|
++ (with darwin.apple_sdk.frameworks; optionals stdenv.isDarwin [ Cocoa OpenGL ])
|
2012-11-04 17:58:13 +00:00
|
|
|
;
|
2005-08-24 16:02:30 +01:00
|
|
|
|
2012-12-28 18:20:09 +00:00
|
|
|
nativeBuildInputs = [ yasm ];
|
2010-08-11 21:14:25 +01:00
|
|
|
|
2011-05-20 09:06:02 +01:00
|
|
|
postConfigure = ''
|
|
|
|
echo CONFIG_MPEGAUDIODSP=yes >> config.mak
|
2011-04-23 22:06:39 +01:00
|
|
|
'';
|
|
|
|
|
2012-10-03 22:44:45 +01:00
|
|
|
configureFlags = with stdenv.lib;
|
|
|
|
''
|
2013-08-26 20:16:18 +01:00
|
|
|
--enable-freetype
|
|
|
|
${if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig"}
|
2012-10-03 22:44:45 +01:00
|
|
|
${if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl"}
|
|
|
|
${if xineramaSupport then "--enable-xinerama" else "--disable-xinerama"}
|
|
|
|
${if xvSupport then "--enable-xv" else "--disable-xv"}
|
|
|
|
${if alsaSupport then "--enable-alsa" else "--disable-alsa"}
|
|
|
|
${if screenSaverSupport then "--enable-xss" else "--disable-xss"}
|
|
|
|
${if vdpauSupport then "--enable-vdpau" else "--disable-vdpau"}
|
|
|
|
${if cddaSupport then "--enable-cdparanoia" else "--disable-cdparanoia"}
|
|
|
|
${if dvdnavSupport then "--enable-dvdnav" else "--disable-dvdnav"}
|
|
|
|
${if bluraySupport then "--enable-bluray" else "--disable-bluray"}
|
|
|
|
${if amrSupport then "--enable-libopencore_amrnb" else "--disable-libopencore_amrnb"}
|
|
|
|
${if cacaSupport then "--enable-caca" else "--disable-caca"}
|
|
|
|
${if lameSupport then "--enable-mp3lame --disable-mp3lame-lavc" else "--disable-mp3lame --enable-mp3lame-lavc"}
|
|
|
|
${if speexSupport then "--enable-speex" else "--disable-speex"}
|
|
|
|
${if theoraSupport then "--enable-theora" else "--disable-theora"}
|
|
|
|
${if x264Support then "--enable-x264 --disable-x264-lavc" else "--disable-x264 --enable-x264-lavc"}
|
2015-03-17 19:55:19 +00:00
|
|
|
${if jackaudioSupport then "" else "--disable-jack"}
|
2012-10-03 22:44:45 +01:00
|
|
|
${if pulseSupport then "--enable-pulse" else "--disable-pulse"}
|
2013-01-14 22:08:27 +00:00
|
|
|
${optionalString (useUnfreeCodecs && codecs != null) "--codecsdir=${codecs}"}
|
2012-10-03 22:44:45 +01:00
|
|
|
${optionalString (stdenv.isi686 || stdenv.isx86_64) "--enable-runtime-cpudetection"}
|
2014-08-19 15:24:58 +01:00
|
|
|
${optionalString fribidiSupport "--enable-fribidi"}
|
2012-10-03 22:44:45 +01:00
|
|
|
--disable-xanim
|
|
|
|
--disable-ivtv
|
|
|
|
--disable-xvid --disable-xvid-lavc
|
2016-09-14 07:12:22 +01:00
|
|
|
${optionalString stdenv.isLinux "--enable-vidix"}
|
|
|
|
${optionalString stdenv.isLinux "--enable-fbdev"}
|
2012-10-03 22:44:45 +01:00
|
|
|
--disable-ossaudio
|
2017-06-14 16:44:33 +01:00
|
|
|
--disable-ffmpeg_a
|
2012-10-03 22:44:45 +01:00
|
|
|
'';
|
2006-12-05 22:28:45 +00:00
|
|
|
|
2013-08-26 20:16:18 +01:00
|
|
|
NIX_LDFLAGS = with stdenv.lib;
|
|
|
|
optional fontconfigSupport "-lfontconfig"
|
2014-08-19 15:24:58 +01:00
|
|
|
++ optional fribidiSupport "-lfribidi"
|
2013-08-26 20:16:18 +01:00
|
|
|
++ optionals x11Support [ "-lX11" "-lXext" ]
|
|
|
|
;
|
2010-08-11 21:14:25 +01:00
|
|
|
|
2013-02-28 20:15:59 +00:00
|
|
|
installTargets = [ "install" ] ++ stdenv.lib.optional x11Support "install-gui";
|
|
|
|
|
2013-01-14 22:08:27 +00:00
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2013-08-26 20:16:18 +01:00
|
|
|
# Provide a reasonable standard font when not using fontconfig. Maybe we should symlink here.
|
|
|
|
postInstall = stdenv.lib.optionalString (!fontconfigSupport)
|
2010-12-23 17:07:07 +00:00
|
|
|
''
|
|
|
|
mkdir -p $out/share/mplayer
|
|
|
|
cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf
|
2013-02-28 20:15:59 +00:00
|
|
|
if test -f $out/share/applications/mplayer.desktop ; then
|
|
|
|
echo "NoDisplay=True" >> $out/share/applications/mplayer.desktop
|
|
|
|
fi
|
2010-12-23 17:07:07 +00:00
|
|
|
'';
|
|
|
|
|
2010-08-11 21:14:25 +01:00
|
|
|
crossAttrs = {
|
2017-04-26 05:06:11 +01:00
|
|
|
configurePlatforms = [];
|
2011-04-23 22:06:39 +01:00
|
|
|
# Some things (vidix) are nanonote specific. Once someone cares, we can make options from them.
|
2017-04-26 05:06:11 +01:00
|
|
|
# Note, the `target` vs `host` confusion is intensional.
|
2012-10-03 22:44:45 +01:00
|
|
|
preConfigure = ''
|
2010-08-11 21:14:25 +01:00
|
|
|
configureFlags="`echo $configureFlags |
|
2011-04-23 22:06:39 +01:00
|
|
|
sed -e 's/--codecsdir[^ ]\+//' \
|
2010-08-11 21:14:25 +01:00
|
|
|
-e 's/--enable-runtime-cpudetection//' `"
|
2017-04-26 05:06:11 +01:00
|
|
|
configureFlags="$configureFlags --target=${hostPlatform.arch}-linux
|
2011-04-23 22:06:39 +01:00
|
|
|
--enable-cross-compile --cc=$crossConfig-gcc --as=$crossConfig-as
|
|
|
|
--disable-vidix-pcidb --with-vidix-drivers=no --host-cc=gcc"
|
2010-08-11 21:14:25 +01:00
|
|
|
'';
|
|
|
|
};
|
2007-10-26 20:47:35 +01:00
|
|
|
|
2006-10-11 17:45:55 +01:00
|
|
|
meta = {
|
|
|
|
description = "A movie player that supports many video formats";
|
2008-03-06 09:34:36 +00:00
|
|
|
homepage = "http://mplayerhq.hu";
|
|
|
|
license = "GPL";
|
2017-03-27 18:11:17 +01:00
|
|
|
maintainers = [ stdenv.lib.maintainers.eelco ];
|
2017-01-04 19:20:42 +00:00
|
|
|
platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
|
2006-10-11 17:45:55 +01:00
|
|
|
};
|
2003-11-11 15:01:07 +00:00
|
|
|
}
|