ffmpeg: improve cross platform support & fix licensing issues, resolves #7013
+ Removed asserts for (l)gpl & (l)gpl3 making it easier to enable and disable all (l)gpl & (l)gpl3 portions + Fix build inputs so that nonfree software isn't pulled in when building ffmpeg + Fix compiler on systems with clang + Disable libraries that fail on darwin until they can be fixed + Fix linux only build inputs so that they aren't pulled in on other platforms + Fix optional build inputs + Opencv causes circular dependency issues so it is disabled until it can be resolved
This commit is contained in:
parent
a639c710ae
commit
a5f065d708
@ -103,7 +103,7 @@
|
||||
, openal ? null # OpenAL 1.1 capture support
|
||||
#, opencl ? null # OpenCL code
|
||||
#, opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder
|
||||
, opencv ? null # Video filtering
|
||||
#, opencv ? null # Video filtering
|
||||
, openglExtlib ? false, mesa ? null # OpenGL rendering
|
||||
#, openh264 ? null # H.264/AVC encoder
|
||||
, openjpeg_1 ? null # JPEG 2000 de/encoder
|
||||
@ -156,14 +156,19 @@
|
||||
*
|
||||
* Packages with errors:
|
||||
* flite ilbc schroedinger
|
||||
* opencv - circular dependency issue
|
||||
*
|
||||
* Not packaged:
|
||||
* aacplus avisynth cdio-paranoia crystalhd libavc1394 libiec61883
|
||||
* libmxf libnut libquvi nvenc opencl opencore-amr openh264 oss shine twolame
|
||||
* utvideo vo-aacenc vo-amrwbenc xvmc zvbi blackmagic-design-desktop-video
|
||||
*
|
||||
* Need fixes to support Darwin:
|
||||
* frei0r, game-music-emu, gsm, jack2, libssh, libvpx(stable 1.3.0), openal, openjpeg_1,
|
||||
* pulseaudio, rtmpdump, samba, vit-stab, wavpack, x265. xavs
|
||||
*
|
||||
* Not supported:
|
||||
* stagehright-h264(android only)
|
||||
* stagefright-h264(android only)
|
||||
*
|
||||
* Known issues:
|
||||
* 0.5 - libgsm: configure fails to find library (fix: disable for 0.5)
|
||||
@ -203,7 +208,12 @@ let
|
||||
# Flag change between versions (e.g. "--enable-armvfp" -> "--enable-vfp" changed in v1.1)
|
||||
chgFlg = chgVer: oldFlag: newFlag: if reqMin chgVer then newFlag else oldFlag;
|
||||
|
||||
# Disable dependency that needs fixes before it will work on Darwin
|
||||
disDarwinFix = origArg: if stdenv.isDarwin then false else origArg;
|
||||
|
||||
isCygwin = stdenv.isCygwin;
|
||||
isDarwin = stdenv.isDarwin;
|
||||
isLinux = stdenv.isLinux;
|
||||
in
|
||||
|
||||
/*
|
||||
@ -239,38 +249,26 @@ assert avdeviceLibrary && reqMin "0.6" -> avformatLibrary
|
||||
&& avutilLibrary; # configure flag since 0.6
|
||||
assert avformatLibrary && reqMin "0.6" -> avcodecLibrary && avutilLibrary; # configure flag since 0.6
|
||||
assert avresampleLibrary && reqMin "0.11" -> avutilLibrary;
|
||||
assert postprocLibrary && reqMin "0.5" -> gplLicensing && avutilLibrary;
|
||||
assert postprocLibrary && reqMin "0.5" -> avutilLibrary;
|
||||
assert swresampleLibrary && reqMin "0.9" -> soxr != null;
|
||||
assert swscaleLibrary && reqMin "0.5" -> avutilLibrary;
|
||||
/*
|
||||
* External libraries
|
||||
*/
|
||||
#assert aacplusExtlib && reqMin "0.7" -> nonfreeLicensing;
|
||||
#assert cdio-paranoia != null && reqMin "0.9" -> gplLicensing;
|
||||
#assert decklinkExtlib && reqMin "2.2" -> blackmagic-design-desktop-video != null
|
||||
# && !isCygwin && multithreadBuild # POSIX threads required
|
||||
# && nonfreeLicensing;
|
||||
assert faacExtlib && reqMin "0.5" -> faac != null && nonfreeLicensing;
|
||||
assert fdk-aacExtlib && reqMin "1.0" -> fdk_aac != null && gplLicensing && nonfreeLicensing;
|
||||
assert frei0r != null && reqMin "0.7" -> gplLicensing;
|
||||
assert fdk-aacExtlib && reqMin "1.0" -> fdk_aac != null && nonfreeLicensing;
|
||||
assert gnutls != null && reqMin "0.9" -> !opensslExtlib;
|
||||
assert libxcb-shmExtlib && reqMin "2.5" -> libxcb != null;
|
||||
assert libxcb-xfixesExtlib && reqMin "2.5" -> libxcb != null;
|
||||
assert libxcb-shapeExtlib && reqMin "2.5" -> libxcb != null;
|
||||
#assert opencore-amr != null && reqMin "0.5" -> version3Licensing;
|
||||
assert openglExtlib && reqMin "2.2" -> mesa != null;
|
||||
assert opensslExtlib && reqMin "0.9" -> gnutls == null && openssl != null && gplLicensing && nonfreeLicensing;
|
||||
assert sambaExtlib && reqMin "2.3" -> samba != null && gplLicensing && version3Licensing;
|
||||
#assert utvideo != null && reqMin "0.9" -> gplLicensing;
|
||||
assert vid-stab != null && reqMin "2.0" -> gplLicensing;
|
||||
#assert vo-aacenc != null && reqMin "0.6" -> version3Licensing;
|
||||
#assert vo-amrwbenc != null && reqMin "0.7" -> version3Licensing;
|
||||
assert x11grabExtlib && reqMin "0.5" -> libX11 != null && libXv != null && gplLicensing;
|
||||
assert x264 != null && reqMin "0.5" -> gplLicensing;
|
||||
assert x265 != null && reqMin "2.2" -> gplLicensing;
|
||||
assert xavs != null && reqMin "0.7" -> gplLicensing;
|
||||
assert xvidcore != null && reqMin "0.5" -> gplLicensing;
|
||||
#assert zvbi != null && reqMin "2.1" -> gplLicensing;
|
||||
assert opensslExtlib && reqMin "0.9" -> gnutls == null && openssl != null && nonfreeLicensing;
|
||||
assert sambaExtlib && reqMin "2.3" -> samba != null && !isDarwin;
|
||||
assert x11grabExtlib && reqMin "0.5" -> libX11 != null && libXv != null;
|
||||
|
||||
with stdenv.lib;
|
||||
stdenv.mkDerivation rec {
|
||||
@ -295,9 +293,10 @@ stdenv.mkDerivation rec {
|
||||
/*
|
||||
* Build flags
|
||||
*/
|
||||
# One some ARM platforms --enable-thumb
|
||||
# On some ARM platforms --enable-thumb
|
||||
"--enable-shared --disable-static"
|
||||
(mkFlag true "0.6" "pic")
|
||||
(if (stdenv.cc.cc.isClang or false) then "--cc=clang" else null)
|
||||
(mkFlag smallBuild "0.5" "small")
|
||||
(mkFlag runtime-cpudetectBuild "0.5" "runtime-cpudetect")
|
||||
(mkFlag grayBuild "0.5" "gray")
|
||||
@ -334,7 +333,7 @@ stdenv.mkDerivation rec {
|
||||
(mkFlag avformatLibrary "0.6" "avformat")
|
||||
(mkFlag avresampleLibrary "1.0" "avresample")
|
||||
(mkFlag avutilLibrary "1.1" "avutil")
|
||||
(mkFlag postprocLibrary "0.5" "postproc")
|
||||
(mkFlag (postprocLibrary && gplLicensing) "0.5" "postproc")
|
||||
(mkFlag swresampleLibrary "0.9" "swresample")
|
||||
(mkFlag swscaleLibrary "0.5" "swscale")
|
||||
/*
|
||||
@ -359,18 +358,18 @@ stdenv.mkDerivation rec {
|
||||
#(mkFlag decklinkExtlib "2.2" "decklink")
|
||||
(mkFlag faacExtlib "0.5" "libfaac")
|
||||
(depFlag faad2Extlib "0.5" "0.6" "libfaad")
|
||||
(mkFlag fdk-aacExtlib "1.0" "libfdk-aac")
|
||||
(mkFlag (fdk-aacExtlib && gplLicensing) "1.0" "libfdk-aac")
|
||||
#(mkFlag (flite != null) "1.0" "libflite")
|
||||
(if reqMin "1.0" then # Force disable until a solution is found
|
||||
"--disable-libflite"
|
||||
else null)
|
||||
(mkFlag (fontconfig != null) "1.0" "fontconfig")
|
||||
(mkFlag (freetype != null) "0.7" "libfreetype")
|
||||
(mkFlag (frei0r != null) "0.7" "frei0r")
|
||||
(mkFlag (disDarwinFix (frei0r != null && gplLicensing)) "0.7" "frei0r")
|
||||
(mkFlag (fribidi != null) "2.3" "libfribidi")
|
||||
(mkFlag (game-music-emu != null) "2.2" "libgme")
|
||||
(mkFlag (disDarwinFix (game-music-emu != null)) "2.2" "libgme")
|
||||
(mkFlag (gnutls != null) "0.9" "gnutls")
|
||||
(verFix (mkFlag (gsm != null) "0.5" "libgsm") "0.5" "--disable-libgsm")
|
||||
(verFix (mkFlag (disDarwinFix (gsm != null)) "0.5" "libgsm") "0.5" "--disable-libgsm")
|
||||
#(mkFlag (ilbc != null) "1.0" "libilbc")
|
||||
(mkFlag (ladspaH !=null) "2.1" "ladspa")
|
||||
(mkFlag (lame != null) "0.5" "libmp3lame")
|
||||
@ -379,20 +378,20 @@ stdenv.mkDerivation rec {
|
||||
(mkFlag (libbluray != null) "1.0" "libbluray")
|
||||
(mkFlag (libbs2b != null) "2.3" "libbs2b")
|
||||
(mkFlag (libcaca != null) "1.0" "libcaca")
|
||||
#(mkFlag (cdio-paranoia != null) "0.9" "libcdio")
|
||||
(mkFlag (libdc1394 != null && libraw1394 != null) "0.5" "libdc1394")
|
||||
#(mkFlag (cdio-paranoia != null && gplLicensing) "0.9" "libcdio")
|
||||
(mkFlag (if !isLinux then false else libdc1394 != null && libraw1394 != null && isLinux) "0.5" "libdc1394")
|
||||
(mkFlag (libiconv != null) "1.2" "iconv")
|
||||
#(mkFlag (libiec61883 != null && libavc1394 != null && libraw1394 != null) "1.0" "libiec61883")
|
||||
#(mkFlag (if !isLinux then false else libiec61883 != null && libavc1394 != null && libraw1394 != null) "1.0" "libiec61883")
|
||||
#(mkFlag (libmfx != null) "2.6" "libmfx")
|
||||
(mkFlag (libmodplug != null) "0.9" "libmodplug")
|
||||
(mkFlag (disDarwinFix (libmodplug != null)) "0.9" "libmodplug")
|
||||
#(mkFlag (libnut != null) "0.5" "libnut")
|
||||
(mkFlag (libopus != null) "1.0" "libopus")
|
||||
(mkFlag (libssh != null) "2.1" "libssh")
|
||||
(mkFlag (disDarwinFix (libssh != null)) "2.1" "libssh")
|
||||
(mkFlag (libtheora != null) "0.5" "libtheora")
|
||||
(mkFlag (libva != null) "0.6" "vaapi")
|
||||
(mkFlag (if isDarwin then false else libva != null) "0.6" "vaapi")
|
||||
(mkFlag (libvdpau != null) "0.5" "vdpau")
|
||||
(mkFlag (libvorbis != null) "0.5" "libvorbis")
|
||||
(mkFlag (libvpx != null) "0.6" "libvpx")
|
||||
(mkFlag (disDarwinFix (libvpx != null)) "0.6" "libvpx")
|
||||
(mkFlag (libwebp != null) "2.2" "libwebp")
|
||||
(mkFlag (libX11 != null && libXv != null) "2.3" "xlib")
|
||||
(mkFlag (libxcb != null) "2.5" "libxcb")
|
||||
@ -401,39 +400,38 @@ stdenv.mkDerivation rec {
|
||||
(mkFlag libxcb-shapeExtlib "2.5" "libxcb-shape")
|
||||
(mkFlag (lzma != null) "2.4" "lzma")
|
||||
#(mkFlag nvenc "2.6" "nvenc")
|
||||
(mkFlag (openal != null) "0.9" "openal")
|
||||
(mkFlag (disDarwinFix (openal != null)) "0.9" "openal")
|
||||
#(mkFlag opencl "2.2" "opencl")
|
||||
#(mkFlag (opencore-amr != null) "0.5" "libopencore-amrnb")
|
||||
#(mkFlag (opencore-amr != null) "0.5" "libopencore-amrwb")
|
||||
(mkFlag (opencv != null) "1.1" "libopencv") # Actual min. version 0.7
|
||||
#(mkFlag (opencore-amr != null && version3Licensing) "0.5" "libopencore-amrnb")
|
||||
#(mkFlag (opencv != null) "1.1" "libopencv") # Actual min. version 0.7
|
||||
(mkFlag openglExtlib "2.2" "opengl")
|
||||
#(mkFlag (openh264 != null) "2.6" "openh264")
|
||||
(mkFlag (openjpeg_1 != null) "0.5" "libopenjpeg")
|
||||
(mkFlag opensslExtlib "0.9" "openssl")
|
||||
(mkFlag (pulseaudio != null) "0.9" "libpulse")
|
||||
(mkFlag (disDarwinFix (openjpeg_1 != null)) "0.5" "libopenjpeg")
|
||||
(mkFlag (opensslExtlib && gplLicensing) "0.9" "openssl")
|
||||
(mkFlag (disDarwinFix (pulseaudio != null)) "0.9" "libpulse")
|
||||
#(mkFlag quvi "2.0" "libquvi")
|
||||
(mkFlag (rtmpdump != null) "0.6" "librtmp")
|
||||
(mkFlag (disDarwinFix (rtmpdump != null)) "0.6" "librtmp")
|
||||
#(mkFlag (schroedinger != null) "0.5" "libschroedinger")
|
||||
#(mkFlag (shine != null) "2.0" "libshine")
|
||||
(mkFlag sambaExtlib "2.3" "libsmbclient")
|
||||
(mkFlag (disDarwinFix (sambaExtlib && gplLicensing && version3Licensing)) "2.3" "libsmbclient")
|
||||
(mkFlag (SDL != null) "2.5" "sdl") # Only configurable since 2.5, auto detected before then
|
||||
(mkFlag (soxr != null) "1.2" "libsoxr")
|
||||
(mkFlag (speex != null) "0.5" "libspeex")
|
||||
#(mkFlag (twolame != null) "1.0" "libtwolame")
|
||||
#(mkFlag (utvideo != null) "0.9" "libutvideo")
|
||||
(mkFlag (v4l_utils != null) "0.9" "libv4l2")
|
||||
(mkFlag (vid-stab != null) "2.2" "libvidstab") # Actual min. version 2.0
|
||||
#(mkFlag (vo-aacenc != null) "0.6" "libvo-aacenc")
|
||||
#(mkFlag (vo-amrwbenc) "0.7" "libvo-amrwbenc")
|
||||
(mkFlag (wavpack != null) "2.0" "libwavpack")
|
||||
(mkFlag (x11grabExtlib) "0.5" "x11grab")
|
||||
(mkFlag (x264 != null) "0.5" "libx264")
|
||||
(mkFlag (x265 != null) "2.2" "libx265")
|
||||
(mkFlag (xavs != null) "0.7" "libxavs")
|
||||
(mkFlag (xvidcore != null) "0.5" "libxvid")
|
||||
#(mkFlag (utvideo != null && gplLicensing) "0.9" "libutvideo")
|
||||
(mkFlag (if !isLinux then false else v4l_utils != null && isLinux) "0.9" "libv4l2")
|
||||
(mkFlag (disDarwinFix (vid-stab != null && gplLicensing)) "2.2" "libvidstab") # Actual min. version 2.0
|
||||
#(mkFlag (vo-aacenc != null && version3Licensing) "0.6" "libvo-aacenc")
|
||||
#(mkFlag (vo-amrwbenc != null && version3Licensing) "0.7" "libvo-amrwbenc")
|
||||
(mkFlag (disDarwinFix (wavpack != null)) "2.0" "libwavpack")
|
||||
(mkFlag (x11grabExtlib && gplLicensing) "0.5" "x11grab")
|
||||
(mkFlag (x264 != null && gplLicensing) "0.5" "libx264")
|
||||
(mkFlag (disDarwinFix (x265 != null && gplLicensing)) "2.2" "libx265")
|
||||
(mkFlag (disDarwinFix (xavs != null && gplLicensing)) "0.7" "libxavs")
|
||||
(mkFlag (xvidcore != null && gplLicensing) "0.5" "libxvid")
|
||||
(mkFlag (zeromq4 != null) "2.0" "libzmq")
|
||||
(mkFlag (zlib != null) "0.5" "zlib")
|
||||
#(mkFlag (zvbi != null) "2.1" "libzvbi")
|
||||
#(mkFlag (zvbi != null && gplLicensing) "2.1" "libzvbi")
|
||||
/*
|
||||
* Developer flags
|
||||
*/
|
||||
@ -449,14 +447,19 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ perl pkgconfig texinfo yasm ];
|
||||
|
||||
buildInputs = [
|
||||
alsaLib bzip2 celt faad2 fdk_aac fontconfig freetype frei0r fribidi
|
||||
game-music-emu gnutls gsm jack2 ladspaH lame libass libbluray libbs2b
|
||||
libcaca libdc1394 libmodplug libogg libopus libraw1394 libssh libtheora
|
||||
libva libvdpau libvpx libvorbis libwebp libX11 libxcb libXext libXfixes
|
||||
libXv lzma mesa openal opencv openjpeg_1 openssl pulseaudio rtmpdump
|
||||
samba SDL soxr speex v4l_utils vid-stab wavpack x264 x265 xavs xvidcore
|
||||
zeromq4 zlib
|
||||
] ++ optional faacExtlib faac;
|
||||
bzip2 celt fontconfig freetype fribidi gnutls ladspaH lame libass libbluray
|
||||
libbs2b libcaca libdc1394 libogg libopus libtheora libvdpau libvorbis
|
||||
libwebp libX11 libxcb libXext libXfixes libXv lzma SDL soxr speex x264
|
||||
xvidcore zeromq4 zlib
|
||||
] ++ optional (disDarwinFix sambaExtlib) samba
|
||||
++ optional openglExtlib mesa
|
||||
++ optionals x11grabExtlib [ libXext libXfixes ]
|
||||
++ optionals nonfreeLicensing [ faac faad2 fdk_aac openssl ]
|
||||
++ optionals (!isDarwin) [
|
||||
frei0r game-music-emu gsm jack2 libmodplug libssh libvpx openal
|
||||
openjpeg_1 pulseaudio rtmpdump vid-stab wavpack x265 xavs
|
||||
] ++ optional (!isDarwin && !isCygwin) libva
|
||||
++ optionals isLinux [ alsaLib libraw1394 v4l_utils ];
|
||||
|
||||
# Build qt-faststart executable
|
||||
buildPhase = optional (qt-faststartProgram && (reqMin "0.9")) ''make tools/qt-faststart'';
|
||||
|
Loading…
Reference in New Issue
Block a user