Gentoo Archives: gentoo-commits

From: Pacho Ramos <pacho@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/opencv/
Date: Wed, 25 Dec 2019 16:57:39
Message-Id: 1577293035.2dbf3b3c61635735ec32d0f47d45003968a277e5.pacho@gentoo
1 commit: 2dbf3b3c61635735ec32d0f47d45003968a277e5
2 Author: Pacho Ramos <pacho <AT> gentoo <DOT> org>
3 AuthorDate: Wed Dec 25 16:20:16 2019 +0000
4 Commit: Pacho Ramos <pacho <AT> gentoo <DOT> org>
5 CommitDate: Wed Dec 25 16:57:15 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2dbf3b3c
7
8 media-libs/opencv: Needs python_optimize, add python 3.8 support
9
10 Also needs to support numpy-python2 until reverse deps are handled
11
12 Bug: https://bugs.gentoo.org/703760
13 Package-Manager: Portage-2.3.82, Repoman-2.3.20
14 Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>
15
16 media-libs/opencv/opencv-4.1.2-r3.ebuild | 502 +++++++++++++++++++++++++++++++
17 1 file changed, 502 insertions(+)
18
19 diff --git a/media-libs/opencv/opencv-4.1.2-r3.ebuild b/media-libs/opencv/opencv-4.1.2-r3.ebuild
20 new file mode 100644
21 index 00000000000..67f9c2497bf
22 --- /dev/null
23 +++ b/media-libs/opencv/opencv-4.1.2-r3.ebuild
24 @@ -0,0 +1,502 @@
25 +# Copyright 1999-2019 Gentoo Authors
26 +# Distributed under the terms of the GNU General Public License v2
27 +
28 +EAPI=7
29 +
30 +PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
31 +
32 +inherit java-pkg-opt-2 java-ant-2 python-r1 toolchain-funcs cmake-multilib
33 +
34 +DESCRIPTION="A collection of algorithms and sample code for various computer vision problems"
35 +HOMEPAGE="https://opencv.org"
36 +TINY_DNN_PV="1.0.0a3"
37 +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
38 + dnnsamples? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-res10_300x300-caffeemodel.tar.gz )
39 + contrib? (
40 + https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz
41 + contribdnn? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-face_landmark_model.tar.gz )
42 + contribxfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz )
43 + )"
44 +
45 +LICENSE="BSD"
46 +SLOT="0/4.1.2" # subslot = libopencv* soname version
47 +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux"
48 +IUSE="contrib contribcvv contribdnn contribhdf contribsfm contribxfeatures2d cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_ssse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_popcnt cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_x86_fma3 cuda debug dnnsamples -download +eigen examples +features2d ffmpeg gdal gflags glog gphoto2 gstreamer gtk ieee1394 jpeg jpeg2k lapack libav opencl openexr opengl openmp opencvapps pch png +python qt5 tesseract testprograms threads tiff vaapi v4l vtk webp xine"
49 +# OpenGL needs gtk or Qt installed to activate, otherwise build system
50 +# will silently disable it Wwithout the user knowing, which defeats the
51 +# purpose of the opengl use flag.
52 +REQUIRED_USE="
53 + cuda? ( tesseract? ( opencl ) )
54 + dnnsamples? ( examples )
55 + gflags? ( contrib )
56 + glog? ( contrib )
57 + contribcvv? ( contrib qt5 )
58 + contribdnn? ( contrib )
59 + contribhdf? ( contrib )
60 + contribsfm? ( contrib eigen gflags glog )
61 + contribxfeatures2d? ( contrib download )
62 + java? ( python )
63 + opengl? ( || ( gtk qt5 ) )
64 + python? ( ${PYTHON_REQUIRED_USE} )
65 + tesseract? ( contrib )"
66 +
67 +# The following logic is intrinsic in the build system, but we do not enforce
68 +# it on the useflags since this just blocks emerging pointlessly:
69 +# gtk? ( !qt5 )
70 +# openmp? ( !threads )
71 +
72 +RDEPEND="
73 + app-arch/bzip2[${MULTILIB_USEDEP}]
74 + dev-libs/protobuf:=[${MULTILIB_USEDEP}]
75 + sys-libs/zlib[${MULTILIB_USEDEP}]
76 + cuda? ( dev-util/nvidia-cuda-toolkit:0= )
77 + contribhdf? ( sci-libs/hdf5:= )
78 + ffmpeg? (
79 + libav? ( media-video/libav:0=[${MULTILIB_USEDEP}] )
80 + !libav? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] )
81 + )
82 + gdal? ( sci-libs/gdal:= )
83 + gflags? ( dev-cpp/gflags[${MULTILIB_USEDEP}] )
84 + glog? ( dev-cpp/glog[${MULTILIB_USEDEP}] )
85 + gphoto2? ( media-libs/libgphoto2[${MULTILIB_USEDEP}] )
86 + gstreamer? (
87 + media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
88 + media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}]
89 + )
90 + gtk? (
91 + dev-libs/glib:2[${MULTILIB_USEDEP}]
92 + x11-libs/gtk+:2[${MULTILIB_USEDEP}]
93 + opengl? ( x11-libs/gtkglext[${MULTILIB_USEDEP}] )
94 + )
95 + ieee1394? (
96 + media-libs/libdc1394[${MULTILIB_USEDEP}]
97 + sys-libs/libraw1394[${MULTILIB_USEDEP}]
98 + )
99 + java? ( >=virtual/jre-1.6:* )
100 + jpeg? ( virtual/jpeg:0[${MULTILIB_USEDEP}] )
101 + lapack? ( virtual/lapack )
102 + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
103 + openexr? ( media-libs/openexr[${MULTILIB_USEDEP}] )
104 + opengl? (
105 + virtual/opengl[${MULTILIB_USEDEP}]
106 + virtual/glu[${MULTILIB_USEDEP}]
107 + )
108 + png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] )
109 + python? (
110 + $(python_gen_cond_dep 'dev-python/numpy-python2:0[${PYTHON_USEDEP}]' 'python2*')
111 + $(python_gen_cond_dep 'dev-python/numpy:0[${PYTHON_USEDEP}]' 'python3*')
112 + )
113 + qt5? (
114 + dev-qt/qtgui:5
115 + dev-qt/qtwidgets:5
116 + dev-qt/qttest:5
117 + dev-qt/qtconcurrent:5
118 + opengl? ( dev-qt/qtopengl:5 )
119 + )
120 + tesseract? ( app-text/tesseract[opencl=] )
121 + threads? ( dev-cpp/tbb[${MULTILIB_USEDEP}] )
122 + tiff? ( media-libs/tiff:0[${MULTILIB_USEDEP}] )
123 + v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] )
124 + vtk? ( sci-libs/vtk[rendering] )
125 + webp? ( media-libs/libwebp[${MULTILIB_USEDEP}] )
126 + xine? ( media-libs/xine-lib )"
127 +DEPEND="${RDEPEND}
128 + virtual/pkgconfig[${MULTILIB_USEDEP}]
129 + eigen? ( dev-cpp/eigen:3 )
130 + java? ( >=virtual/jdk-1.6 )
131 + vaapi? ( x11-libs/libva )"
132 +
133 +MULTILIB_WRAPPED_HEADERS=(
134 + /usr/include/opencv2/cvconfig.h
135 + /usr/include/opencv2/opencv_modules.hpp
136 + # [contrib_cvv]
137 + /usr/include/opencv2/cvv.hpp
138 + /usr/include/opencv2/cvv/call_meta_data.hpp
139 + /usr/include/opencv2/cvv/cvv.hpp
140 + /usr/include/opencv2/cvv/debug_mode.hpp
141 + /usr/include/opencv2/cvv/dmatch.hpp
142 + /usr/include/opencv2/cvv/filter.hpp
143 + /usr/include/opencv2/cvv/final_show.hpp
144 + /usr/include/opencv2/cvv/show_image.hpp
145 + # [contrib_hdf]
146 + /usr/include/opencv2/hdf.hpp
147 + /usr/include/opencv2/hdf/hdf5.hpp
148 + # [vtk]
149 + /usr/include/opencv2/viz.hpp
150 + /usr/include/opencv2/viz/types.hpp
151 + /usr/include/opencv2/viz/viz3d.hpp
152 + /usr/include/opencv2/viz/vizcore.hpp
153 + /usr/include/opencv2/viz/widget_accessor.hpp
154 + /usr/include/opencv2/viz/widgets.hpp
155 + # [cudev]
156 + /usr/include/opencv2/cudaarithm.hpp
157 + /usr/include/opencv2/cudabgsegm.hpp
158 + /usr/include/opencv2/cudacodec.hpp
159 + /usr/include/opencv2/cudafeatures2d.hpp
160 + /usr/include/opencv2/cudafilters.hpp
161 + /usr/include/opencv2/cudaimgproc.hpp
162 + /usr/include/opencv2/cudalegacy.hpp
163 + /usr/include/opencv2/cudalegacy/NCVBroxOpticalFlow.hpp
164 + /usr/include/opencv2/cudalegacy/NCVHaarObjectDetection.hpp
165 + /usr/include/opencv2/cudalegacy/NCV.hpp
166 + /usr/include/opencv2/cudalegacy/NCVPyramid.hpp
167 + /usr/include/opencv2/cudalegacy/NPP_staging.hpp
168 + /usr/include/opencv2/cudaobjdetect.hpp
169 + /usr/include/opencv2/cudaoptflow.hpp
170 + /usr/include/opencv2/cudastereo.hpp
171 + /usr/include/opencv2/cudawarping.hpp
172 + /usr/include/opencv2/cudev/block/block.hpp
173 + /usr/include/opencv2/cudev/block/detail/reduce.hpp
174 + /usr/include/opencv2/cudev/block/detail/reduce_key_val.hpp
175 + /usr/include/opencv2/cudev/block/dynamic_smem.hpp
176 + /usr/include/opencv2/cudev/block/reduce.hpp
177 + /usr/include/opencv2/cudev/block/scan.hpp
178 + /usr/include/opencv2/cudev/block/vec_distance.hpp
179 + /usr/include/opencv2/cudev/common.hpp
180 + /usr/include/opencv2/cudev/expr/binary_func.hpp
181 + /usr/include/opencv2/cudev/expr/binary_op.hpp
182 + /usr/include/opencv2/cudev/expr/color.hpp
183 + /usr/include/opencv2/cudev/expr/deriv.hpp
184 + /usr/include/opencv2/cudev/expr/expr.hpp
185 + /usr/include/opencv2/cudev/expr/per_element_func.hpp
186 + /usr/include/opencv2/cudev/expr/reduction.hpp
187 + /usr/include/opencv2/cudev/expr/unary_func.hpp
188 + /usr/include/opencv2/cudev/expr/unary_op.hpp
189 + /usr/include/opencv2/cudev/expr/warping.hpp
190 + /usr/include/opencv2/cudev/functional/color_cvt.hpp
191 + /usr/include/opencv2/cudev/functional/detail/color_cvt.hpp
192 + /usr/include/opencv2/cudev/functional/functional.hpp
193 + /usr/include/opencv2/cudev/functional/tuple_adapter.hpp
194 + /usr/include/opencv2/cudev/grid/copy.hpp
195 + /usr/include/opencv2/cudev/grid/detail/copy.hpp
196 + /usr/include/opencv2/cudev/grid/detail/histogram.hpp
197 + /usr/include/opencv2/cudev/grid/detail/integral.hpp
198 + /usr/include/opencv2/cudev/grid/detail/minmaxloc.hpp
199 + /usr/include/opencv2/cudev/grid/detail/pyr_down.hpp
200 + /usr/include/opencv2/cudev/grid/detail/pyr_up.hpp
201 + /usr/include/opencv2/cudev/grid/detail/reduce.hpp
202 + /usr/include/opencv2/cudev/grid/detail/reduce_to_column.hpp
203 + /usr/include/opencv2/cudev/grid/detail/reduce_to_row.hpp
204 + /usr/include/opencv2/cudev/grid/detail/split_merge.hpp
205 + /usr/include/opencv2/cudev/grid/detail/transform.hpp
206 + /usr/include/opencv2/cudev/grid/detail/transpose.hpp
207 + /usr/include/opencv2/cudev/grid/histogram.hpp
208 + /usr/include/opencv2/cudev/grid/integral.hpp
209 + /usr/include/opencv2/cudev/grid/pyramids.hpp
210 + /usr/include/opencv2/cudev/grid/reduce.hpp
211 + /usr/include/opencv2/cudev/grid/reduce_to_vec.hpp
212 + /usr/include/opencv2/cudev/grid/split_merge.hpp
213 + /usr/include/opencv2/cudev/grid/transform.hpp
214 + /usr/include/opencv2/cudev/grid/transpose.hpp
215 + /usr/include/opencv2/cudev.hpp
216 + /usr/include/opencv2/cudev/ptr2d/constant.hpp
217 + /usr/include/opencv2/cudev/ptr2d/deriv.hpp
218 + /usr/include/opencv2/cudev/ptr2d/detail/gpumat.hpp
219 + /usr/include/opencv2/cudev/ptr2d/extrapolation.hpp
220 + /usr/include/opencv2/cudev/ptr2d/glob.hpp
221 + /usr/include/opencv2/cudev/ptr2d/gpumat.hpp
222 + /usr/include/opencv2/cudev/ptr2d/interpolation.hpp
223 + /usr/include/opencv2/cudev/ptr2d/lut.hpp
224 + /usr/include/opencv2/cudev/ptr2d/mask.hpp
225 + /usr/include/opencv2/cudev/ptr2d/remap.hpp
226 + /usr/include/opencv2/cudev/ptr2d/resize.hpp
227 + /usr/include/opencv2/cudev/ptr2d/texture.hpp
228 + /usr/include/opencv2/cudev/ptr2d/traits.hpp
229 + /usr/include/opencv2/cudev/ptr2d/transform.hpp
230 + /usr/include/opencv2/cudev/ptr2d/warping.hpp
231 + /usr/include/opencv2/cudev/ptr2d/zip.hpp
232 + /usr/include/opencv2/cudev/util/atomic.hpp
233 + /usr/include/opencv2/cudev/util/detail/tuple.hpp
234 + /usr/include/opencv2/cudev/util/detail/type_traits.hpp
235 + /usr/include/opencv2/cudev/util/limits.hpp
236 + /usr/include/opencv2/cudev/util/saturate_cast.hpp
237 + /usr/include/opencv2/cudev/util/simd_functions.hpp
238 + /usr/include/opencv2/cudev/util/tuple.hpp
239 + /usr/include/opencv2/cudev/util/type_traits.hpp
240 + /usr/include/opencv2/cudev/util/vec_math.hpp
241 + /usr/include/opencv2/cudev/util/vec_traits.hpp
242 + /usr/include/opencv2/cudev/warp/detail/reduce.hpp
243 + /usr/include/opencv2/cudev/warp/detail/reduce_key_val.hpp
244 + /usr/include/opencv2/cudev/warp/reduce.hpp
245 + /usr/include/opencv2/cudev/warp/scan.hpp
246 + /usr/include/opencv2/cudev/warp/shuffle.hpp
247 + /usr/include/opencv2/cudev/warp/warp.hpp
248 + # [opencv4]
249 + /usr/include/opencv4/opencv2/core/cv_cpu_dispatch.h
250 + /usr/include/opencv4/opencv2/core/cvdef.h
251 + /usr/include/opencv4/opencv2/dnn.hpp
252 + /usr/include/opencv4/opencv2/core/cuda/transform.hpp
253 + /usr/include/opencv4/opencv2/core/opencl/runtime/opencl_core.hpp
254 + /usr/include/opencv4/opencv2/cvconfig.h
255 + /usr/include/opencv4/opencv2/core/utils/allocator_stats.impl.hpp
256 + /usr/include/opencv4/opencv2/video/tracking.hpp
257 + /usr/include/opencv4/opencv2/objdetect.hpp
258 +)
259 +
260 +PATCHES=(
261 + "${FILESDIR}/${PN}-3.0.0-gles.patch"
262 + "${FILESDIR}/${PN}-3.4.0-disable-download.patch"
263 + "${FILESDIR}/${PN}-3.4.1-cuda-add-relaxed-constexpr.patch"
264 + "${FILESDIR}/${P}-pkg-config-file.patch"
265 + "${FILESDIR}/${P}-opencl-license.patch"
266 +)
267 +
268 +pkg_pretend() {
269 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
270 +}
271 +
272 +pkg_setup() {
273 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
274 + java-pkg-opt-2_pkg_setup
275 +}
276 +
277 +src_prepare() {
278 + cmake-utils_src_prepare
279 +
280 + # remove bundled stuff
281 + rm -rf 3rdparty || die "Removing 3rd party components failed"
282 + sed -e '/add_subdirectory(.*3rdparty.*)/ d' \
283 + -i CMakeLists.txt cmake/*cmake || die
284 +
285 + if use dnnsamples; then
286 + mv "${WORKDIR}/res10_300x300_ssd_iter_140000.caffemodel" "${WORKDIR}/${P}/samples/dnn/" || die
287 + fi
288 +
289 + if use contrib; then
290 + cd "${WORKDIR}/${PN}_contrib-${PV}" || die
291 + if use contribxfeatures2d; then
292 + mv "${WORKDIR}"/*.i "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die
293 + fi
294 + fi
295 +
296 + java-pkg-opt-2_src_prepare
297 +
298 + # this really belongs in src_prepare() too
299 + JAVA_ANT_ENCODING="iso-8859-1"
300 + # set encoding so even this cmake build will pick it up.
301 + export ANT_OPTS+=" -Dfile.encoding=iso-8859-1"
302 + java-ant-2_src_configure
303 +}
304 +
305 +multilib_src_configure() {
306 + # please dont sort here, order is the same as in CMakeLists.txt
307 + GLOBALCMAKEARGS=(
308 + # Optional 3rd party components
309 + # ===================================================
310 + -DENABLE_DOWNLOAD=$(usex download)
311 + -DWITH_QUIRC=OFF # Do not have dependencies
312 + -DWITH_1394=$(usex ieee1394)
313 + # -DWITH_AVFOUNDATION=OFF # IOS
314 + -DWITH_VTK=$(multilib_native_usex vtk)
315 + -DWITH_EIGEN=$(usex eigen)
316 + -DWITH_VFW=OFF # Video windows support
317 + -DWITH_FFMPEG=$(usex ffmpeg)
318 + -DWITH_GSTREAMER=$(usex gstreamer)
319 + -DWITH_GSTREAMER_0_10=OFF # Don't want this
320 + -DWITH_GTK=$(usex gtk)
321 + -DWITH_GTK_2_X=$(usex gtk)
322 + -DWITH_IPP=OFF
323 + -DWITH_JASPER=OFF
324 + -DWITH_JPEG=$(usex jpeg)
325 + -DWITH_WEBP=$(usex webp)
326 + -DWITH_OPENEXR=$(usex openexr)
327 + -DWITH_OPENGL=$(usex opengl)
328 + -DWITH_OPENVX=OFF
329 + -DWITH_OPENNI=OFF # Not packaged
330 + -DWITH_OPENNI2=OFF # Not packaged
331 + -DWITH_PNG=$(usex png)
332 + -DWITH_GDCM=OFF
333 + -DWITH_PVAPI=OFF
334 + -DWITH_GIGEAPI=OFF
335 + -DWITH_ARAVIS=OFF
336 + -DWITH_QT=$(multilib_native_usex qt5 5 OFF)
337 + -DWITH_WIN32UI=OFF # Windows only
338 + # -DWITH_QUICKTIME=OFF
339 + # -DWITH_QTKIT=OFF
340 + -DWITH_TBB=$(usex threads)
341 + -DWITH_OPENMP=$(usex openmp)
342 + -DWITH_CSTRIPES=OFF
343 + -DWITH_PTHREADS_PF=ON
344 + -DWITH_TIFF=$(usex tiff)
345 + -DWITH_UNICAP=OFF # Not packaged
346 + -DWITH_V4L=$(usex v4l)
347 + -DWITH_LIBV4L=$(usex v4l)
348 + #-DWITH_DSHOW=ON # direct show supp
349 + -DWITH_MSMF=OFF
350 + -DWITH_XIMEA=OFF # Windows only
351 + -DWITH_XINE=$(multilib_native_usex xine)
352 + -DWITH_CLP=OFF
353 + -DWITH_OPENCL=$(usex opencl)
354 + -DWITH_OPENCL_SVM=OFF
355 + -DWITH_OPENCLAMDFFT=$(usex opencl)
356 + -DWITH_OPENCLAMDBLAS=$(usex opencl)
357 + -DWITH_DIRECTX=OFF
358 + -DWITH_INTELPERC=OFF
359 + -DWITH_IPP_A=OFF
360 + -DWITH_MATLAB=OFF
361 + -DWITH_VA=$(usex vaapi)
362 + -DWITH_VA_INTEL=$(usex vaapi)
363 + -DWITH_GDAL=$(multilib_native_usex gdal)
364 + -DWITH_GPHOTO2=$(usex gphoto2)
365 + -DWITH_LAPACK=$(multilib_native_usex lapack)
366 + -DWITH_ITT=OFF # 3dparty libs itt_notify
367 + # ===================================================
368 + # CUDA build components: nvidia-cuda-toolkit takes care of GCC version
369 + # ===================================================
370 + -DWITH_CUDA=$(multilib_native_usex cuda)
371 + -DWITH_CUBLAS=$(multilib_native_usex cuda)
372 + -DWITH_CUFFT=$(multilib_native_usex cuda)
373 + -DWITH_NVCUVID=OFF
374 +# -DWITH_NVCUVID=$(usex cuda)
375 + -DCUDA_NPP_LIBRARY_ROOT_DIR=$(usex cuda "${EPREFIX}/opt/cuda" "")
376 + # ===================================================
377 + # OpenCV build components
378 + # ===================================================
379 + -DBUILD_SHARED_LIBS=ON
380 + -DBUILD_JAVA=$(multilib_native_usex java) # Ant needed, no compile flag
381 + -DBUILD_ANDROID_EXAMPLES=OFF
382 + -DBUILD_opencv_apps=$(usex opencvapps ON OFF)
383 + -DBUILD_DOCS=OFF # Doesn't install anyways.
384 + -DBUILD_EXAMPLES=$(multilib_native_usex examples)
385 + -DBUILD_PERF_TESTS=OFF
386 + -DBUILD_TESTS=$(multilib_native_usex testprograms)
387 + -DBUILD_WITH_DEBUG_INFO=$(usex debug)
388 + # -DBUILD_WITH_STATIC_CRT=OFF
389 + -DBUILD_WITH_DYNAMIC_IPP=OFF
390 + -DBUILD_FAT_JAVA_LIB=OFF
391 + # -DBUILD_ANDROID_SERVICE=OFF
392 + -DBUILD_CUDA_STUBS=$(multilib_native_usex cuda)
393 + -DOPENCV_EXTRA_MODULES_PATH=$(usex contrib "${WORKDIR}/opencv_contrib-${PV}/modules" "")
394 + # ===================================================
395 + # OpenCV installation options
396 + # ===================================================
397 + -DINSTALL_CREATE_DISTRIB=OFF
398 + -DINSTALL_C_EXAMPLES=$(multilib_native_usex examples)
399 + -DINSTALL_TESTS=$(multilib_native_usex testprograms)
400 + -DINSTALL_PYTHON_EXAMPLES=$(multilib_native_usex examples)
401 + # -DINSTALL_ANDROID_EXAMPLES=OFF
402 + -DINSTALL_TO_MANGLED_PATHS=OFF
403 + -DOPENCV_GENERATE_PKGCONFIG=ON
404 + # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX}
405 + # to set its destination libdir
406 + -DLIB_SUFFIX=
407 + # ===================================================
408 + # OpenCV build options
409 + # ===================================================
410 + -DENABLE_CCACHE=OFF
411 + -DENABLE_PRECOMPILED_HEADERS=$(usex pch)
412 + -DENABLE_SOLUTION_FOLDERS=OFF
413 + -DENABLE_PROFILING=OFF
414 + -DENABLE_COVERAGE=OFF
415 +
416 + -DHAVE_opencv_java=$(multilib_native_usex java YES NO)
417 + -DENABLE_NOISY_WARNINGS=OFF
418 + -DOPENCV_WARNINGS_ARE_ERRORS=OFF
419 + -DENABLE_IMPL_COLLECTION=OFF
420 + -DENABLE_INSTRUMENTATION=OFF
421 + -DGENERATE_ABI_DESCRIPTOR=OFF
422 + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF
423 + # ===================================================
424 + # things we want to be hard off or not yet figured out
425 + # ===================================================
426 + -DBUILD_PACKAGE=OFF
427 + # ===================================================
428 + # Not building protobuf but update files bug #631418
429 + # ===================================================
430 + -DBUILD_PROTOBUF=OFF
431 + -DPROTOBUF_UPDATE_FILES=ON
432 + # ===================================================
433 + # things we want to be hard enabled not worth useflag
434 + # ===================================================
435 + -DCMAKE_SKIP_RPATH=ON
436 + -DOPENCV_DOC_INSTALL_PATH=
437 + # ==================================================
438 + # cpu flags, should solve 633900
439 + #===================================================
440 + -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON
441 + -DCPU_BASELINE=$(printf "%s," "${cpu_flags[@]}")
442 + -DCPU_DISPATCH=
443 + -DBUILD_opencv_features2d=$(usex features2d ON OFF)
444 + )
445 +
446 + # ===================================================
447 + # OpenCV Contrib Modules
448 + # ===================================================
449 + if use contrib; then
450 + GLOBALCMAKEARGS+=(
451 + -DBUILD_opencv_dnn=$(usex contribdnn ON OFF)
452 + -DTINYDNN_ROOT="${WORKDIR}/tiny-dnn-${TINY_DNN_PV}"
453 + -DBUILD_opencv_dnns_easily_fooled=OFF
454 + -DBUILD_opencv_xfeatures2d=$(usex contribxfeatures2d ON OFF)
455 + -DBUILD_opencv_cvv=$(usex contribcvv ON OFF)
456 + -DBUILD_opencv_hdf=$(multilib_native_usex contribhdf ON OFF)
457 + -DBUILD_opencv_sfm=$(usex contribsfm ON OFF)
458 + )
459 +
460 + if multilib_is_native_abi; then
461 + GLOBALCMAKEARGS+=(
462 + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=$(usex !tesseract)
463 + )
464 + else
465 + GLOBALCMAKEARGS+=(
466 + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=ON
467 + )
468 + fi
469 + fi
470 +
471 + # workaround for bug 413429
472 + tc-export CC CXX
473 +
474 + local mycmakeargs=( ${GLOBALCMAKEARGS[@]}
475 + -DPYTHON_EXECUTABLE=OFF
476 + -DINSTALL_PYTHON_EXAMPLES=OFF
477 + -DBUILD_opencv_python2=OFF
478 + -DBUILD_opencv_python3=OFF
479 + )
480 +
481 + cmake-utils_src_configure
482 +
483 + # Copy face_land_model to ${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH}
484 + # TODO patch ocv_download to copy files into destination dirs
485 + if use contribdnn; then
486 + mkdir -p "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die
487 + cp "${WORKDIR}"/face_landmark_model.dat "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die
488 + fi
489 +
490 +}
491 +
492 +python_module_compile() {
493 + local BUILD_DIR=${orig_BUILD_DIR}
494 + local mycmakeargs=( ${GLOBALCMAKEARGS[@]} )
495 +
496 + # Set all python variables to load the correct Gentoo paths
497 + mycmakeargs+=(
498 + # python_setup alters PATH and sets this as wrapper
499 + # to the correct interpreter we are building for
500 + -DPYTHON_DEFAULT_EXECUTABLE=python
501 + -DINSTALL_PYTHON_EXAMPLES=$(usex examples)
502 + )
503 +
504 + # Regenerate cache file. Can't use rebuild_cache as it won't
505 + # have the Gentoo specific options.
506 + rm -rf CMakeCache.txt || die "rm failed"
507 + cmake-utils_src_configure
508 + cmake-utils_src_compile
509 + cmake-utils_src_install
510 +
511 + # Remove compiled binary so new version compiles
512 + # Avoid conflicts with new module builds as build system doesn't
513 + # really support it.
514 + rm -rf modules/python2 || die "rm failed"
515 +}
516 +
517 +multilib_src_install() {
518 + cmake-utils_src_install
519 +
520 + # Build and install the python modules for all targets
521 + if multilib_is_native_abi && use python; then
522 + local orig_BUILD_DIR=${BUILD_DIR}
523 + python_foreach_impl python_module_compile
524 + python_foreach_impl python_optimize
525 + fi
526 +}