summary refs log tree commit diff
path: root/pkgs/development/libraries/opencv/3.x.nix
blob: 4a58ae43bb7a09fd146dfcb8c5e9bace9f6748ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{ lib, stdenv, fetchurl, fetchzip, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg
, fetchpatch, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages, unzip
, enableIpp ? false
, enableContrib ? false
, enableBloat ? false }:

let
  v = "3.0.0";

  contribSrc = fetchzip {
    url = "https://github.com/Itseez/opencv_contrib/archive/3.0.0.tar.gz";
    sha256 = "1gx7f9v85hmzh37s0zaillg7bs6cy9prm3wl0jb5zc5zrf9d8bm8";
    name = "opencv-contrib-3.0.0-src";
  };

in

stdenv.mkDerivation rec {
  name = "opencv-${v}";

  src = fetchurl {
    url = "https://github.com/Itseez/opencv/archive/${v}.zip";
    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 ];

  cmakeFlags = [
    "-DWITH_IPP=${if enableIpp then "ON" else "OFF"}"
  ] ++ stdenv.lib.optionals enableContrib [ "-DOPENCV_EXTRA_MODULES_PATH=${contribSrc}/modules" ];

  enableParallelBuilding = true;

  meta = {
    description = "Open Computer Vision Library with more than 500 algorithms";
    homepage = http://opencv.org/;
    license = stdenv.lib.licenses.bsd3;
    maintainers = with stdenv.lib.maintainers; [viric flosse];
    platforms = with stdenv.lib.platforms; linux;
  };
}