Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/opencv/
Date: Mon, 22 Nov 2021 09:08:03
Message-Id: 1637572064.013100beb70eb50ecd989b44903b2db5036ce882.sam@gentoo
1 commit: 013100beb70eb50ecd989b44903b2db5036ce882
2 Author: Miezhiko <Miezhiko <AT> gmail <DOT> com>
3 AuthorDate: Tue Nov 9 10:12:06 2021 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Mon Nov 22 09:07:44 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=013100be
7
8 media-libs/opencv: add new version 4.5.4
9
10 Package-Manager: Portage-3.0.28, Repoman-3.0.3
11 Signed-off-by: Miezhiko <Miezhiko <AT> gmail.com>
12 Closes: https://github.com/gentoo/gentoo/pull/22875
13 Signed-off-by: Sam James <sam <AT> gentoo.org>
14
15 media-libs/opencv/Manifest | 2 +
16 media-libs/opencv/opencv-4.5.4.ebuild | 570 ++++++++++++++++++++++++++++++++++
17 2 files changed, 572 insertions(+)
18
19 diff --git a/media-libs/opencv/Manifest b/media-libs/opencv/Manifest
20 index d09b3e97e0c8..7778d4d286ab 100644
21 --- a/media-libs/opencv/Manifest
22 +++ b/media-libs/opencv/Manifest
23 @@ -7,4 +7,6 @@ DIST opencv-4.5.1.tar.gz 88245766 BLAKE2B 219403844b459fcce012b942920a7a8264fb85
24 DIST opencv-4.5.1_contrib.tar.gz 60602431 BLAKE2B 629e820e74147f442f8264c610228892e88c1e84575fb4efa612c8568df40a2e533f90ed2727ba7416e2ff08d9a655400b326841bf090fec79cd31f39334966e SHA512 1ebb9fec53b74039ffa2dc9f00899ab83af615f01156c0454ea7c53161256b6c9fd4548387fbfd197182c2d03db4de8c7170e2877b4648ce92531f821e81fdd7
25 DIST opencv-4.5.2.tar.gz 88925795 BLAKE2B 625d3e1d98d4438ebfa165e595fc661658ae1f218d3c50c0b8dfedf936019093c1e61ead86b19c643205f0d77e40c69ea15c3d95454129a23a2c4e17885b65f3 SHA512 07788ec49801bdab963a057871e81fc2b081149c75764810197766d987e54db0d6fd142d2397bbbacefcea6a8be100235ea886ee7e5d5c07ed1156e76249dfec
26 DIST opencv-4.5.2_contrib.tar.gz 60800680 BLAKE2B d96b3c440090d3ab26f99a3822d1d85581e370dc0fde7cf3a0ff89e79cd598942be7d9bc9f892510f2d66474ceb59c645483a94131ccbbe09f1cf4eeaaa44879 SHA512 72ce91dfefc1c3e12cc8e965d90392cfed6c236daafb512aafc14cdad83242bfa0fc1adea308cd07a5483e010633e2996c3b239b2ce12cea47e6e21c36ed398b
27 +DIST opencv-4.5.4.tar.gz 89724634 BLAKE2B 76ce5ab8182c87e5f9e18faf62f2ee0eb629e4997877c59aa0f6ac334c27d737cf5205f4b85f64cabfdd587a57096fa3241ae6e48cebbd963ec8ad3ebe07ad35 SHA512 39a7af95bc30d427c6df5e5d481469ab1ceea7878a93ae5c119991333e877a88d0a644e17dc6bd316e64b2840e48411a97f1b2397a8000719c5cec32751fa954
28 +DIST opencv-4.5.4_contrib.tar.gz 61054226 BLAKE2B c553bfc6fd1b5fd17f562b27248ddd4bd946089cd8cce346f152b47d4a8a22faa35ceb9bd501c31901189b884d782fbfec1dc041d69e1b8cc0ac0d5d079e610e SHA512 a48d4b5d764170814d9027fdf50f61bb4a24f0b5a547dded79d06b948f86443f14734efc7bbb708b3870781cafc6bc9e3092d35dac34a81da2bf1740d5f93ff9
29 DIST vgg_boostdesc-3.2.0.tar.gz 1867770 BLAKE2B 1fa5b58e73b6fa56ecf8d19af22298f729942ee1369082e173445d09d3de767bf844bad3d2b462efc1199c392f37c88ba49a9996ba8bfd84b4abeba7de94db63 SHA512 4a046aedd639c8eb4b295b0f499e756deb66210ca083f0124c75531e540663367cb58f6d175f66c4713324177036cd89a8869bdab2de8d1736dafc7f00ef9f44
30
31 diff --git a/media-libs/opencv/opencv-4.5.4.ebuild b/media-libs/opencv/opencv-4.5.4.ebuild
32 new file mode 100644
33 index 000000000000..c4bd53d72d71
34 --- /dev/null
35 +++ b/media-libs/opencv/opencv-4.5.4.ebuild
36 @@ -0,0 +1,570 @@
37 +# Copyright 1999-2021 Gentoo Authors
38 +# Distributed under the terms of the GNU General Public License v2
39 +
40 +EAPI=7
41 +
42 +PYTHON_COMPAT=( python3_{8..10} )
43 +CMAKE_ECLASS=cmake
44 +inherit java-pkg-opt-2 java-ant-2 cmake-multilib python-r1 toolchain-funcs
45 +
46 +DESCRIPTION="A collection of algorithms and sample code for various computer vision problems"
47 +HOMEPAGE="https://opencv.org"
48 +TINY_DNN_PV="1.0.0a3"
49 +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
50 + dnnsamples? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-res10_300x300-caffeemodel.tar.gz )
51 + download? ( https://github.com/rossbridger/opencv-extdep/archive/4.4.0.tar.gz -> ${PN}-4.4.0_extdep.tar.gz )
52 + contrib? (
53 + https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz
54 + contribdnn? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-face_landmark_model.tar.gz )
55 + contribxfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz )
56 + )"
57 +
58 +LICENSE="Apache-2.0"
59 +SLOT="0/${PV}" # subslot = libopencv* soname version
60 +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
61 +IUSE="contrib contribcvv contribdnn contribfreetype contribhdf contribovis contribsfm contribxfeatures2d cuda debug dnnsamples download +eigen examples +features2d ffmpeg gdal gflags glog gphoto2 gstreamer gtk3 ieee1394 jpeg jpeg2k lapack lto opencl openexr opengl openmp opencvapps png +python qt5 tesseract testprograms threads tiff vaapi v4l vtk webp xine"
62 +
63 +# The following lines are shamelessly stolen from ffmpeg-9999.ebuild with modifications
64 +ARM_CPU_FEATURES=(
65 + cpu_flags_arm_neon:NEON
66 + cpu_flags_arm_vfpv3:VFPV3
67 +)
68 +PPC_CPU_FEATURES=(
69 + cpu_flags_ppc_vsx:VSX
70 + cpu_flags_ppc_vsx3:VSX3
71 +)
72 +X86_CPU_FEATURES_RAW=(
73 + avx:AVX
74 + avx2:AVX2
75 + avx512f:AVX_512F
76 + f16c:FP16
77 + fma3:FMA3
78 + popcnt:POPCNT
79 + sse:SSE
80 + sse2:SSE2
81 + sse3:SSE3
82 + ssse3:SSSE3
83 + sse4_1:SSE4_1
84 + sse4_2:SSE4_2
85 +)
86 +X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
87 +CPU_FEATURES_MAP=(
88 + ${ARM_CPU_FEATURES[@]}
89 + ${PPC_CPU_FEATURES[@]}
90 + ${X86_CPU_FEATURES[@]}
91 +)
92 +IUSE="${IUSE} ${CPU_FEATURES_MAP[@]%:*}"
93 +
94 +# OpenGL needs gtk or Qt installed to activate, otherwise build system
95 +# will silently disable it Wwithout the user knowing, which defeats the
96 +# purpose of the opengl use flag.
97 +# cuda needs contrib, bug #701712
98 +REQUIRED_USE="
99 + cpu_flags_x86_avx2? ( cpu_flags_x86_f16c )
100 + cpu_flags_x86_f16c? ( cpu_flags_x86_avx )
101 + cuda? ( contrib
102 + tesseract? ( opencl ) )
103 + dnnsamples? ( examples )
104 + gflags? ( contrib )
105 + glog? ( contrib )
106 + contribcvv? ( contrib qt5 )
107 + contribdnn? ( contrib )
108 + contribfreetype? ( contrib )
109 + contribhdf? ( contrib )
110 + contribovis? ( contrib )
111 + contribsfm? ( contrib eigen gflags glog )
112 + contribxfeatures2d? ( contrib download )
113 + examples? ( contribdnn )
114 + java? ( python )
115 + opengl? ( qt5 )
116 + python? ( ${PYTHON_REQUIRED_USE} )
117 + tesseract? ( contrib )
118 + ?? ( gtk3 qt5 )"
119 +
120 +# The following logic is intrinsic in the build system, but we do not enforce
121 +# it on the useflags since this just blocks emerging pointlessly:
122 +# openmp? ( !threads )
123 +
124 +RDEPEND="
125 + app-arch/bzip2[${MULTILIB_USEDEP}]
126 + dev-libs/protobuf:=[${MULTILIB_USEDEP}]
127 + sys-libs/zlib[${MULTILIB_USEDEP}]
128 + cuda? ( dev-util/nvidia-cuda-toolkit:0= )
129 + contribhdf? ( sci-libs/hdf5:= )
130 + contribfreetype? (
131 + media-libs/freetype:2[${MULTILIB_USEDEP}]
132 + media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
133 + )
134 + contribovis? ( dev-games/ogre:0/1.12 )
135 + ffmpeg? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] )
136 + gdal? ( sci-libs/gdal:= )
137 + gflags? ( dev-cpp/gflags[${MULTILIB_USEDEP}] )
138 + glog? ( dev-cpp/glog[${MULTILIB_USEDEP}] )
139 + gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] )
140 + gstreamer? (
141 + media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
142 + media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}]
143 + )
144 + gtk3? (
145 + dev-libs/glib:2[${MULTILIB_USEDEP}]
146 + x11-libs/gtk+:3[${MULTILIB_USEDEP}]
147 + )
148 + ieee1394? (
149 + media-libs/libdc1394:=[${MULTILIB_USEDEP}]
150 + sys-libs/libraw1394[${MULTILIB_USEDEP}]
151 + )
152 + java? ( >=virtual/jre-1.8:* )
153 + jpeg? ( virtual/jpeg:0[${MULTILIB_USEDEP}] )
154 + jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
155 + lapack? (
156 + virtual/cblas
157 + virtual/lapack
158 + )
159 + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
160 + openexr? ( <media-libs/openexr-3.0.0:0=[${MULTILIB_USEDEP}] )
161 + opengl? (
162 + virtual/opengl[${MULTILIB_USEDEP}]
163 + virtual/glu[${MULTILIB_USEDEP}]
164 + )
165 + png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] )
166 + python? (
167 + ${PYTHON_DEPS}
168 + dev-python/numpy[${PYTHON_USEDEP}]
169 + )
170 + qt5? (
171 + dev-qt/qtgui:5=
172 + dev-qt/qtwidgets:5=
173 + dev-qt/qttest:5=
174 + dev-qt/qtconcurrent:5=
175 + opengl? ( dev-qt/qtopengl:5= )
176 + )
177 + tesseract? ( app-text/tesseract[opencl=,${MULTILIB_USEDEP}] )
178 + threads? ( dev-cpp/tbb:=[${MULTILIB_USEDEP}] )
179 + tiff? ( media-libs/tiff:0[${MULTILIB_USEDEP}] )
180 + v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] )
181 + vaapi? ( x11-libs/libva[${MULTILIB_USEDEP}] )
182 + vtk? ( sci-libs/vtk[rendering] )
183 + webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
184 + xine? ( media-libs/xine-lib )"
185 +# bug #747949 for eigen (eigen-3.3.8 was broken upstream)
186 +DEPEND="${RDEPEND}
187 + eigen? (
188 + || (
189 + >=dev-cpp/eigen-3.3.8-r1:3
190 + <dev-cpp/eigen-3.3.8:3
191 + )
192 + )
193 + java? ( >=virtual/jdk-1.8:* )"
194 +BDEPEND="virtual/pkgconfig"
195 +
196 +MULTILIB_WRAPPED_HEADERS=(
197 + # [opencv4]
198 + /usr/include/opencv4/opencv2/cvconfig.h
199 + /usr/include/opencv4/opencv2/opencv_modules.hpp
200 + # [cudev]
201 + /usr/include/opencv4/opencv2/cudaarithm.hpp
202 + /usr/include/opencv4/opencv2/cudabgsegm.hpp
203 + /usr/include/opencv4/opencv2/cudacodec.hpp
204 + /usr/include/opencv4/opencv2/cudafeatures2d.hpp
205 + /usr/include/opencv4/opencv2/cudafilters.hpp
206 + /usr/include/opencv4/opencv2/cudaimgproc.hpp
207 + /usr/include/opencv4/opencv2/cudalegacy.hpp
208 + /usr/include/opencv4/opencv2/cudalegacy/NCVBroxOpticalFlow.hpp
209 + /usr/include/opencv4/opencv2/cudalegacy/NCVHaarObjectDetection.hpp
210 + /usr/include/opencv4/opencv2/cudalegacy/NCV.hpp
211 + /usr/include/opencv4/opencv2/cudalegacy/NCVPyramid.hpp
212 + /usr/include/opencv4/opencv2/cudalegacy/NPP_staging.hpp
213 + /usr/include/opencv4/opencv2/cudaobjdetect.hpp
214 + /usr/include/opencv4/opencv2/cudaoptflow.hpp
215 + /usr/include/opencv4/opencv2/cudastereo.hpp
216 + /usr/include/opencv4/opencv2/cudawarping.hpp
217 + /usr/include/opencv4/opencv2/cudev/block/block.hpp
218 + /usr/include/opencv4/opencv2/cudev/block/detail/reduce.hpp
219 + /usr/include/opencv4/opencv2/cudev/block/detail/reduce_key_val.hpp
220 + /usr/include/opencv4/opencv2/cudev/block/dynamic_smem.hpp
221 + /usr/include/opencv4/opencv2/cudev/block/reduce.hpp
222 + /usr/include/opencv4/opencv2/cudev/block/scan.hpp
223 + /usr/include/opencv4/opencv2/cudev/block/vec_distance.hpp
224 + /usr/include/opencv4/opencv2/cudev/common.hpp
225 + /usr/include/opencv4/opencv2/cudev/expr/binary_func.hpp
226 + /usr/include/opencv4/opencv2/cudev/expr/binary_op.hpp
227 + /usr/include/opencv4/opencv2/cudev/expr/color.hpp
228 + /usr/include/opencv4/opencv2/cudev/expr/deriv.hpp
229 + /usr/include/opencv4/opencv2/cudev/expr/expr.hpp
230 + /usr/include/opencv4/opencv2/cudev/expr/per_element_func.hpp
231 + /usr/include/opencv4/opencv2/cudev/expr/reduction.hpp
232 + /usr/include/opencv4/opencv2/cudev/expr/unary_func.hpp
233 + /usr/include/opencv4/opencv2/cudev/expr/unary_op.hpp
234 + /usr/include/opencv4/opencv2/cudev/expr/warping.hpp
235 + /usr/include/opencv4/opencv2/cudev/functional/color_cvt.hpp
236 + /usr/include/opencv4/opencv2/cudev/functional/detail/color_cvt.hpp
237 + /usr/include/opencv4/opencv2/cudev/functional/functional.hpp
238 + /usr/include/opencv4/opencv2/cudev/functional/tuple_adapter.hpp
239 + /usr/include/opencv4/opencv2/cudev/grid/copy.hpp
240 + /usr/include/opencv4/opencv2/cudev/grid/detail/copy.hpp
241 + /usr/include/opencv4/opencv2/cudev/grid/detail/histogram.hpp
242 + /usr/include/opencv4/opencv2/cudev/grid/detail/integral.hpp
243 + /usr/include/opencv4/opencv2/cudev/grid/detail/minmaxloc.hpp
244 + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_down.hpp
245 + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_up.hpp
246 + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce.hpp
247 + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_column.hpp
248 + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_row.hpp
249 + /usr/include/opencv4/opencv2/cudev/grid/detail/split_merge.hpp
250 + /usr/include/opencv4/opencv2/cudev/grid/detail/transform.hpp
251 + /usr/include/opencv4/opencv2/cudev/grid/detail/transpose.hpp
252 + /usr/include/opencv4/opencv2/cudev/grid/histogram.hpp
253 + /usr/include/opencv4/opencv2/cudev/grid/integral.hpp
254 + /usr/include/opencv4/opencv2/cudev/grid/pyramids.hpp
255 + /usr/include/opencv4/opencv2/cudev/grid/reduce.hpp
256 + /usr/include/opencv4/opencv2/cudev/grid/reduce_to_vec.hpp
257 + /usr/include/opencv4/opencv2/cudev/grid/split_merge.hpp
258 + /usr/include/opencv4/opencv2/cudev/grid/transform.hpp
259 + /usr/include/opencv4/opencv2/cudev/grid/transpose.hpp
260 + /usr/include/opencv4/opencv2/cudev.hpp
261 + /usr/include/opencv4/opencv2/cudev/ptr2d/constant.hpp
262 + /usr/include/opencv4/opencv2/cudev/ptr2d/deriv.hpp
263 + /usr/include/opencv4/opencv2/cudev/ptr2d/detail/gpumat.hpp
264 + /usr/include/opencv4/opencv2/cudev/ptr2d/extrapolation.hpp
265 + /usr/include/opencv4/opencv2/cudev/ptr2d/glob.hpp
266 + /usr/include/opencv4/opencv2/cudev/ptr2d/gpumat.hpp
267 + /usr/include/opencv4/opencv2/cudev/ptr2d/interpolation.hpp
268 + /usr/include/opencv4/opencv2/cudev/ptr2d/lut.hpp
269 + /usr/include/opencv4/opencv2/cudev/ptr2d/mask.hpp
270 + /usr/include/opencv4/opencv2/cudev/ptr2d/remap.hpp
271 + /usr/include/opencv4/opencv2/cudev/ptr2d/resize.hpp
272 + /usr/include/opencv4/opencv2/cudev/ptr2d/texture.hpp
273 + /usr/include/opencv4/opencv2/cudev/ptr2d/traits.hpp
274 + /usr/include/opencv4/opencv2/cudev/ptr2d/transform.hpp
275 + /usr/include/opencv4/opencv2/cudev/ptr2d/warping.hpp
276 + /usr/include/opencv4/opencv2/cudev/ptr2d/zip.hpp
277 + /usr/include/opencv4/opencv2/cudev/util/atomic.hpp
278 + /usr/include/opencv4/opencv2/cudev/util/detail/tuple.hpp
279 + /usr/include/opencv4/opencv2/cudev/util/detail/type_traits.hpp
280 + /usr/include/opencv4/opencv2/cudev/util/limits.hpp
281 + /usr/include/opencv4/opencv2/cudev/util/saturate_cast.hpp
282 + /usr/include/opencv4/opencv2/cudev/util/simd_functions.hpp
283 + /usr/include/opencv4/opencv2/cudev/util/tuple.hpp
284 + /usr/include/opencv4/opencv2/cudev/util/type_traits.hpp
285 + /usr/include/opencv4/opencv2/cudev/util/vec_math.hpp
286 + /usr/include/opencv4/opencv2/cudev/util/vec_traits.hpp
287 + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce.hpp
288 + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce_key_val.hpp
289 + /usr/include/opencv4/opencv2/cudev/warp/reduce.hpp
290 + /usr/include/opencv4/opencv2/cudev/warp/scan.hpp
291 + /usr/include/opencv4/opencv2/cudev/warp/shuffle.hpp
292 + /usr/include/opencv4/opencv2/cudev/warp/warp.hpp
293 + # [contrib_cvv]
294 + /usr/include/opencv4/opencv2/cvv/call_meta_data.hpp
295 + /usr/include/opencv4/opencv2/cvv/cvv.hpp
296 + /usr/include/opencv4/opencv2/cvv/debug_mode.hpp
297 + /usr/include/opencv4/opencv2/cvv/dmatch.hpp
298 + /usr/include/opencv4/opencv2/cvv/filter.hpp
299 + /usr/include/opencv4/opencv2/cvv/final_show.hpp
300 + /usr/include/opencv4/opencv2/cvv.hpp
301 + /usr/include/opencv4/opencv2/cvv/show_image.hpp
302 + # [contrib_hdf]
303 + /usr/include/opencv4/opencv2/hdf/hdf5.hpp
304 + /usr/include/opencv4/opencv2/hdf.hpp
305 + # [contrib_ovis]
306 + /usr/include/opencv4/opencv2/ovis.hpp
307 + # [vtk]
308 + /usr/include/opencv4/opencv2/viz.hpp
309 + /usr/include/opencv4/opencv2/viz/types.hpp
310 + /usr/include/opencv4/opencv2/viz/viz3d.hpp
311 + /usr/include/opencv4/opencv2/viz/vizcore.hpp
312 + /usr/include/opencv4/opencv2/viz/widget_accessor.hpp
313 + /usr/include/opencv4/opencv2/viz/widgets.hpp
314 +)
315 +
316 +PATCHES=(
317 + "${FILESDIR}"/${PN}-3.4.0-disable-download.patch
318 + "${FILESDIR}"/${PN}-3.4.1-cuda-add-relaxed-constexpr.patch
319 + "${FILESDIR}"/${PN}-4.1.2-opencl-license.patch
320 + "${FILESDIR}"/${PN}-4.4.0-disable-native-cpuflag-detect.patch
321 + "${FILESDIR}"/${PN}-4.5.0-link-with-cblas-for-lapack.patch
322 +)
323 +
324 +pkg_pretend() {
325 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
326 +}
327 +
328 +pkg_setup() {
329 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
330 + java-pkg-opt-2_pkg_setup
331 +}
332 +
333 +src_prepare() {
334 + cmake_src_prepare
335 +
336 + # remove bundled stuff
337 + rm -r 3rdparty || die "Removing 3rd party components failed"
338 + sed -e '/add_subdirectory(.*3rdparty.*)/ d' \
339 + -i CMakeLists.txt cmake/*cmake || die
340 +
341 + if use dnnsamples; then
342 + mv "${WORKDIR}/res10_300x300_ssd_iter_140000.caffemodel" "${WORKDIR}/${P}/samples/dnn/" || die
343 + fi
344 +
345 + if use contrib; then
346 + cd "${WORKDIR}/${PN}_contrib-${PV}" || die
347 + if use contribxfeatures2d; then
348 + mv "${WORKDIR}"/*.i "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die
349 + fi
350 + fi
351 +
352 + if use download; then
353 + mv "${WORKDIR}/${PN}-extdep-4.4.0" "${WORKDIR}/${P}/.cache/" || die
354 + fi
355 +
356 + java-pkg-opt-2_src_prepare
357 +
358 + # this really belongs in src_prepare() too
359 + JAVA_ANT_ENCODING="iso-8859-1"
360 + # set encoding so even this cmake build will pick it up.
361 + export ANT_OPTS+=" -Dfile.encoding=iso-8859-1"
362 + java-ant-2_src_configure
363 +}
364 +
365 +multilib_src_configure() {
366 + # please dont sort here, order is the same as in CMakeLists.txt
367 + GLOBALCMAKEARGS=(
368 + # Optional 3rd party components
369 + # ===================================================
370 + -DENABLE_DOWNLOAD=$(usex download)
371 + -DWITH_QUIRC=OFF # Do not have dependencies
372 + -DWITH_1394=$(usex ieee1394)
373 + # -DWITH_AVFOUNDATION=OFF # IOS
374 + -DWITH_VTK=$(multilib_native_usex vtk)
375 + -DWITH_EIGEN=$(usex eigen)
376 + -DWITH_VFW=OFF # Video windows support
377 + -DWITH_FFMPEG=$(usex ffmpeg)
378 + -DWITH_GSTREAMER=$(usex gstreamer)
379 + -DWITH_GSTREAMER_0_10=OFF # Don't want this
380 + -DWITH_GTK=$(usex gtk3)
381 + -DWITH_GTK_2_X=OFF # only want gtk3 nowadays
382 + -DWITH_IPP=OFF
383 + # Jasper was removed from tree because of security problems.
384 + # Upstream were/are making progress. We use openjpeg instead.
385 + # bug 734284
386 + -DWITH_JASPER=OFF
387 + -DWITH_JPEG=$(usex jpeg)
388 + -DWITH_OPENJPEG=$(usex jpeg2k)
389 + -DWITH_WEBP=$(usex webp)
390 + -DWITH_OPENEXR=$(usex openexr)
391 + -DWITH_OPENGL=$(usex opengl)
392 + -DWITH_OPENVX=OFF
393 + -DWITH_OPENNI=OFF # Not packaged
394 + -DWITH_OPENNI2=OFF # Not packaged
395 + -DWITH_PNG=$(usex png)
396 + -DWITH_GDCM=OFF
397 + -DWITH_PVAPI=OFF
398 + -DWITH_GIGEAPI=OFF
399 + -DWITH_ARAVIS=OFF
400 + -DWITH_QT=$(multilib_native_usex qt5 5 OFF)
401 + -DWITH_WIN32UI=OFF # Windows only
402 + # -DWITH_QUICKTIME=OFF
403 + # -DWITH_QTKIT=OFF
404 + -DWITH_TBB=$(usex threads)
405 + -DWITH_OPENMP=$(usex openmp)
406 + -DWITH_CSTRIPES=OFF
407 + -DWITH_PTHREADS_PF=ON
408 + -DWITH_TIFF=$(usex tiff)
409 + -DWITH_UNICAP=OFF # Not packaged
410 + -DWITH_V4L=$(usex v4l)
411 + -DWITH_LIBV4L=$(usex v4l)
412 + # -DWITH_DSHOW=ON # direct show supp
413 + -DWITH_MSMF=OFF
414 + -DWITH_XIMEA=OFF # Windows only
415 + -DWITH_XINE=$(multilib_native_usex xine)
416 + -DWITH_CLP=OFF
417 + -DWITH_OPENCL=$(usex opencl)
418 + -DWITH_OPENCL_SVM=OFF
419 + -DWITH_OPENCLAMDFFT=$(usex opencl)
420 + -DWITH_OPENCLAMDBLAS=$(usex opencl)
421 + -DWITH_DIRECTX=OFF
422 + -DWITH_INTELPERC=OFF
423 + -DWITH_IPP_A=OFF
424 + -DWITH_MATLAB=OFF
425 + -DWITH_VA=$(usex vaapi)
426 + -DWITH_VA_INTEL=$(usex vaapi)
427 + -DWITH_GDAL=$(multilib_native_usex gdal)
428 + -DWITH_GPHOTO2=$(usex gphoto2)
429 + -DWITH_LAPACK=$(multilib_native_usex lapack)
430 + -DWITH_ITT=OFF # 3dparty libs itt_notify
431 + # ===================================================
432 + # CUDA build components: nvidia-cuda-toolkit takes care of GCC version
433 + # ===================================================
434 + -DWITH_CUDA=$(multilib_native_usex cuda)
435 + -DWITH_CUBLAS=$(multilib_native_usex cuda)
436 + -DWITH_CUFFT=$(multilib_native_usex cuda)
437 + -DWITH_NVCUVID=OFF
438 + # -DWITH_NVCUVID=$(usex cuda)
439 + -DCUDA_NPP_LIBRARY_ROOT_DIR=$(usex cuda "${EPREFIX}/opt/cuda" "")
440 + # ===================================================
441 + # OpenCV build components
442 + # ===================================================
443 + -DBUILD_SHARED_LIBS=ON
444 + -DBUILD_JAVA=$(multilib_native_usex java) # Ant needed, no compile flag
445 + -DBUILD_ANDROID_EXAMPLES=OFF
446 + -DBUILD_opencv_apps=$(usex opencvapps ON OFF)
447 + -DBUILD_DOCS=OFF # Doesn't install anyways.
448 + -DBUILD_EXAMPLES=$(multilib_native_usex examples)
449 + -DBUILD_PERF_TESTS=OFF
450 + -DBUILD_TESTS=$(multilib_native_usex testprograms)
451 + -DBUILD_WITH_DEBUG_INFO=$(usex debug)
452 + # -DBUILD_WITH_STATIC_CRT=OFF
453 + -DBUILD_WITH_DYNAMIC_IPP=OFF
454 + -DBUILD_FAT_JAVA_LIB=OFF
455 + # -DBUILD_ANDROID_SERVICE=OFF
456 + -DBUILD_CUDA_STUBS=$(multilib_native_usex cuda)
457 + -DOPENCV_EXTRA_MODULES_PATH=$(usex contrib "${WORKDIR}/opencv_contrib-${PV}/modules" "")
458 + # ===================================================
459 + # OpenCV installation options
460 + # ===================================================
461 + -DINSTALL_CREATE_DISTRIB=OFF
462 + -DINSTALL_C_EXAMPLES=$(multilib_native_usex examples)
463 + -DINSTALL_TESTS=$(multilib_native_usex testprograms)
464 + -DINSTALL_PYTHON_EXAMPLES=$(multilib_native_usex examples)
465 + # -DINSTALL_ANDROID_EXAMPLES=OFF
466 + -DINSTALL_TO_MANGLED_PATHS=OFF
467 + -DOPENCV_GENERATE_PKGCONFIG=ON
468 + # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX}
469 + # to set its destination libdir
470 + -DLIB_SUFFIX=
471 + # ===================================================
472 + # OpenCV build options
473 + # ===================================================
474 + -DENABLE_CCACHE=OFF
475 + # bug 733796, but PCH is a risky game in CMake anyway
476 + -DENABLE_PRECOMPILED_HEADERS=OFF
477 + -DENABLE_SOLUTION_FOLDERS=OFF
478 + -DENABLE_PROFILING=OFF
479 + -DENABLE_COVERAGE=OFF
480 +
481 + -DHAVE_opencv_java=$(multilib_native_usex java YES NO)
482 + -DENABLE_NOISY_WARNINGS=OFF
483 + -DOPENCV_WARNINGS_ARE_ERRORS=OFF
484 + -DENABLE_IMPL_COLLECTION=OFF
485 + -DENABLE_INSTRUMENTATION=OFF
486 + -DGENERATE_ABI_DESCRIPTOR=OFF
487 + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF
488 + -DENABLE_LTO=$(usex lto)
489 + # ===================================================
490 + # things we want to be hard off or not yet figured out
491 + # ===================================================
492 + -DBUILD_PACKAGE=OFF
493 + # ===================================================
494 + # Not building protobuf but update files bug #631418
495 + # ===================================================
496 + -DBUILD_PROTOBUF=OFF
497 + -DPROTOBUF_UPDATE_FILES=ON
498 + # ===================================================
499 + # things we want to be hard enabled not worth useflag
500 + # ===================================================
501 + -DCMAKE_SKIP_RPATH=ON
502 + -DOPENCV_DOC_INSTALL_PATH=
503 + -DBUILD_opencv_features2d=$(usex features2d ON OFF)
504 + )
505 +
506 + # ==================================================
507 + # cpu flags, should solve 633900
508 + #===================================================
509 + local CPU_BASELINE=""
510 + for i in "${CPU_FEATURES_MAP[@]}" ; do
511 + if [[ ${ABI} != x86 || ${i%:*} != "cpu_flags_x86_avx2" ]]; then # workaround for Bug 747163
512 + use ${i%:*} && CPU_BASELINE="${CPU_BASELINE}${i#*:};"
513 + fi
514 + done
515 +
516 + GLOBALCMAKEARGS+=(
517 + -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON
518 + -DCPU_BASELINE=${CPU_BASELINE}
519 + -DCPU_DISPATCH=
520 + )
521 +
522 + # ===================================================
523 + # OpenCV Contrib Modules
524 + # ===================================================
525 + if use contrib; then
526 + GLOBALCMAKEARGS+=(
527 + -DBUILD_opencv_dnn=$(usex contribdnn ON OFF)
528 + -DTINYDNN_ROOT="${WORKDIR}/tiny-dnn-${TINY_DNN_PV}"
529 + -DBUILD_opencv_dnns_easily_fooled=OFF
530 + -DBUILD_opencv_xfeatures2d=$(usex contribxfeatures2d ON OFF)
531 + -DBUILD_opencv_cvv=$(usex contribcvv ON OFF)
532 + -DBUILD_opencv_hdf=$(multilib_native_usex contribhdf ON OFF)
533 + -DBUILD_opencv_sfm=$(usex contribsfm ON OFF)
534 + -DBUILD_opencv_freetype=$(usex contribfreetype ON OFF)
535 + -DBUILD_opencv_ovis=$(usex contribovis ON OFF)
536 + )
537 +
538 + if multilib_is_native_abi; then
539 + GLOBALCMAKEARGS+=(
540 + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=$(usex !tesseract)
541 + )
542 + else
543 + GLOBALCMAKEARGS+=(
544 + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=ON
545 + )
546 + fi
547 + fi
548 +
549 + # workaround for bug 413429
550 + tc-export CC CXX
551 +
552 + local mycmakeargs=(
553 + ${GLOBALCMAKEARGS[@]}
554 + -DPYTHON_EXECUTABLE=OFF
555 + -DINSTALL_PYTHON_EXAMPLES=OFF
556 + -DBUILD_opencv_python2=OFF
557 + -DBUILD_opencv_python3=OFF
558 + )
559 +
560 + cmake_src_configure
561 +
562 + # Copy face_land_model to ${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH}
563 + # TODO patch ocv_download to copy files into destination dirs
564 + if use contribdnn; then
565 + mkdir -p "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die
566 + cp "${WORKDIR}"/face_landmark_model.dat "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die
567 + fi
568 +
569 +}
570 +
571 +python_module_compile() {
572 + local BUILD_DIR="${orig_BUILD_DIR}"
573 + local mycmakeargs=( ${GLOBALCMAKEARGS[@]} )
574 +
575 + # Set all python variables to load the correct Gentoo paths
576 + mycmakeargs+=(
577 + # python_setup alters PATH and sets this as wrapper
578 + # to the correct interpreter we are building for
579 + -DPYTHON_DEFAULT_EXECUTABLE=${EPYTHON}
580 + -DINSTALL_PYTHON_EXAMPLES=$(usex examples)
581 + )
582 +
583 + # Regenerate cache file. Can't use rebuild_cache as it won't
584 + # have the Gentoo specific options.
585 + rm CMakeCache.txt || die "rm failed"
586 + cmake_src_configure
587 + cmake_src_compile
588 + cmake_src_install
589 +
590 + # Remove compiled binary so new version compiles
591 + # Avoid conflicts with new module builds as build system doesn't
592 + # really support it.
593 + rm -r modules/python3 || die "rm failed"
594 +
595 + python_optimize "${ED}"/$(python_get_sitedir)
596 +}
597 +
598 +multilib_src_install() {
599 + cmake_src_install
600 +
601 + # Build and install the python modules for all targets
602 + if multilib_is_native_abi && use python; then
603 + local orig_BUILD_DIR="${BUILD_DIR}"
604 + python_foreach_impl python_module_compile
605 + fi
606 +}