From affcf2e03053366cdd0c68f0771c6abc68afa4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Fri, 11 Sep 2015 14:32:42 +0200 Subject: [PATCH] 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 . I tried applying the same change to opencv(2.x). OpenCV 2.x didn't automatically detect IPP, so I reverted the change. --- pkgs/development/libraries/opencv/3.x.nix | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/opencv/3.x.nix b/pkgs/development/libraries/opencv/3.x.nix index eed77b9113a..365f11f88f0 100644 --- a/pkgs/development/libraries/opencv/3.x.nix +++ b/pkgs/development/libraries/opencv/3.x.nix @@ -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;