opencv3: add enableIpp flag

Intel Integrated Performance Primitives (IPP) speeds up parts of OpenCV
on Intel processors (and compatible). It increases the store path from
220 MiB to 300 MiB, so it defaults to off.

Original patch from Bas van Dijk <v.dijk.bas@gmail.com>.

I tried applying the same change to opencv(2.x). OpenCV 2.x didn't
automatically detect IPP, so I reverted the change.
This commit is contained in:
Bjørn Forsman 2015-09-11 14:32:42 +02:00
parent c94a625585
commit affcf2e030

View file

@ -1,5 +1,6 @@
{ lib, stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg
, fetchpatch, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages, unzip
, enableIpp ? false
, enableBloat ? false }:
let v = "3.0.0"; in
@ -12,15 +13,27 @@ stdenv.mkDerivation rec {
sha256 = "00dh7wvgkflz22liqd10fma8m3395lb3l3rgawnn5wlnz6i4w287";
};
postPatch =
let ippicv = fetchurl {
url = "http://sourceforge.net/projects/opencvlibrary/files/3rdparty/ippicv/${ippicvName}";
md5 = ippicvHash;
};
ippicvName = "ippicv_linux_20141027.tgz";
ippicvHash = "8b449a536a2157bcad08a2b9f266828b";
ippicvArchive = "3rdparty/ippicv/downloads/linux-${ippicvHash}/${ippicvName}";
in stdenv.lib.optionalString enableIpp
''
mkdir -p $(dirname ${ippicvArchive})
ln -s ${ippicv} ${ippicvArchive}
'';
buildInputs =
[ unzip libjpeg libpng libtiff ]
++ lib.optionals enableBloat [ gtk glib jasper ffmpeg xineLib gstreamer python27 python27Packages.numpy ];
nativeBuildInputs = [ cmake pkgconfig ];
# TODO: Pre-download IPP so that OpenCV doesn't try to download it itself
# (which fails).
cmakeFlags = [ "-DWITH_IPP=OFF" ];
cmakeFlags = [ "-DWITH_IPP=${if enableIpp then "ON" else "OFF"}" ];
enableParallelBuilding = true;