summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2015-09-11 14:32:42 +0200
committerBjørn Forsman <bjorn.forsman@gmail.com>2015-09-14 11:10:13 +0200
commitaffcf2e03053366cdd0c68f0771c6abc68afa4ea (patch)
tree929d00746e3114fb13127919adb85bf2f5f7e708 /pkgs/development
parentc94a62558524741fedfa82bfd3b3c3cca7c2f59a (diff)
downloadnixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar.gz
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar.bz2
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar.lz
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar.xz
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.tar.zst
nixpkgs-affcf2e03053366cdd0c68f0771c6abc68afa4ea.zip
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.
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/libraries/opencv/3.x.nix19
1 files 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;