Gentoo Archives: gentoo-commits

From: Amy Winston <amynka@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/opencv/, media-libs/opencv/files/
Date: Wed, 02 Mar 2016 12:14:54
Message-Id: 1456920606.5dfc738e3025c2559923c8bb72d7c4399aaec89b.amynka@gentoo
1 commit: 5dfc738e3025c2559923c8bb72d7c4399aaec89b
2 Author: Amy Winston <amynka <AT> gentoo <DOT> org>
3 AuthorDate: Wed Mar 2 12:10:06 2016 +0000
4 Commit: Amy Winston <amynka <AT> gentoo <DOT> org>
5 CommitDate: Wed Mar 2 12:10:06 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5dfc738e
7
8 media-libs/opencv: revert drop old 3.1.0-r1 and patches
9
10 This reverts commit 48656e3b700cf6d771db428bc6dde322753839d3.
11
12 .../files/opencv-3.1.0-fix-hal-headers.patch | 91 ++++++++
13 .../files/opencv-3.1.0-fix-ocl-declaration.patch | 214 +++++++++++++++++
14 .../files/opencv-3.1.0-invalid-string-usage.patch | 75 ++++++
15 media-libs/opencv/opencv-3.1.0-r1.ebuild | 252 +++++++++++++++++++++
16 4 files changed, 632 insertions(+)
17
18 diff --git a/media-libs/opencv/files/opencv-3.1.0-fix-hal-headers.patch b/media-libs/opencv/files/opencv-3.1.0-fix-hal-headers.patch
19 new file mode 100644
20 index 0000000..dd77571
21 --- /dev/null
22 +++ b/media-libs/opencv/files/opencv-3.1.0-fix-hal-headers.patch
23 @@ -0,0 +1,91 @@
24 +From f529a1df2b17bcada1179ddcaf1352e3a5ba97b8 Mon Sep 17 00:00:00 2001
25 +From: Maksim Shabunin <maksim.shabunin@××××××.com>
26 +Date: Tue, 15 Dec 2015 17:51:08 +0300
27 +Subject: [PATCH] Fixed HAL headers location
28 +
29 +diff --git opencv_contrib-master/modules/xfeatures2d/src/sift.cpp opencv_contrib-master/modules/xfeatures2d/src/sift.cpp
30 +index fc67c4d..9634fbb 100644
31 +--- opencv_contrib-master/modules/xfeatures2d/src/sift.cpp
32 ++++ opencv_contrib-master/modules/xfeatures2d/src/sift.cpp
33 +@@ -105,6 +105,7 @@
34 + #include "precomp.hpp"
35 + #include <iostream>
36 + #include <stdarg.h>
37 ++#include <opencv2/core/hal/hal.hpp>
38 +
39 + namespace cv
40 + {
41 +@@ -337,9 +338,9 @@ static float calcOrientationHist( const Mat& img, Point pt, int radius,
42 + len = k;
43 +
44 + // compute gradient values, orientations and the weights over the pixel neighborhood
45 +- hal::exp(W, W, len);
46 +- hal::fastAtan2(Y, X, Ori, len, true);
47 +- hal::magnitude(X, Y, Mag, len);
48 ++ cv::hal::exp32f(W, W, len);
49 ++ cv::hal::fastAtan2(Y, X, Ori, len, true);
50 ++ cv::hal::magnitude32f(X, Y, Mag, len);
51 +
52 + for( k = 0; k < len; k++ )
53 + {
54 +@@ -620,9 +621,9 @@ static void calcSIFTDescriptor( const Mat& img, Point2f ptf, float ori, float sc
55 + }
56 +
57 + len = k;
58 +- hal::fastAtan2(Y, X, Ori, len, true);
59 +- hal::magnitude(X, Y, Mag, len);
60 +- hal::exp(W, W, len);
61 ++ cv::hal::fastAtan2(Y, X, Ori, len, true);
62 ++ cv::hal::magnitude32f(X, Y, Mag, len);
63 ++ cv::hal::exp32f(W, W, len);
64 +
65 + for( k = 0; k < len; k++ )
66 + {
67 +
68 +diff --git opencv_contrib-master/modules/optflow/src/motempl.cpp opencv_contrib-master/modules/optflow/src/motempl.cpp
69 +index ec18013..452ad63 100644
70 +--- opencv_contrib-master/modules/optflow/src/motempl.cpp
71 ++++ opencv_contrib-master/modules/optflow/src/motempl.cpp
72 +@@ -41,6 +41,7 @@
73 +
74 + #include "precomp.hpp"
75 + #include "opencv2/core/utility.hpp"
76 ++#include "opencv2/core/hal/hal.hpp"
77 + #include "opencl_kernels_optflow.hpp"
78 +
79 + namespace cv {
80 +@@ -212,7 +213,7 @@ void calcMotionGradient( InputArray _mhi, OutputArray _mask,
81 + float* orient_row = orient.ptr<float>(y);
82 + uchar* mask_row = mask.ptr<uchar>(y);
83 +
84 +- hal::fastAtan2(dY_max_row, dX_min_row, orient_row, size.width, true);
85 ++ cv::hal::fastAtan2(dY_max_row, dX_min_row, orient_row, size.width, true);
86 +
87 + // make orientation zero where the gradient is very small
88 + for( x = 0; x < size.width; x++ )
89 +diff --git opencv_contrib-master/modules/ximgproc/src/fgs_filter.cpp opencv_contrib-master/modules/ximgproc/src/fgs_filter.cpp
90 +index e89eb8f..39307e5 100644
91 +--- opencv_contrib-master/modules/ximgproc/src/fgs_filter.cpp
92 ++++ opencv_contrib-master/modules/ximgproc/src/fgs_filter.cpp
93 +@@ -35,7 +35,7 @@
94 + */
95 +
96 + #include "precomp.hpp"
97 +-#include "opencv2/hal/intrin.hpp"
98 ++#include "opencv2/core/hal/intrin.hpp"
99 + #include <vector>
100 +
101 + namespace cv {
102 +diff --git opencv_contrib-master/modules/xphoto/src/grayworld_white_balance.cpp opencv_contrib-master/modules/xphoto/src/grayworld_white_balance.cpp
103 +index 4780497..15530d3 100644
104 +--- opencv_contrib-master/modules/xphoto/src/grayworld_white_balance.cpp
105 ++++ opencv_contrib-master/modules/xphoto/src/grayworld_white_balance.cpp
106 +@@ -40,7 +40,7 @@
107 + #include "opencv2/xphoto.hpp"
108 +
109 + #include "opencv2/core.hpp"
110 +-#include "opencv2/hal/intrin.hpp"
111 ++#include "opencv2/core/hal/intrin.hpp"
112 +
113 + namespace cv { namespace xphoto {
114 +
115
116 diff --git a/media-libs/opencv/files/opencv-3.1.0-fix-ocl-declaration.patch b/media-libs/opencv/files/opencv-3.1.0-fix-ocl-declaration.patch
117 new file mode 100644
118 index 0000000..e9a190c
119 --- /dev/null
120 +++ b/media-libs/opencv/files/opencv-3.1.0-fix-ocl-declaration.patch
121 @@ -0,0 +1,214 @@
122 +From ac8dd366e4a1877e0af16961a4094496bed955f7 Mon Sep 17 00:00:00 2001
123 +From: Alexander Alekhin <alexander.alekhin@××××××.com>
124 +Date: Sun, 13 Sep 2015 21:18:47 +0300
125 +Subject: [PATCH] ocl: fix "off" mode
126 +
127 +diff --git opencv_contrib-master/modules/tracking/src/tldDetector.cpp opencv_contrib-master/modules/tracking/src/tldDetector.cpp
128 +index cbb783e..d61444b 100644
129 +--- opencv_contrib-master/modules/tracking/src/tldDetector.cpp
130 ++++ opencv_contrib-master/modules/tracking/src/tldDetector.cpp
131 +@@ -104,6 +104,7 @@ namespace cv
132 + return splus / (sminus + splus);
133 + }
134 +
135 ++#ifdef HAVE_OPENCL
136 + double TLDDetector::ocl_Sr(const Mat_<uchar>& patch)
137 + {
138 + //int64 e1, e2, e3, e4;
139 +@@ -283,6 +284,7 @@ namespace cv
140 + //t = (e2 - e1) / getTickFrequency()*1000.0;
141 + //printf("Sr GPU: %f\n\n", t);
142 + }
143 ++#endif
144 +
145 + // Calculate Conservative similarity of the patch (NN-Model)
146 + double TLDDetector::Sc(const Mat_<uchar>& patch)
147 +@@ -337,6 +339,7 @@ namespace cv
148 + return splus / (sminus + splus);
149 + }
150 +
151 ++#ifdef HAVE_OPENCL
152 + double TLDDetector::ocl_Sc(const Mat_<uchar>& patch)
153 + {
154 + //int64 e1, e2, e3, e4;
155 +@@ -415,6 +418,7 @@ namespace cv
156 + return 0.0;
157 + return splus / (sminus + splus);
158 + }
159 ++#endif // HAVE_OPENCL
160 +
161 + // Generate Search Windows for detector from aspect ratio of initial BBs
162 + void TLDDetector::generateScanGrid(int rows, int cols, Size initBox, std::vector<Rect2d>& res, bool withScaling)
163 +@@ -565,6 +569,7 @@ namespace cv
164 + return true;
165 + }
166 +
167 ++#ifdef HAVE_OPENCL
168 + bool TLDDetector::ocl_detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector<LabeledPatch>& patches, Size initSize)
169 + {
170 + patches.clear();
171 +@@ -696,6 +701,7 @@ namespace cv
172 + res = maxScRect;
173 + return true;
174 + }
175 ++#endif // HAVE_OPENCL
176 +
177 + // Computes the variance of subimage given by box, with the help of two integral
178 + // images intImgP and intImgP2 (sum of squares), which should be also provided.
179 +diff --git opencv_contrib-master/modules/tracking/src/tldDetector.hpp opencv_contrib-master/modules/tracking/src/tldDetector.hpp
180 +index 3e11895..1caff57 100644
181 +--- opencv_contrib-master/modules/tracking/src/tldDetector.hpp
182 ++++ opencv_contrib-master/modules/tracking/src/tldDetector.hpp
183 +@@ -74,10 +74,12 @@ namespace cv
184 + inline double ensembleClassifierNum(const uchar* data);
185 + inline void prepareClassifiers(int rowstep);
186 + double Sr(const Mat_<uchar>& patch);
187 +- double ocl_Sr(const Mat_<uchar>& patch);
188 + double Sc(const Mat_<uchar>& patch);
189 ++#ifdef HAVE_OPENCL
190 ++ double ocl_Sr(const Mat_<uchar>& patch);
191 + double ocl_Sc(const Mat_<uchar>& patch);
192 + void ocl_batchSrSc(const Mat_<uchar>& patches, double *resultSr, double *resultSc, int numOfPatches);
193 ++#endif
194 +
195 + std::vector<TLDEnsembleClassifier> classifiers;
196 + Mat *posExp, *negExp;
197 +diff --git opencv_contrib-master/modules/tracking/src/tldModel.cpp opencv_contrib-master/modules/tracking/src/tldModel.cpp
198 +index 0854022..47fc32a 100644
199 +--- opencv_contrib-master/modules/tracking/src/tldModel.cpp
200 ++++ opencv_contrib-master/modules/tracking/src/tldModel.cpp
201 +@@ -246,6 +246,7 @@ namespace cv
202 + dfprintf((stdout, "\n"));*/
203 + }
204 +
205 ++#ifdef HAVE_OPENCL
206 + void TrackerTLDModel::ocl_integrateAdditional(const std::vector<Mat_<uchar> >& eForModel, const std::vector<Mat_<uchar> >& eForEnsemble, bool isPositive)
207 + {
208 + int positiveIntoModel = 0, negativeIntoModel = 0, positiveIntoEnsemble = 0, negativeIntoEnsemble = 0;
209 +@@ -315,6 +316,7 @@ namespace cv
210 + dfprintf((stdout, "positiveIntoEnsemble = %d ", positiveIntoEnsemble));
211 + dfprintf((stdout, "\n"));*/
212 + }
213 ++#endif // HAVE_OPENCL
214 +
215 + //Push the patch to the model
216 + void TrackerTLDModel::pushIntoModel(const Mat_<uchar>& example, bool positive)
217 +diff --git opencv_contrib-master/modules/tracking/src/tldModel.hpp opencv_contrib-master/modules/tracking/src/tldModel.hpp
218 +index be9141a..ba7c926 100644
219 +--- opencv_contrib-master/modules/tracking/src/tldModel.hpp
220 ++++ opencv_contrib-master/modules/tracking/src/tldModel.hpp
221 +@@ -58,7 +58,9 @@ namespace cv
222 + void setBoudingBox(Rect2d boundingBox){ boundingBox_ = boundingBox; }
223 + void integrateRelabeled(Mat& img, Mat& imgBlurred, const std::vector<TLDDetector::LabeledPatch>& patches);
224 + void integrateAdditional(const std::vector<Mat_<uchar> >& eForModel, const std::vector<Mat_<uchar> >& eForEnsemble, bool isPositive);
225 ++#ifdef HAVE_OPENCL
226 + void ocl_integrateAdditional(const std::vector<Mat_<uchar> >& eForModel, const std::vector<Mat_<uchar> >& eForEnsemble, bool isPositive);
227 ++#endif
228 + Size getMinSize(){ return minSize_; }
229 + void printme(FILE* port = stdout);
230 + Ptr<TLDDetector> detector;
231 +diff --git opencv_contrib-master/modules/tracking/src/tldTracker.cpp opencv_contrib-master/modules/tracking/src/tldTracker.cpp
232 +index 0f1e2f7..a5190f5 100644
233 +--- opencv_contrib-master/modules/tracking/src/tldTracker.cpp
234 ++++ opencv_contrib-master/modules/tracking/src/tldTracker.cpp
235 +@@ -123,9 +123,11 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox)
236 +
237 + if (i == 1)
238 + {
239 ++#ifdef HAVE_OPENCL
240 + if (ocl::haveOpenCL())
241 + DETECT_FLG = tldModel->detector->ocl_detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize());
242 + else
243 ++#endif
244 + DETECT_FLG = tldModel->detector->detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize());
245 + }
246 +
247 +@@ -211,17 +213,21 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox)
248 + tldModel->integrateRelabeled(imageForDetector, image_blurred, detectorResults);
249 + //dprintf(("%d relabeled by nExpert\n", negRelabeled));
250 + pExpert.additionalExamples(examplesForModel, examplesForEnsemble);
251 +- if (ocl::haveOpenCL())
252 +- tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, true);
253 +- else
254 +- tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, true);
255 ++#ifdef HAVE_OPENCL
256 ++ if (ocl::haveOpenCL())
257 ++ tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, true);
258 ++ else
259 ++#endif
260 ++ tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, true);
261 + examplesForModel.clear(); examplesForEnsemble.clear();
262 + nExpert.additionalExamples(examplesForModel, examplesForEnsemble);
263 +
264 +- if (ocl::haveOpenCL())
265 +- tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, false);
266 +- else
267 +- tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, false);
268 ++#ifdef HAVE_OPENCL
269 ++ if (ocl::haveOpenCL())
270 ++ tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, false);
271 ++ else
272 ++#endif
273 ++ tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, false);
274 + }
275 + else
276 + {
277 +diff --git opencv_contrib-master/modules/xfeatures2d/src/surf.cpp opencv_contrib-master/modules/xfeatures2d/src/surf.cpp
278 +index 673817e..af5ceaf6 100644
279 +--- opencv_contrib-master/modules/xfeatures2d/src/surf.cpp
280 ++++ opencv_contrib-master/modules/xfeatures2d/src/surf.cpp
281 +@@ -892,6 +892,7 @@ void SURF_Impl::detectAndCompute(InputArray _img, InputArray _mask,
282 + CV_Assert(!_img.empty() && CV_MAT_DEPTH(imgtype) == CV_8U && (imgcn == 1 || imgcn == 3 || imgcn == 4));
283 + CV_Assert(_descriptors.needed() || !useProvidedKeypoints);
284 +
285 ++#ifdef HAVE_OPENCL
286 + if( ocl::useOpenCL() )
287 + {
288 + SURF_OCL ocl_surf;
289 +@@ -918,6 +919,7 @@ void SURF_Impl::detectAndCompute(InputArray _img, InputArray _mask,
290 + return;
291 + }
292 + }
293 ++#endif // HAVE_OPENCL
294 +
295 + Mat img = _img.getMat(), mask = _mask.getMat(), mask1, sum, msum;
296 +
297 +diff --git opencv_contrib-master/modules/xfeatures2d/src/surf.hpp opencv_contrib-master/modules/xfeatures2d/src/surf.hpp
298 +index 2c4e271..cf3fda1 100644
299 +--- opencv_contrib-master/modules/xfeatures2d/src/surf.hpp
300 ++++ opencv_contrib-master/modules/xfeatures2d/src/surf.hpp
301 +@@ -64,6 +64,7 @@ class SURF_Impl : public SURF
302 + bool upright;
303 + };
304 +
305 ++#ifdef HAVE_OPENCL
306 + class SURF_OCL
307 + {
308 + public:
309 +@@ -145,6 +146,7 @@ class SURF_OCL
310 +
311 + int status;
312 + };
313 ++#endif // HAVE_OPENCL
314 +
315 + /*
316 + template<typename _Tp> void copyVectorToUMat(const std::vector<_Tp>& v, UMat& um)
317 +diff --git opencv_contrib-master/modules/xfeatures2d/src/surf.ocl.cpp opencv_contrib-master/modules/xfeatures2d/src/surf.ocl.cpp
318 +index b12ebd3..3d9845d 100644
319 +--- opencv_contrib-master/modules/xfeatures2d/src/surf.ocl.cpp
320 ++++ opencv_contrib-master/modules/xfeatures2d/src/surf.ocl.cpp
321 +@@ -43,6 +43,9 @@
322 + //
323 + //M*/
324 + #include "precomp.hpp"
325 ++
326 ++#ifdef HAVE_OPENCL
327 ++
328 + #include "surf.hpp"
329 +
330 + #include <cstdio>
331 +@@ -461,3 +464,4 @@ bool SURF_OCL::calcOrientation(UMat &keypoints)
332 + }
333 + }
334 +
335 ++#endif // HAVE_OPENCL
336
337 diff --git a/media-libs/opencv/files/opencv-3.1.0-invalid-string-usage.patch b/media-libs/opencv/files/opencv-3.1.0-invalid-string-usage.patch
338 new file mode 100644
339 index 0000000..c9f85a7
340 --- /dev/null
341 +++ b/media-libs/opencv/files/opencv-3.1.0-invalid-string-usage.patch
342 @@ -0,0 +1,75 @@
343 +From 9862a8bac536981c1c1a74710741fb40db4beac7 Mon Sep 17 00:00:00 2001
344 +From: Alexander Alekhin <alexander.alekhin@××××××.com>
345 +Date: Wed, 23 Sep 2015 12:44:26 +0300
346 +Subject: [PATCH] fix invalid String usage
347 +
348 +---
349 + modules/tracking/src/tldDetector.cpp | 6 +++---
350 + modules/ximgproc/samples/live_demo.cpp | 12 ++++++------
351 + 2 files changed, 9 insertions(+), 9 deletions(-)
352 +
353 +diff --git opencv_contrib-master/modules/tracking/src/tldDetector.cpp opencv_contrib-master/modules/tracking/src/tldDetector.cpp
354 +index cbb783e..0916092 100644
355 +--- opencv_contrib-master/modules/tracking/src/tldDetector.cpp
356 ++++ opencv_contrib-master/modules/tracking/src/tldDetector.cpp
357 +@@ -122,7 +122,7 @@ namespace cv
358 + ocl::Kernel k;
359 + ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc;
360 + String error;
361 +- ocl::Program prog(src, NULL, error);
362 ++ ocl::Program prog(src, String(), error);
363 + k.create("NCC", prog);
364 + if (k.empty())
365 + printf("Kernel create failed!!!\n");
366 +@@ -198,7 +198,7 @@ namespace cv
367 + ocl::Kernel k;
368 + ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc;
369 + String error;
370 +- ocl::Program prog(src, NULL, error);
371 ++ ocl::Program prog(src, String(), error);
372 + k.create("batchNCC", prog);
373 + if (k.empty())
374 + printf("Kernel create failed!!!\n");
375 +@@ -355,7 +355,7 @@ namespace cv
376 + ocl::Kernel k;
377 + ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc;
378 + String error;
379 +- ocl::Program prog(src, NULL, error);
380 ++ ocl::Program prog(src, String(), error);
381 + k.create("NCC", prog);
382 + if (k.empty())
383 + printf("Kernel create failed!!!\n");
384 +diff --git opencv_contrib-master/modules/ximgproc/samples/live_demo.cpp opencv_contrib-master/modules/ximgproc/samples/live_demo.cpp
385 +index dd5dc1b..8e16de3 100644
386 +--- opencv_contrib-master/modules/ximgproc/samples/live_demo.cpp
387 ++++ opencv_contrib-master/modules/ximgproc/samples/live_demo.cpp
388 +@@ -189,7 +189,7 @@ int main()
389 +
390 + //Thread trackbar
391 + cv::setNumThreads(g_numberOfCPUs); //speedup filtering
392 +- createTrackbar("Threads", NULL, &g_numberOfCPUs, cv::getNumberOfCPUs(), changeNumberOfCpuCallback);
393 ++ createTrackbar("Threads", String(), &g_numberOfCPUs, cv::getNumberOfCPUs(), changeNumberOfCpuCallback);
394 +
395 + //Buttons to choose different modes
396 + createButton("Mode Details Enhancement", changeModeCallback, (void*)filterDetailEnhancement, QT_RADIOBOX, true);
397 +@@ -199,15 +199,15 @@ int main()
398 +
399 + //sliders for Details Enhancement mode
400 + g_filterOp = filterDetailEnhancement; //set Details Enhancement as default filter
401 +- createTrackbar("Detail contrast", NULL, &g_contrastBase, 200);
402 +- createTrackbar("Detail level" , NULL, &g_detailsLevel, 200);
403 ++ createTrackbar("Detail contrast", String(), &g_contrastBase, 200);
404 ++ createTrackbar("Detail level" , String(), &g_detailsLevel, 200);
405 +
406 + //sliders for Stylizing mode
407 +- createTrackbar("Style gamma", NULL, &g_edgesGamma, 300);
408 ++ createTrackbar("Style gamma", String(), &g_edgesGamma, 300);
409 +
410 + //sliders for every mode
411 +- createTrackbar("Sigma Spatial", NULL, &g_sigmaSpatial, 200);
412 +- createTrackbar("Sigma Color" , NULL, &g_sigmaColor, 200);
413 ++ createTrackbar("Sigma Spatial", String(), &g_sigmaSpatial, 200);
414 ++ createTrackbar("Sigma Color" , String(), &g_sigmaColor, 200);
415 +
416 + Mat rawFrame, outputFrame;
417 + Mat srcFrame, processedFrame;
418
419 diff --git a/media-libs/opencv/opencv-3.1.0-r1.ebuild b/media-libs/opencv/opencv-3.1.0-r1.ebuild
420 new file mode 100644
421 index 0000000..bbbcde9
422 --- /dev/null
423 +++ b/media-libs/opencv/opencv-3.1.0-r1.ebuild
424 @@ -0,0 +1,252 @@
425 +# Copyright 1999-2016 Gentoo Foundation
426 +# Distributed under the terms of the GNU General Public License v2
427 +# $Id$
428 +
429 +EAPI=5
430 +PYTHON_COMPAT=( python{2_7,3_2,3_3,3_4,3_5} )
431 +
432 +inherit toolchain-funcs cmake-utils python-single-r1 java-pkg-opt-2 java-ant-2
433 +
434 +DESCRIPTION="A collection of algorithms and sample code for various computer vision problems"
435 +HOMEPAGE="http://opencv.org"
436 +
437 +SRC_URI="
438 + mirror://sourceforge/opencvlibrary/opencv-unix/${PV}/${P}.zip
439 + https://github.com/Itseez/${PN}/archive/${PV}.zip -> ${P}.zip
440 + contrib? ( https://github.com/Itseez/${PN}_contrib/archive/${PV}.zip -> ${PN}_contrib.zip )"
441 +
442 +LICENSE="BSD"
443 +SLOT="0/3.1" # subslot = libopencv* soname version
444 +KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux"
445 +IUSE="contrib cuda doc +eigen examples ffmpeg gdal gphoto2 gstreamer gtk ieee1394 ipp jpeg jpeg2k libav opencl openexr opengl openmp pch png +python qt4 qt5 testprograms threads tiff vaapi v4l vtk webp xine"
446 +REQUIRED_USE="
447 + python? ( ${PYTHON_REQUIRED_USE} )
448 + ?? ( qt4 qt5 )
449 +"
450 +
451 +# The following logic is intrinsic in the build system, but we do not enforce
452 +# it on the useflags since this just blocks emerging pointlessly:
453 +# gtk? ( !qt4 )
454 +# opengl? ( || ( gtk qt4 ) )
455 +# openmp? ( !threads )
456 +
457 +RDEPEND="
458 + app-arch/bzip2
459 + sys-libs/zlib
460 + cuda? ( >=dev-util/nvidia-cuda-toolkit-5.5 )
461 + ffmpeg? (
462 + libav? ( media-video/libav:0= )
463 + !libav? ( media-video/ffmpeg:0= )
464 + )
465 + gdal? ( sci-libs/gdal )
466 + gphoto2? ( media-libs/libgphoto2 )
467 + gstreamer? (
468 + media-libs/gstreamer:1.0
469 + media-libs/gst-plugins-base:1.0
470 + )
471 + gtk? (
472 + dev-libs/glib:2
473 + x11-libs/gtk+:2
474 + opengl? ( x11-libs/gtkglext )
475 + )
476 + java? ( >=virtual/jre-1.6:* )
477 + jpeg? ( virtual/jpeg:0 )
478 + jpeg2k? ( media-libs/jasper )
479 + ieee1394? (
480 + media-libs/libdc1394
481 + sys-libs/libraw1394
482 + )
483 + ipp? ( sci-libs/ipp )
484 + opencl? ( virtual/opencl )
485 + openexr? ( media-libs/openexr )
486 + opengl? ( virtual/opengl virtual/glu )
487 + png? ( media-libs/libpng:0= )
488 + python? ( ${PYTHON_DEPS} dev-python/numpy[${PYTHON_USEDEP}] )
489 + qt4? (
490 + dev-qt/qtgui:4
491 + dev-qt/qttest:4
492 + opengl? ( dev-qt/qtopengl:4 )
493 + )
494 + qt5? (
495 + dev-qt/qtgui:5
496 + dev-qt/qttest:5
497 + dev-qt/qtconcurrent:5
498 + opengl? ( dev-qt/qtopengl:5 )
499 + )
500 + threads? ( dev-cpp/tbb )
501 + tiff? ( media-libs/tiff:0 )
502 + v4l? ( >=media-libs/libv4l-0.8.3 )
503 + vtk? ( sci-libs/vtk[rendering] )
504 + webp? ( media-libs/libwebp )
505 + xine? ( media-libs/xine-lib )
506 +"
507 +DEPEND="${RDEPEND}
508 + virtual/pkgconfig
509 + eigen? ( dev-cpp/eigen:3 )
510 + java? ( >=virtual/jdk-1.6 )
511 +"
512 +
513 +pkg_setup() {
514 + use python && python-single-r1_pkg_setup
515 + java-pkg-opt-2_pkg_setup
516 +}
517 +
518 +src_prepare() {
519 +
520 + epatch "${FILESDIR}/${PN}-3.0.0-gles.patch" \
521 + "${FILESDIR}/${PN}-3.1.0-cmake-no-opengl.patch"
522 +
523 + # remove bundled stuff
524 + rm -rf 3rdparty
525 + sed -i \
526 + -e '/add_subdirectory(.*3rdparty.*)/ d' \
527 + CMakeLists.txt cmake/*cmake || die
528 +
529 + if use contrib; then
530 +
531 + cd "${WORKDIR}"
532 + epatch "${FILESDIR}/${PN}-3.1.0-fix-hal-headers.patch" \
533 + "${FILESDIR}/${PN}-3.1.0-fix-ocl-declaration.patch" \
534 + "${FILESDIR}/${PN}-3.1.0-invalid-string-usage.patch"
535 + fi
536 +
537 + java-pkg-opt-2_src_prepare
538 +}
539 +
540 +src_configure() {
541 + if use openmp; then
542 + tc-has-openmp || die "Please switch to an openmp compatible compiler"
543 + fi
544 +
545 + JAVA_ANT_ENCODING="iso-8859-1"
546 + # set encoding so even this cmake build will pick it up.
547 + export ANT_OPTS+=" -Dfile.encoding=iso-8859-1"
548 + java-ant-2_src_configure
549 +
550 + # please dont sort here, order is the same as in CMakeLists.txt
551 + local mycmakeargs=(
552 + # the optinal dependency libraries
553 + $(cmake-utils_use_with ieee1394 1394)
554 + -DWITH_AVFOUNDATION=OFF # IOS
555 + -DWITH_CARBON=OFF # APPLE
556 + $(cmake-utils_use_with eigen)
557 + $(cmake-utils_use_with ffmpeg)
558 + -DWITH_VFW=OFF # video windows support
559 + $(cmake-utils_use_with gstreamer)
560 + -DWITH_GSTREAMER_0_10=OFF
561 + $(cmake-utils_use_with gtk)
562 + -DWITH_GTK_2_X=OFF
563 + $(cmake-utils_use_with ipp)
564 + $(cmake-utils_use_with java)
565 + $(cmake-utils_use_with jpeg2k JASPER)
566 + $(cmake-utils_use_with jpeg)
567 + $(cmake-utils_use_with webp)
568 + $(cmake-utils_use_with opencl)
569 + $(cmake-utils_use_with gphoto2)
570 + $(cmake-utils_use_with openexr)
571 + $(cmake-utils_use_with opengl)
572 + $(cmake-utils_use_with openmp)
573 + -DWITH_OPENNI=OFF #not packaged
574 + -DWITH_OPENNI2=OFF #not packaged
575 + $(cmake-utils_use_with png)
576 + $(cmake-utils_use_build python opencv_python)
577 + -DWITH_PVAPI=OFF # not packaged
578 + -DWITH_GIGEAPI=OFF
579 + -DWITH_QUICKTIME=OFF
580 + -DWITH_WIN32UI=OFF
581 + $(cmake-utils_use_with threads TBB)
582 + -DWITH_CSTRIPES=OFF
583 + -DWITH_PTHREADS_PF=ON
584 + $(cmake-utils_use_with tiff)
585 + -DWITH_UNICAP=OFF # not packaged
586 + $(cmake-utils_use_with v4l V4L)
587 + $(cmake-utils_use_with vtk VTK)
588 + -DWITH_LIBV4L=ON
589 + -DWITH_DSHOW=ON # direct show supp
590 + -DWITH_MSMF=OFF
591 + -DWITH_VIDEOINPUT=OFF # windows only
592 + -DWITH_XIMEA=OFF # windows only
593 + $(cmake-utils_use_with xine)
594 + -DWITH_CLP=OFF
595 + $(cmake-utils_use_with opencl)
596 + -DWITH_OPENCL_SVM=OFF
597 + $(cmake-utils_use_with opencl OPENCLAMDFFT)
598 + $(cmake-utils_use_with opencl OPENCLAMDBLAS)
599 + -DWITH_DIRECTX=OFF
600 + -DWITH_INTELPERC=OFF
601 + -DWITH_IPP_A=OFF
602 + -DWITH_MATLAB=ON #default
603 + $(cmake-utils_use_with vaapi VA)
604 + $(cmake-utils_use_with vaapi VA_INTEL)
605 + $(cmake-utils_use_with gdal gdal)
606 + #
607 + # OpenCV build components
608 + -DBUILD_SHARED_LIBS=ON
609 + -DBUILD_ANDROID_EXAMPLES=OFF
610 + $(cmake-utils_use_build doc DOCS)
611 + $(cmake-utils_use_build examples)
612 + $(cmake-utils_use_build java opencv_java) #for -java bug #555650
613 + -DBUILD_PERF_TESTS=OFF
614 + $(cmake-utils_use_build testprograms TESTS)
615 + # install examples, tests etc
616 + $(cmake-utils_use examples INSTALL_C_EXAMPLES)
617 + $(cmake-utils_use testprograms INSTALL_TESTS)
618 + # build options
619 + $(cmake-utils_use_enable pch PRECOMPILED_HEADERS)
620 + -DOPENCV_EXTRA_FLAGS_RELEASE="" # black magic
621 + )
622 +
623 + if use qt4; then
624 + mycmakeargs+=( "-DWITH_QT=4" )
625 + elif use qt5; then
626 + mycmakeargs+=( "-DWITH_QT=5" )
627 + else
628 + mycmakeargs+=( "-DWITH_QT=OFF" )
629 + fi
630 +
631 + if use contrib; then
632 + mycmakeargs+=( "-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules" )
633 + fi
634 +
635 + if use cuda; then
636 + mycmakeargs+=( "-DWITH_CUDA=ON" )
637 + mycmakeargs+=( "-DWITH_CUBLAS=ON" )
638 + mycmakeargs+=( "-DWITH_CUFFT=ON" )
639 + mycmakeargs+=( "-DWITH_NVCUVID=ON" ) #Nvidia video decoding library supp
640 + else
641 + mycmakeargs+=( "-DWITH_CUDA=OFF" )
642 + mycmakeargs+=( "-DWITH_CUBLAS=OFF" )
643 + mycmakeargs+=( "-DWITH_CUFFT=OFF" )
644 + mycmakeargs+=( "-DWITH_NVCUVID=OFF" )
645 + fi
646 +
647 + if use examples && use python; then
648 + mycmakeargs+=( "-DINSTALL_PYTHON_EXAMPLES=ON" )
649 + else
650 + mycmakeargs+=( "-DINSTALL_PYTHON_EXAMPLES=OFF" )
651 + fi
652 +
653 + # things we want to be hard off or not yet figured out
654 + mycmakeargs+=(
655 + "-DOPENCV_BUILD_3RDPARTY_LIBS=OFF"
656 + "-DBUILD_LATEX_DOCS=OFF"
657 + "-DBUILD_PACKAGE=OFF"
658 + "-DENABLE_PROFILING=OFF"
659 + )
660 +
661 + # things we want to be hard enabled not worth useflag
662 + mycmakeargs+=(
663 + "-DCMAKE_SKIP_RPATH=ON"
664 + "-DOPENCV_DOC_INSTALL_PATH=${EPREFIX}/usr/share/doc/${PF}"
665 + )
666 +
667 + # hardcode cuda paths
668 + mycmakeargs+=(
669 + "-DCUDA_NPP_LIBRARY_ROOT_DIR=/opt/cuda"
670 + )
671 +
672 + # workaround for bug 413429
673 + tc-export CC CXX
674 +
675 + cmake-utils_src_configure
676 +}