From d934827bf44b7cfcf6711964418148fa60877668 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 25 Nov 2020 22:39:15 +0000 Subject: gentoo resync : 25.11.2020 --- media-libs/opencv/Manifest | 11 +- ...pencv-4.4.0-disable-native-cpuflag-detect.patch | 26 + .../opencv-4.5.0-link-with-cblas-for-lapack.patch | 18 + media-libs/opencv/metadata.xml | 3 + media-libs/opencv/opencv-4.4.0-r1.ebuild | 559 ++++++++++++++++++++ media-libs/opencv/opencv-4.5.0.ebuild | 567 +++++++++++++++++++++ 6 files changed, 1183 insertions(+), 1 deletion(-) create mode 100644 media-libs/opencv/files/opencv-4.4.0-disable-native-cpuflag-detect.patch create mode 100644 media-libs/opencv/files/opencv-4.5.0-link-with-cblas-for-lapack.patch create mode 100644 media-libs/opencv/opencv-4.4.0-r1.ebuild create mode 100644 media-libs/opencv/opencv-4.5.0.ebuild (limited to 'media-libs/opencv') diff --git a/media-libs/opencv/Manifest b/media-libs/opencv/Manifest index 37cb176cb012..4349225e55d2 100644 --- a/media-libs/opencv/Manifest +++ b/media-libs/opencv/Manifest @@ -3,10 +3,19 @@ AUX opencv-3.4.0-disable-download.patch 1050 BLAKE2B 6f39f61588d9231cc8d87762453 AUX opencv-3.4.1-cuda-add-relaxed-constexpr.patch 707 BLAKE2B 743a9c259c59fc4e3017539faef0723e0a80fb9c4bbde94811f32b3e6ae271b3db39fd35487d75078cfbe9e596604c4e37fb5c6c18619ed524c52683219dd8af SHA512 b37ce78495a3bbc439f203d9db81d9bff3e7f980c01ef5187dee537dd9c1025c5163ec3760b48d91a099a2fafb60526c9fe83f7183fc605fb3cc0f5c7a65f6bf AUX opencv-4.1.2-opencl-license.patch 519 BLAKE2B 6dcdf809c3c75a39d0e44f02e157a0c0ee074fd15144565ed51ade7e7849cb313c084100f499cc1240424f4647a2ff73c8d5e61cbdf6d0499846db61b8a30729 SHA512 2874a5140ef5028eb6c64f36325904000edd722560cf876fc49d63b040633bcfea01cae27c156b18191564805cafd2986f26eea322b1376af4f2982d66ed7653 AUX opencv-4.1.2-pkg-config-file.patch 345 BLAKE2B ba3968a5dbdcc981cc513055ca99b8726ba2fe993cb8c128d574688a748dbd6fc287089bc0c04af89f6b9b62b37cae9663a81c329b6a2dab4919470450b9f6c7 SHA512 0fa66ca24c0fa72dc9e13c0c40592cf5ca5aa5856d1747613f9c4528f0b00f05dd224662c022563db994f7e43879b97d1ba1f0afa2703c30e4a3efc520dc332d +AUX opencv-4.4.0-disable-native-cpuflag-detect.patch 1218 BLAKE2B 06569f6b7d33eccb11cae74624a2cc7d7e1eb788145813509220dc8436d2380892392be8c4af03fec845f3eade74b6277985cf80e38785317b15f17890bcaa4c SHA512 3be60f7ee28e3b001ef0c791e3ce1c849ff6fa9fdb70731716668b2698eed9abb24ee3aead1dbc857ed68fc46a645c70a1e3831e8a3e5a5b1791aa06bd2f9ee1 +AUX opencv-4.5.0-link-with-cblas-for-lapack.patch 726 BLAKE2B adbffd961c88229bf810e13fe20705352ff506a653c1d55bb0687c03d8daf9e05aed0f2ba9cd6e306c625837d6ddf64eeb99dc6cbf2b15fae833f4a7eea6aad0 SHA512 4c3108e304721c2cd78eb82f5d7bccc18831db5f47bc628a98ae6a37da389deef30e7e9b6dc5644e3bc0e0fafdd907dc37822a58a25555999698527d2ac364b0 DIST opencv-3.4.0-face_landmark_model.tar.gz 63299830 BLAKE2B 58f08cd8c030ee1c8b66e76a561fd625e112face427d001185f8d7c0eaace55adbd8474663021841a1382bfe393a210e64c51223441713cdb9156fac866a845c SHA512 2cd29ce42c08b2966db3ef4a2bc217ab3d07051819757ec6de8f3deea29e28f60abab39f101dba03f766f17018598e411bd687a7eaab0c681c113e10a2de2b23 DIST opencv-3.4.0-res10_300x300-caffeemodel.tar.gz 10036604 BLAKE2B 2a2de48fc420f13e7be146ac88f311901c5b4e409c30e466152e33cae1f8afd87dcb6d758af447c268d90bd67989c8798cd80cab172b10499a6ad5224509dbdf SHA512 96fee9f447d5739bc01a5cab37c453cf7237457dfb5d2bf93ac37f8e5aa557ac222316f449cd58e37e856abe4d8e9d4a7820daaba32f0b22cbcde8e340287d4b DIST opencv-4.1.2.tar.gz 87468598 BLAKE2B 9e0fbd8499f783cd1a2b5ffddf557aef424b0a446f71f826522ffd4526d04742e0c408b99810fe6b39753d40c475922d2e273732fdc0a0b4ee0bc56052a7a26c SHA512 d18d2cc35dc1c95c8870d35feb14459db27ebf6d09ff89a185918b1faff1b36dedacc18f268a6483570c404aca19b83ba627ce7af2265af7195a029cb766c09f DIST opencv-4.1.2_contrib.tar.gz 60881937 BLAKE2B c461aaa62306b226bde9211e2d611dcf705510e32c8598458737eb09c510cfdb49c33e11f1a7c591090d8243590e915b779fdb55955550fe44dab7545e4cc308 SHA512 1e14f94f9228c5d6a598493eed265aab1d8a740d5bfa00639afb05287732220eb71f88bb374de47dcd440f4376486f9db0e8b338e90e5dc4f6af8d355340b622 +DIST opencv-4.4.0.tar.gz 88887103 BLAKE2B 87838e2c837074c445eeead11b76b0ab6f433873195169fe288dfb5e4844f27b13126ef9c0d973857693c77db82168826df698ee7f34bc10eec3bda869b30d32 SHA512 ce4bada7b57c1a00439eca02abcba262732d5eabfd26090f6f83642d747a9a1a7908230bcd01a2b999c509e0c43c8b0dcb2b93ac824518b79cffe533f22652bb +DIST opencv-4.4.0_contrib.tar.gz 59968818 BLAKE2B 2e2c1bf776fef0b4d9f92406665adfbce96e6185a4b5fda82cfdd1e7899b3ca7e7615c4dce508082fcf94a10cfa160154ac0aa7a90ce2635f566a65176678dcd SHA512 d1a29a4a343f55fe2ae04966d2fc2d20765de719619bea68b84ee72f432777062727d8105b0aa168f359e468544b2ea930b1a4f8dc059e51de27d8af229c6b6b +DIST opencv-4.4.0_extdep.tar.gz 65334871 BLAKE2B 89fa0083da428e986bb4287295bdbff626d0f84866377413649c1d7ca77338288141f22d2a3c0b64d6d0fc1db98f918c8b33a665274cee4c4aefb44359e4333d SHA512 7b758099ce4abef151051e3e9e1e45b73e4054669d3aa53051e4d4c5f43d9373c9bda5ecbce51f6b024562cb566bd1117505af29ab5f3c36a493f185111a3b4e +DIST opencv-4.5.0.tar.gz 90116240 BLAKE2B bcd6ccc4ff0cb1b66923c17c9d9e4ced711527b5d92abd2a5330f791fb07ff93dafa7a3f3095e6d96cb6cea877ac170bb2533f563fa843f284501019263daff3 SHA512 c34100f3f3fe45f2115975350d23288a3badb32864ba0cbd32512387416d1cf10d16d3ef5f3d089d6a1c2be587d788d33997513fc015dbf7d774a622f2d3811f +DIST opencv-4.5.0_contrib.tar.gz 60115063 BLAKE2B 4068905c9f5f308f30f15ad383ae459cbb421d1871344c3548a6c11647ac9da7af8c46798e860bdd1fcbacccda0fb03f6c1cf07b458ddfa5a0c311511627af52 SHA512 b2ae72e920c78472fd677281b8dd6f25872399d8ade97b0d3b0fc50bbabea8c00ea849d87bfb311ac148cef663481d0c89c0f6875578c052c1cc7ddcd70e6e17 DIST vgg_boostdesc-3.2.0.tar.gz 1867770 BLAKE2B 1fa5b58e73b6fa56ecf8d19af22298f729942ee1369082e173445d09d3de767bf844bad3d2b462efc1199c392f37c88ba49a9996ba8bfd84b4abeba7de94db63 SHA512 4a046aedd639c8eb4b295b0f499e756deb66210ca083f0124c75531e540663367cb58f6d175f66c4713324177036cd89a8869bdab2de8d1736dafc7f00ef9f44 EBUILD opencv-4.1.2-r3.ebuild 18316 BLAKE2B 8775108cacc4c8f89fec915f73a4ba2c3908cf69c3e9c6d59c14dde2239c597845c04b5875591bef753ef6076e0009eb0630b95b0024660ac8d5ea773749eef2 SHA512 ed1cc7ba12fff122c700c5d88a2055677db459d0547a1eb465313a0b1db4efa75663618607facc1d33c97c9dd02a517d09bd627140082374851c97a9bec1a38c -MISC metadata.xml 2786 BLAKE2B 1a29ddd9b75277f52d0a66cfb60fe2ad240ffdbdbf58a74038c684658405e90e858470b84fc0ff0935c972020152cfe6b6570a53ac68b71c299036e06516f469 SHA512 aa72fe71384691be664703e35c2f1342f9c90881d761b04e16357869c515fba551940b5bb624f9a7085f1ffa2e26067ac28b42fd97375d8a81a1901158b86ffc +EBUILD opencv-4.4.0-r1.ebuild 20301 BLAKE2B 822f7c3d46de91b998481fbf26731ea1ca5d134c73ff22dd0cf0f8a325a9e58208ad99ce545f56ab97de1e2c17fd15d61dffbe72093be93eb2150be6beaec161 SHA512 ed3ab5ad91c438a383b5037ec35c1713244dca7bd20fb0c770ca27d4cd8afe3516be6b76f5be3f383765a9064ef974b4a85dfe77538127375966ee873ab1536a +EBUILD opencv-4.5.0.ebuild 20529 BLAKE2B 67363a3f10feeeacf0b24156257acb65004939c15b700381df5729f275450c3d440cda7779f9db1a5cab676308b2e26177391c08f74a71ef655fba5dbbf14cf0 SHA512 04cc308127b2c80996e651028ed8ddb015a44c3b05dfc3515b146292542e604e5267b2a6bb30e4a8f4d66ff59725baf80b9dde1142114d6a499a2937fea27c82 +MISC metadata.xml 3132 BLAKE2B 7a499ebf8678ccae68c4947075f925b439ecdcca8a56c77c8a57895d57ffda6ecaade65e1124d12a78bbdf15eef8f9c4524c921bc53009aeb7defd5c489396a6 SHA512 ff59cff9b8f41e69f421bee8d2680eb655c3336f2eafa8c3567ec0d0509707bf9cd0ba41190a8012564d43d87ac5b35e5dc2c827167ed6d315e422a53a13900a diff --git a/media-libs/opencv/files/opencv-4.4.0-disable-native-cpuflag-detect.patch b/media-libs/opencv/files/opencv-4.4.0-disable-native-cpuflag-detect.patch new file mode 100644 index 000000000000..89ac1ff47ca1 --- /dev/null +++ b/media-libs/opencv/files/opencv-4.4.0-disable-native-cpuflag-detect.patch @@ -0,0 +1,26 @@ + cmake/OpenCVCompilerOptimizations.cmake | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/cmake/OpenCVCompilerOptimizations.cmake b/cmake/OpenCVCompilerOptimizations.cmake +index 970dd28903..b56892bb12 100644 +--- a/cmake/OpenCVCompilerOptimizations.cmake ++++ b/cmake/OpenCVCompilerOptimizations.cmake +@@ -156,12 +156,12 @@ if(";${CPU_BASELINE};" MATCHES ";NATIVE;" OR ";${CPU_BASELINE};" MATCHES ";HOST; + set(_add_native_flag ON) + elseif(";${CPU_BASELINE};" MATCHES ";DETECT;") + set(CPU_BASELINE_DETECT ON) +-elseif(" ${CMAKE_CXX_FLAGS} " MATCHES " -march=native | -xHost | /QxHost ") +- if(DEFINED CPU_BASELINE) +- message(STATUS "CPU: Detected '-march=native' or '-xHost' compiler flag. Force CPU_BASELINE=DETECT.") +- endif() +- set(CPU_BASELINE "DETECT" CACHE STRING "${HELP_CPU_BASELINE}") +- set(CPU_BASELINE_DETECT ON) ++#elseif(" ${CMAKE_CXX_FLAGS} " MATCHES " -march=native | -xHost | /QxHost ") ++# if(DEFINED CPU_BASELINE) ++# message(STATUS "CPU: Detected '-march=native' or '-xHost' compiler flag. Force CPU_BASELINE=DETECT.") ++# endif() ++# set(CPU_BASELINE "DETECT" CACHE STRING "${HELP_CPU_BASELINE}") ++# set(CPU_BASELINE_DETECT ON) + endif() + + if(X86 OR X86_64) diff --git a/media-libs/opencv/files/opencv-4.5.0-link-with-cblas-for-lapack.patch b/media-libs/opencv/files/opencv-4.5.0-link-with-cblas-for-lapack.patch new file mode 100644 index 000000000000..acee677052d6 --- /dev/null +++ b/media-libs/opencv/files/opencv-4.5.0-link-with-cblas-for-lapack.patch @@ -0,0 +1,18 @@ +diff --git a/cmake/OpenCVFindLAPACK.cmake b/cmake/OpenCVFindLAPACK.cmake +index 342bebc..9ebd206 100644 +--- a/cmake/OpenCVFindLAPACK.cmake ++++ b/cmake/OpenCVFindLAPACK.cmake +@@ -136,10 +136,12 @@ if(WITH_LAPACK) + ocv_lapack_check() + endif() + if(NOT HAVE_LAPACK) +- if(LAPACKE_INCLUDE_DIR) ++ find_package(CBLAS) ++ if(LAPACKE_INCLUDE_DIR AND CBLAS_FOUND) + set(LAPACK_INCLUDE_DIR ${LAPACKE_INCLUDE_DIR}) + set(LAPACK_CBLAS_H "cblas.h") + set(LAPACK_LAPACKE_H "lapacke.h") ++ set(LAPACK_LIBRARIES ${LAPACK_LIBRARIES} ${CBLAS_LIBRARIES}) + set(LAPACK_IMPL "LAPACK/Generic") + ocv_lapack_check() + elseif(APPLE) diff --git a/media-libs/opencv/metadata.xml b/media-libs/opencv/metadata.xml index 98984a7467b5..ad1fde1b865e 100644 --- a/media-libs/opencv/metadata.xml +++ b/media-libs/opencv/metadata.xml @@ -18,6 +18,7 @@ Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Under Enable features2d module Enable support for sci-libs/gdal library Enable x11-libs/gtk+:3 support + Build using Link Time Optimizations (LTO) Enable compilation with opencvapps Use Google's C++ argument parsing library Use Google's C++ loggin library @@ -26,6 +27,8 @@ Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Under DNN module contrib requires tiny dnn HDF module requires sci-libs/hdf5 SFM module requires eigen, gflags, and glog + Enable Drawing UTF-8 strings with freetype/harfbuzz + Enable Ogre vision module support Download dnn caffeemodel samples Add support for OpenCL Use Google's OCR Engine diff --git a/media-libs/opencv/opencv-4.4.0-r1.ebuild b/media-libs/opencv/opencv-4.4.0-r1.ebuild new file mode 100644 index 000000000000..df2a210f927d --- /dev/null +++ b/media-libs/opencv/opencv-4.4.0-r1.ebuild @@ -0,0 +1,559 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8,9} ) +CMAKE_ECLASS=cmake +inherit java-pkg-opt-2 java-ant-2 cmake-multilib python-r1 toolchain-funcs + +DESCRIPTION="A collection of algorithms and sample code for various computer vision problems" +HOMEPAGE="https://opencv.org" +TINY_DNN_PV="1.0.0a3" +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz + dnnsamples? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-res10_300x300-caffeemodel.tar.gz ) + download? ( https://github.com/rossbridger/opencv-extdep/archive/${PV}.tar.gz -> ${P}_extdep.tar.gz ) + contrib? ( + https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz + contribdnn? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-face_landmark_model.tar.gz ) + contribxfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz ) + )" + +LICENSE="BSD" +SLOT="0/${PV}" # subslot = libopencv* soname version +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" +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" + +# The following lines are shamelessly stolen from ffmpeg-9999.ebuild with modifications +ARM_CPU_FEATURES=( + cpu_flags_arm_neon:NEON + cpu_flags_arm_vfpv3:VFPV3 +) +PPC_CPU_FEATURES=( + cpu_flags_ppc_vsx:VSX + cpu_flags_ppc_vsx3:VSX3 +) +X86_CPU_FEATURES_RAW=( + avx:AVX + avx2:AVX2 + avx512f:AVX_512F + f16c:FP16 + fma3:FMA3 + popcnt:POPCNT + sse:SSE + sse2:SSE2 + sse3:SSE3 + ssse3:SSSE3 + sse4_1:SSE4_1 + sse4_2:SSE4_2 +) +X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} ) +CPU_FEATURES_MAP=( + ${ARM_CPU_FEATURES[@]} + ${PPC_CPU_FEATURES[@]} + ${X86_CPU_FEATURES[@]} +) +IUSE="${IUSE} ${CPU_FEATURES_MAP[@]%:*}" + +# OpenGL needs gtk or Qt installed to activate, otherwise build system +# will silently disable it Wwithout the user knowing, which defeats the +# purpose of the opengl use flag. +REQUIRED_USE=" + cuda? ( tesseract? ( opencl ) ) + dnnsamples? ( examples ) + gflags? ( contrib ) + glog? ( contrib ) + contribcvv? ( contrib qt5 ) + contribdnn? ( contrib ) + contribfreetype? ( contrib ) + contribhdf? ( contrib ) + contribovis? ( contrib ) + contribsfm? ( contrib eigen gflags glog ) + contribxfeatures2d? ( contrib download ) + java? ( python ) + opengl? ( qt5 ) + python? ( ${PYTHON_REQUIRED_USE} ) + tesseract? ( contrib ) + ?? ( gtk3 qt5 )" + +# The following logic is intrinsic in the build system, but we do not enforce +# it on the useflags since this just blocks emerging pointlessly: +# openmp? ( !threads ) + +RDEPEND=" + app-arch/bzip2[${MULTILIB_USEDEP}] + dev-libs/protobuf:=[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + cuda? ( dev-util/nvidia-cuda-toolkit:0= ) + contribhdf? ( sci-libs/hdf5:= ) + contribfreetype? ( + media-libs/freetype:2[${MULTILIB_USEDEP}] + media-libs/harfbuzz:=[${MULTILIB_USEDEP}] + ) + contribovis? ( dev-games/ogre:0/1.12 ) + ffmpeg? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] ) + gdal? ( sci-libs/gdal:= ) + gflags? ( dev-cpp/gflags[${MULTILIB_USEDEP}] ) + glog? ( dev-cpp/glog[${MULTILIB_USEDEP}] ) + gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) + gstreamer? ( + media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] + media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] + ) + gtk3? ( + dev-libs/glib:2[${MULTILIB_USEDEP}] + x11-libs/gtk+:3[${MULTILIB_USEDEP}] + ) + ieee1394? ( + media-libs/libdc1394:=[${MULTILIB_USEDEP}] + sys-libs/libraw1394[${MULTILIB_USEDEP}] + ) + java? ( >=virtual/jre-1.6:* ) + jpeg? ( virtual/jpeg:0[${MULTILIB_USEDEP}] ) + jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] ) + lapack? ( virtual/lapack ) + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) + openexr? ( media-libs/openexr[${MULTILIB_USEDEP}] ) + opengl? ( + virtual/opengl[${MULTILIB_USEDEP}] + virtual/glu[${MULTILIB_USEDEP}] + ) + png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] ) + python? ( + ${PYTHON_DEPS} + dev-python/numpy[${PYTHON_USEDEP}] + ) + qt5? ( + dev-qt/qtgui:5= + dev-qt/qtwidgets:5= + dev-qt/qttest:5= + dev-qt/qtconcurrent:5= + opengl? ( dev-qt/qtopengl:5= ) + ) + tesseract? ( app-text/tesseract[opencl=,${MULTILIB_USEDEP}] ) + threads? ( dev-cpp/tbb[${MULTILIB_USEDEP}] ) + tiff? ( media-libs/tiff:0[${MULTILIB_USEDEP}] ) + v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] ) + vaapi? ( x11-libs/libva[${MULTILIB_USEDEP}] ) + vtk? ( sci-libs/vtk[rendering] ) + webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] ) + xine? ( media-libs/xine-lib )" +# bug #747949 for eigen (eigen-3.3.8 was broken upstream) +DEPEND="${RDEPEND} + eigen? ( + || ( + >=dev-cpp/eigen-3.3.8-r1:3 + =virtual/jdk-1.6 )" +BDEPEND="virtual/pkgconfig" + +MULTILIB_WRAPPED_HEADERS=( + # [opencv4] + /usr/include/opencv4/opencv2/cvconfig.h + /usr/include/opencv4/opencv2/opencv_modules.hpp + # [cudev] + /usr/include/opencv4/opencv2/cudaarithm.hpp + /usr/include/opencv4/opencv2/cudabgsegm.hpp + /usr/include/opencv4/opencv2/cudacodec.hpp + /usr/include/opencv4/opencv2/cudafeatures2d.hpp + /usr/include/opencv4/opencv2/cudafilters.hpp + /usr/include/opencv4/opencv2/cudaimgproc.hpp + /usr/include/opencv4/opencv2/cudalegacy.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVBroxOpticalFlow.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVHaarObjectDetection.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCV.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVPyramid.hpp + /usr/include/opencv4/opencv2/cudalegacy/NPP_staging.hpp + /usr/include/opencv4/opencv2/cudaobjdetect.hpp + /usr/include/opencv4/opencv2/cudaoptflow.hpp + /usr/include/opencv4/opencv2/cudastereo.hpp + /usr/include/opencv4/opencv2/cudawarping.hpp + /usr/include/opencv4/opencv2/cudev/block/block.hpp + /usr/include/opencv4/opencv2/cudev/block/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/block/detail/reduce_key_val.hpp + /usr/include/opencv4/opencv2/cudev/block/dynamic_smem.hpp + /usr/include/opencv4/opencv2/cudev/block/reduce.hpp + /usr/include/opencv4/opencv2/cudev/block/scan.hpp + /usr/include/opencv4/opencv2/cudev/block/vec_distance.hpp + /usr/include/opencv4/opencv2/cudev/common.hpp + /usr/include/opencv4/opencv2/cudev/expr/binary_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/binary_op.hpp + /usr/include/opencv4/opencv2/cudev/expr/color.hpp + /usr/include/opencv4/opencv2/cudev/expr/deriv.hpp + /usr/include/opencv4/opencv2/cudev/expr/expr.hpp + /usr/include/opencv4/opencv2/cudev/expr/per_element_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/reduction.hpp + /usr/include/opencv4/opencv2/cudev/expr/unary_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/unary_op.hpp + /usr/include/opencv4/opencv2/cudev/expr/warping.hpp + /usr/include/opencv4/opencv2/cudev/functional/color_cvt.hpp + /usr/include/opencv4/opencv2/cudev/functional/detail/color_cvt.hpp + /usr/include/opencv4/opencv2/cudev/functional/functional.hpp + /usr/include/opencv4/opencv2/cudev/functional/tuple_adapter.hpp + /usr/include/opencv4/opencv2/cudev/grid/copy.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/copy.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/histogram.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/integral.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/minmaxloc.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_down.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_up.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_column.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_row.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/split_merge.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/transform.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/transpose.hpp + /usr/include/opencv4/opencv2/cudev/grid/histogram.hpp + /usr/include/opencv4/opencv2/cudev/grid/integral.hpp + /usr/include/opencv4/opencv2/cudev/grid/pyramids.hpp + /usr/include/opencv4/opencv2/cudev/grid/reduce.hpp + /usr/include/opencv4/opencv2/cudev/grid/reduce_to_vec.hpp + /usr/include/opencv4/opencv2/cudev/grid/split_merge.hpp + /usr/include/opencv4/opencv2/cudev/grid/transform.hpp + /usr/include/opencv4/opencv2/cudev/grid/transpose.hpp + /usr/include/opencv4/opencv2/cudev.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/constant.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/deriv.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/detail/gpumat.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/extrapolation.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/glob.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/gpumat.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/interpolation.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/lut.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/mask.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/remap.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/resize.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/texture.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/traits.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/transform.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/warping.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/zip.hpp + /usr/include/opencv4/opencv2/cudev/util/atomic.hpp + /usr/include/opencv4/opencv2/cudev/util/detail/tuple.hpp + /usr/include/opencv4/opencv2/cudev/util/detail/type_traits.hpp + /usr/include/opencv4/opencv2/cudev/util/limits.hpp + /usr/include/opencv4/opencv2/cudev/util/saturate_cast.hpp + /usr/include/opencv4/opencv2/cudev/util/simd_functions.hpp + /usr/include/opencv4/opencv2/cudev/util/tuple.hpp + /usr/include/opencv4/opencv2/cudev/util/type_traits.hpp + /usr/include/opencv4/opencv2/cudev/util/vec_math.hpp + /usr/include/opencv4/opencv2/cudev/util/vec_traits.hpp + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce_key_val.hpp + /usr/include/opencv4/opencv2/cudev/warp/reduce.hpp + /usr/include/opencv4/opencv2/cudev/warp/scan.hpp + /usr/include/opencv4/opencv2/cudev/warp/shuffle.hpp + /usr/include/opencv4/opencv2/cudev/warp/warp.hpp + # [contrib_cvv] + /usr/include/opencv4/opencv2/cvv/call_meta_data.hpp + /usr/include/opencv4/opencv2/cvv/cvv.hpp + /usr/include/opencv4/opencv2/cvv/debug_mode.hpp + /usr/include/opencv4/opencv2/cvv/dmatch.hpp + /usr/include/opencv4/opencv2/cvv/filter.hpp + /usr/include/opencv4/opencv2/cvv/final_show.hpp + /usr/include/opencv4/opencv2/cvv.hpp + /usr/include/opencv4/opencv2/cvv/show_image.hpp + # [contrib_hdf] + /usr/include/opencv4/opencv2/hdf/hdf5.hpp + /usr/include/opencv4/opencv2/hdf.hpp + # [contrib_ovis] + /usr/include/opencv4/opencv2/ovis.hpp + # [vtk] + /usr/include/opencv4/opencv2/viz.hpp + /usr/include/opencv4/opencv2/viz/types.hpp + /usr/include/opencv4/opencv2/viz/viz3d.hpp + /usr/include/opencv4/opencv2/viz/vizcore.hpp + /usr/include/opencv4/opencv2/viz/widget_accessor.hpp + /usr/include/opencv4/opencv2/viz/widgets.hpp +) + +PATCHES=( + "${FILESDIR}"/${PN}-3.4.0-disable-download.patch + "${FILESDIR}"/${PN}-3.4.1-cuda-add-relaxed-constexpr.patch + "${FILESDIR}"/${PN}-4.1.2-opencl-license.patch + "${FILESDIR}"/${PN}-4.4.0-disable-native-cpuflag-detect.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + java-pkg-opt-2_pkg_setup +} + +src_prepare() { + cmake_src_prepare + + # remove bundled stuff + rm -rf 3rdparty || die "Removing 3rd party components failed" + sed -e '/add_subdirectory(.*3rdparty.*)/ d' \ + -i CMakeLists.txt cmake/*cmake || die + + if use dnnsamples; then + mv "${WORKDIR}/res10_300x300_ssd_iter_140000.caffemodel" "${WORKDIR}/${P}/samples/dnn/" || die + fi + + if use contrib; then + cd "${WORKDIR}/${PN}_contrib-${PV}" || die + if use contribxfeatures2d; then + mv "${WORKDIR}"/*.i "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die + fi + fi + + if use download; then + mv "${WORKDIR}/${PN}-extdep-${PV}" "${WORKDIR}/${P}/.cache/" || die + fi + + java-pkg-opt-2_src_prepare + + # this really belongs in src_prepare() too + JAVA_ANT_ENCODING="iso-8859-1" + # set encoding so even this cmake build will pick it up. + export ANT_OPTS+=" -Dfile.encoding=iso-8859-1" + java-ant-2_src_configure +} + +multilib_src_configure() { + # please dont sort here, order is the same as in CMakeLists.txt + GLOBALCMAKEARGS=( + # Optional 3rd party components + # =================================================== + -DENABLE_DOWNLOAD=$(usex download) + -DWITH_QUIRC=OFF # Do not have dependencies + -DWITH_1394=$(usex ieee1394) + # -DWITH_AVFOUNDATION=OFF # IOS + -DWITH_VTK=$(multilib_native_usex vtk) + -DWITH_EIGEN=$(usex eigen) + -DWITH_VFW=OFF # Video windows support + -DWITH_FFMPEG=$(usex ffmpeg) + -DWITH_GSTREAMER=$(usex gstreamer) + -DWITH_GSTREAMER_0_10=OFF # Don't want this + -DWITH_GTK=$(usex gtk3) + -DWITH_GTK_2_X=OFF # only want gtk3 nowadays + -DWITH_IPP=OFF + # Jasper was removed from tree because of security problems. + # Upstream were/are making progress. We use openjpeg instead. + # bug 734284 + -DWITH_JASPER=OFF + -DWITH_JPEG=$(usex jpeg) + -DWITH_OPENJPEG=$(usex jpeg2k) + -DWITH_WEBP=$(usex webp) + -DWITH_OPENEXR=$(usex openexr) + -DWITH_OPENGL=$(usex opengl) + -DWITH_OPENVX=OFF + -DWITH_OPENNI=OFF # Not packaged + -DWITH_OPENNI2=OFF # Not packaged + -DWITH_PNG=$(usex png) + -DWITH_GDCM=OFF + -DWITH_PVAPI=OFF + -DWITH_GIGEAPI=OFF + -DWITH_ARAVIS=OFF + -DWITH_QT=$(multilib_native_usex qt5 5 OFF) + -DWITH_WIN32UI=OFF # Windows only + # -DWITH_QUICKTIME=OFF + # -DWITH_QTKIT=OFF + -DWITH_TBB=$(usex threads) + -DWITH_OPENMP=$(usex openmp) + -DWITH_CSTRIPES=OFF + -DWITH_PTHREADS_PF=ON + -DWITH_TIFF=$(usex tiff) + -DWITH_UNICAP=OFF # Not packaged + -DWITH_V4L=$(usex v4l) + -DWITH_LIBV4L=$(usex v4l) + # -DWITH_DSHOW=ON # direct show supp + -DWITH_MSMF=OFF + -DWITH_XIMEA=OFF # Windows only + -DWITH_XINE=$(multilib_native_usex xine) + -DWITH_CLP=OFF + -DWITH_OPENCL=$(usex opencl) + -DWITH_OPENCL_SVM=OFF + -DWITH_OPENCLAMDFFT=$(usex opencl) + -DWITH_OPENCLAMDBLAS=$(usex opencl) + -DWITH_DIRECTX=OFF + -DWITH_INTELPERC=OFF + -DWITH_IPP_A=OFF + -DWITH_MATLAB=OFF + -DWITH_VA=$(usex vaapi) + -DWITH_VA_INTEL=$(usex vaapi) + -DWITH_GDAL=$(multilib_native_usex gdal) + -DWITH_GPHOTO2=$(usex gphoto2) + -DWITH_LAPACK=$(multilib_native_usex lapack) + -DWITH_ITT=OFF # 3dparty libs itt_notify + # =================================================== + # CUDA build components: nvidia-cuda-toolkit takes care of GCC version + # =================================================== + -DWITH_CUDA=$(multilib_native_usex cuda) + -DWITH_CUBLAS=$(multilib_native_usex cuda) + -DWITH_CUFFT=$(multilib_native_usex cuda) + -DWITH_NVCUVID=OFF + # -DWITH_NVCUVID=$(usex cuda) + -DCUDA_NPP_LIBRARY_ROOT_DIR=$(usex cuda "${EPREFIX}/opt/cuda" "") + # =================================================== + # OpenCV build components + # =================================================== + -DBUILD_SHARED_LIBS=ON + -DBUILD_JAVA=$(multilib_native_usex java) # Ant needed, no compile flag + -DBUILD_ANDROID_EXAMPLES=OFF + -DBUILD_opencv_apps=$(usex opencvapps ON OFF) + -DBUILD_DOCS=OFF # Doesn't install anyways. + -DBUILD_EXAMPLES=$(multilib_native_usex examples) + -DBUILD_PERF_TESTS=OFF + -DBUILD_TESTS=$(multilib_native_usex testprograms) + -DBUILD_WITH_DEBUG_INFO=$(usex debug) + # -DBUILD_WITH_STATIC_CRT=OFF + -DBUILD_WITH_DYNAMIC_IPP=OFF + -DBUILD_FAT_JAVA_LIB=OFF + # -DBUILD_ANDROID_SERVICE=OFF + -DBUILD_CUDA_STUBS=$(multilib_native_usex cuda) + -DOPENCV_EXTRA_MODULES_PATH=$(usex contrib "${WORKDIR}/opencv_contrib-${PV}/modules" "") + # =================================================== + # OpenCV installation options + # =================================================== + -DINSTALL_CREATE_DISTRIB=OFF + -DINSTALL_C_EXAMPLES=$(multilib_native_usex examples) + -DINSTALL_TESTS=$(multilib_native_usex testprograms) + -DINSTALL_PYTHON_EXAMPLES=$(multilib_native_usex examples) + # -DINSTALL_ANDROID_EXAMPLES=OFF + -DINSTALL_TO_MANGLED_PATHS=OFF + -DOPENCV_GENERATE_PKGCONFIG=ON + # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX} + # to set its destination libdir + -DLIB_SUFFIX= + # =================================================== + # OpenCV build options + # =================================================== + -DENABLE_CCACHE=OFF + # bug 733796, but PCH is a risky game in CMake anyway + -DENABLE_PRECOMPILED_HEADERS=OFF + -DENABLE_SOLUTION_FOLDERS=OFF + -DENABLE_PROFILING=OFF + -DENABLE_COVERAGE=OFF + + -DHAVE_opencv_java=$(multilib_native_usex java YES NO) + -DENABLE_NOISY_WARNINGS=OFF + -DOPENCV_WARNINGS_ARE_ERRORS=OFF + -DENABLE_IMPL_COLLECTION=OFF + -DENABLE_INSTRUMENTATION=OFF + -DGENERATE_ABI_DESCRIPTOR=OFF + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF + -DENABLE_LTO=$(usex lto) + # =================================================== + # things we want to be hard off or not yet figured out + # =================================================== + -DBUILD_PACKAGE=OFF + # =================================================== + # Not building protobuf but update files bug #631418 + # =================================================== + -DBUILD_PROTOBUF=OFF + -DPROTOBUF_UPDATE_FILES=ON + # =================================================== + # things we want to be hard enabled not worth useflag + # =================================================== + -DCMAKE_SKIP_RPATH=ON + -DOPENCV_DOC_INSTALL_PATH= + -DBUILD_opencv_features2d=$(usex features2d ON OFF) + ) + + # ================================================== + # cpu flags, should solve 633900 + #=================================================== + local CPU_BASELINE="" + for i in "${CPU_FEATURES_MAP[@]}" ; do + use ${i%:*} && CPU_BASELINE="${CPU_BASELINE}${i#*:};" + done + + GLOBALCMAKEARGS+=( + -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON + -DCPU_BASELINE=${CPU_BASELINE} + -DCPU_DISPATCH= + ) + + # =================================================== + # OpenCV Contrib Modules + # =================================================== + if use contrib; then + GLOBALCMAKEARGS+=( + -DBUILD_opencv_dnn=$(usex contribdnn ON OFF) + -DTINYDNN_ROOT="${WORKDIR}/tiny-dnn-${TINY_DNN_PV}" + -DBUILD_opencv_dnns_easily_fooled=OFF + -DBUILD_opencv_xfeatures2d=$(usex contribxfeatures2d ON OFF) + -DBUILD_opencv_cvv=$(usex contribcvv ON OFF) + -DBUILD_opencv_hdf=$(multilib_native_usex contribhdf ON OFF) + -DBUILD_opencv_sfm=$(usex contribsfm ON OFF) + -DBUILD_opencv_freetype=$(usex contribfreetype ON OFF) + -DBUILD_opencv_ovis=$(usex contribovis ON OFF) + ) + + if multilib_is_native_abi; then + GLOBALCMAKEARGS+=( + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=$(usex !tesseract) + ) + else + GLOBALCMAKEARGS+=( + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=ON + ) + fi + fi + + # workaround for bug 413429 + tc-export CC CXX + + local mycmakeargs=( + ${GLOBALCMAKEARGS[@]} + -DPYTHON_EXECUTABLE=OFF + -DINSTALL_PYTHON_EXAMPLES=OFF + -DBUILD_opencv_python2=OFF + -DBUILD_opencv_python3=OFF + ) + + cmake_src_configure + + # Copy face_land_model to ${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH} + # TODO patch ocv_download to copy files into destination dirs + if use contribdnn; then + mkdir -p "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die + cp "${WORKDIR}"/face_landmark_model.dat "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die + fi + +} + +python_module_compile() { + local BUILD_DIR="${orig_BUILD_DIR}" + local mycmakeargs=( ${GLOBALCMAKEARGS[@]} ) + + # Set all python variables to load the correct Gentoo paths + mycmakeargs+=( + # python_setup alters PATH and sets this as wrapper + # to the correct interpreter we are building for + -DPYTHON_DEFAULT_EXECUTABLE=${EPYTHON} + -DINSTALL_PYTHON_EXAMPLES=$(usex examples) + ) + + # Regenerate cache file. Can't use rebuild_cache as it won't + # have the Gentoo specific options. + rm -rf CMakeCache.txt || die "rm failed" + cmake_src_configure + cmake_src_compile + cmake_src_install + + # Remove compiled binary so new version compiles + # Avoid conflicts with new module builds as build system doesn't + # really support it. + rm -rf modules/python2 || die "rm failed" + + python_optimize "${ED}"/$(python_get_sitedir) +} + +multilib_src_install() { + cmake_src_install + + # Build and install the python modules for all targets + if multilib_is_native_abi && use python; then + local orig_BUILD_DIR="${BUILD_DIR}" + python_foreach_impl python_module_compile + fi +} diff --git a/media-libs/opencv/opencv-4.5.0.ebuild b/media-libs/opencv/opencv-4.5.0.ebuild new file mode 100644 index 000000000000..c9bf0e907840 --- /dev/null +++ b/media-libs/opencv/opencv-4.5.0.ebuild @@ -0,0 +1,567 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8,9} ) +CMAKE_ECLASS=cmake +inherit java-pkg-opt-2 java-ant-2 cmake-multilib python-r1 toolchain-funcs + +DESCRIPTION="A collection of algorithms and sample code for various computer vision problems" +HOMEPAGE="https://opencv.org" +TINY_DNN_PV="1.0.0a3" +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz + dnnsamples? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-res10_300x300-caffeemodel.tar.gz ) + download? ( https://github.com/rossbridger/opencv-extdep/archive/4.4.0.tar.gz -> ${PN}-4.4.0_extdep.tar.gz ) + contrib? ( + https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz + contribdnn? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-face_landmark_model.tar.gz ) + contribxfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz ) + )" + +LICENSE="Apache-2.0" +SLOT="0/${PV}" # subslot = libopencv* soname version +KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 x86" +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" + +# The following lines are shamelessly stolen from ffmpeg-9999.ebuild with modifications +ARM_CPU_FEATURES=( + cpu_flags_arm_neon:NEON + cpu_flags_arm_vfpv3:VFPV3 +) +PPC_CPU_FEATURES=( + cpu_flags_ppc_vsx:VSX + cpu_flags_ppc_vsx3:VSX3 +) +X86_CPU_FEATURES_RAW=( + avx:AVX + avx2:AVX2 + avx512f:AVX_512F + f16c:FP16 + fma3:FMA3 + popcnt:POPCNT + sse:SSE + sse2:SSE2 + sse3:SSE3 + ssse3:SSSE3 + sse4_1:SSE4_1 + sse4_2:SSE4_2 +) +X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} ) +CPU_FEATURES_MAP=( + ${ARM_CPU_FEATURES[@]} + ${PPC_CPU_FEATURES[@]} + ${X86_CPU_FEATURES[@]} +) +IUSE="${IUSE} ${CPU_FEATURES_MAP[@]%:*}" + +# OpenGL needs gtk or Qt installed to activate, otherwise build system +# will silently disable it Wwithout the user knowing, which defeats the +# purpose of the opengl use flag. +REQUIRED_USE=" + cuda? ( tesseract? ( opencl ) ) + dnnsamples? ( examples ) + gflags? ( contrib ) + glog? ( contrib ) + contribcvv? ( contrib qt5 ) + contribdnn? ( contrib ) + contribfreetype? ( contrib ) + contribhdf? ( contrib ) + contribovis? ( contrib ) + contribsfm? ( contrib eigen gflags glog ) + contribxfeatures2d? ( contrib download ) + examples? ( contribdnn ) + java? ( python ) + opengl? ( qt5 ) + python? ( ${PYTHON_REQUIRED_USE} ) + tesseract? ( contrib ) + ?? ( gtk3 qt5 )" + +# The following logic is intrinsic in the build system, but we do not enforce +# it on the useflags since this just blocks emerging pointlessly: +# openmp? ( !threads ) + +RDEPEND=" + app-arch/bzip2[${MULTILIB_USEDEP}] + dev-libs/protobuf:=[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + cuda? ( dev-util/nvidia-cuda-toolkit:0= ) + contribhdf? ( sci-libs/hdf5:= ) + contribfreetype? ( + media-libs/freetype:2[${MULTILIB_USEDEP}] + media-libs/harfbuzz:=[${MULTILIB_USEDEP}] + ) + contribovis? ( dev-games/ogre:0/1.12 ) + ffmpeg? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] ) + gdal? ( sci-libs/gdal:= ) + gflags? ( dev-cpp/gflags[${MULTILIB_USEDEP}] ) + glog? ( dev-cpp/glog[${MULTILIB_USEDEP}] ) + gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) + gstreamer? ( + media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] + media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] + ) + gtk3? ( + dev-libs/glib:2[${MULTILIB_USEDEP}] + x11-libs/gtk+:3[${MULTILIB_USEDEP}] + ) + ieee1394? ( + media-libs/libdc1394:=[${MULTILIB_USEDEP}] + sys-libs/libraw1394[${MULTILIB_USEDEP}] + ) + java? ( >=virtual/jre-1.6:* ) + jpeg? ( virtual/jpeg:0[${MULTILIB_USEDEP}] ) + jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] ) + lapack? ( + virtual/cblas + virtual/lapack + virtual/lapacke + ) + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) + openexr? ( media-libs/openexr[${MULTILIB_USEDEP}] ) + opengl? ( + virtual/opengl[${MULTILIB_USEDEP}] + virtual/glu[${MULTILIB_USEDEP}] + ) + png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] ) + python? ( + ${PYTHON_DEPS} + dev-python/numpy[${PYTHON_USEDEP}] + ) + qt5? ( + dev-qt/qtgui:5= + dev-qt/qtwidgets:5= + dev-qt/qttest:5= + dev-qt/qtconcurrent:5= + opengl? ( dev-qt/qtopengl:5= ) + ) + tesseract? ( app-text/tesseract[opencl=,${MULTILIB_USEDEP}] ) + threads? ( dev-cpp/tbb[${MULTILIB_USEDEP}] ) + tiff? ( media-libs/tiff:0[${MULTILIB_USEDEP}] ) + v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] ) + vaapi? ( x11-libs/libva[${MULTILIB_USEDEP}] ) + vtk? ( sci-libs/vtk[rendering] ) + webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] ) + xine? ( media-libs/xine-lib )" +# bug #747949 for eigen (eigen-3.3.8 was broken upstream) +DEPEND="${RDEPEND} + eigen? ( + || ( + >=dev-cpp/eigen-3.3.8-r1:3 + =virtual/jdk-1.6 )" +BDEPEND="virtual/pkgconfig" + +MULTILIB_WRAPPED_HEADERS=( + # [opencv4] + /usr/include/opencv4/opencv2/cvconfig.h + /usr/include/opencv4/opencv2/opencv_modules.hpp + # [cudev] + /usr/include/opencv4/opencv2/cudaarithm.hpp + /usr/include/opencv4/opencv2/cudabgsegm.hpp + /usr/include/opencv4/opencv2/cudacodec.hpp + /usr/include/opencv4/opencv2/cudafeatures2d.hpp + /usr/include/opencv4/opencv2/cudafilters.hpp + /usr/include/opencv4/opencv2/cudaimgproc.hpp + /usr/include/opencv4/opencv2/cudalegacy.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVBroxOpticalFlow.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVHaarObjectDetection.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCV.hpp + /usr/include/opencv4/opencv2/cudalegacy/NCVPyramid.hpp + /usr/include/opencv4/opencv2/cudalegacy/NPP_staging.hpp + /usr/include/opencv4/opencv2/cudaobjdetect.hpp + /usr/include/opencv4/opencv2/cudaoptflow.hpp + /usr/include/opencv4/opencv2/cudastereo.hpp + /usr/include/opencv4/opencv2/cudawarping.hpp + /usr/include/opencv4/opencv2/cudev/block/block.hpp + /usr/include/opencv4/opencv2/cudev/block/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/block/detail/reduce_key_val.hpp + /usr/include/opencv4/opencv2/cudev/block/dynamic_smem.hpp + /usr/include/opencv4/opencv2/cudev/block/reduce.hpp + /usr/include/opencv4/opencv2/cudev/block/scan.hpp + /usr/include/opencv4/opencv2/cudev/block/vec_distance.hpp + /usr/include/opencv4/opencv2/cudev/common.hpp + /usr/include/opencv4/opencv2/cudev/expr/binary_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/binary_op.hpp + /usr/include/opencv4/opencv2/cudev/expr/color.hpp + /usr/include/opencv4/opencv2/cudev/expr/deriv.hpp + /usr/include/opencv4/opencv2/cudev/expr/expr.hpp + /usr/include/opencv4/opencv2/cudev/expr/per_element_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/reduction.hpp + /usr/include/opencv4/opencv2/cudev/expr/unary_func.hpp + /usr/include/opencv4/opencv2/cudev/expr/unary_op.hpp + /usr/include/opencv4/opencv2/cudev/expr/warping.hpp + /usr/include/opencv4/opencv2/cudev/functional/color_cvt.hpp + /usr/include/opencv4/opencv2/cudev/functional/detail/color_cvt.hpp + /usr/include/opencv4/opencv2/cudev/functional/functional.hpp + /usr/include/opencv4/opencv2/cudev/functional/tuple_adapter.hpp + /usr/include/opencv4/opencv2/cudev/grid/copy.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/copy.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/histogram.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/integral.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/minmaxloc.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_down.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/pyr_up.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_column.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/reduce_to_row.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/split_merge.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/transform.hpp + /usr/include/opencv4/opencv2/cudev/grid/detail/transpose.hpp + /usr/include/opencv4/opencv2/cudev/grid/histogram.hpp + /usr/include/opencv4/opencv2/cudev/grid/integral.hpp + /usr/include/opencv4/opencv2/cudev/grid/pyramids.hpp + /usr/include/opencv4/opencv2/cudev/grid/reduce.hpp + /usr/include/opencv4/opencv2/cudev/grid/reduce_to_vec.hpp + /usr/include/opencv4/opencv2/cudev/grid/split_merge.hpp + /usr/include/opencv4/opencv2/cudev/grid/transform.hpp + /usr/include/opencv4/opencv2/cudev/grid/transpose.hpp + /usr/include/opencv4/opencv2/cudev.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/constant.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/deriv.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/detail/gpumat.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/extrapolation.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/glob.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/gpumat.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/interpolation.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/lut.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/mask.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/remap.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/resize.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/texture.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/traits.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/transform.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/warping.hpp + /usr/include/opencv4/opencv2/cudev/ptr2d/zip.hpp + /usr/include/opencv4/opencv2/cudev/util/atomic.hpp + /usr/include/opencv4/opencv2/cudev/util/detail/tuple.hpp + /usr/include/opencv4/opencv2/cudev/util/detail/type_traits.hpp + /usr/include/opencv4/opencv2/cudev/util/limits.hpp + /usr/include/opencv4/opencv2/cudev/util/saturate_cast.hpp + /usr/include/opencv4/opencv2/cudev/util/simd_functions.hpp + /usr/include/opencv4/opencv2/cudev/util/tuple.hpp + /usr/include/opencv4/opencv2/cudev/util/type_traits.hpp + /usr/include/opencv4/opencv2/cudev/util/vec_math.hpp + /usr/include/opencv4/opencv2/cudev/util/vec_traits.hpp + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce.hpp + /usr/include/opencv4/opencv2/cudev/warp/detail/reduce_key_val.hpp + /usr/include/opencv4/opencv2/cudev/warp/reduce.hpp + /usr/include/opencv4/opencv2/cudev/warp/scan.hpp + /usr/include/opencv4/opencv2/cudev/warp/shuffle.hpp + /usr/include/opencv4/opencv2/cudev/warp/warp.hpp + # [contrib_cvv] + /usr/include/opencv4/opencv2/cvv/call_meta_data.hpp + /usr/include/opencv4/opencv2/cvv/cvv.hpp + /usr/include/opencv4/opencv2/cvv/debug_mode.hpp + /usr/include/opencv4/opencv2/cvv/dmatch.hpp + /usr/include/opencv4/opencv2/cvv/filter.hpp + /usr/include/opencv4/opencv2/cvv/final_show.hpp + /usr/include/opencv4/opencv2/cvv.hpp + /usr/include/opencv4/opencv2/cvv/show_image.hpp + # [contrib_hdf] + /usr/include/opencv4/opencv2/hdf/hdf5.hpp + /usr/include/opencv4/opencv2/hdf.hpp + # [contrib_ovis] + /usr/include/opencv4/opencv2/ovis.hpp + # [vtk] + /usr/include/opencv4/opencv2/viz.hpp + /usr/include/opencv4/opencv2/viz/types.hpp + /usr/include/opencv4/opencv2/viz/viz3d.hpp + /usr/include/opencv4/opencv2/viz/vizcore.hpp + /usr/include/opencv4/opencv2/viz/widget_accessor.hpp + /usr/include/opencv4/opencv2/viz/widgets.hpp +) + +PATCHES=( + "${FILESDIR}"/${PN}-3.4.0-disable-download.patch + "${FILESDIR}"/${PN}-3.4.1-cuda-add-relaxed-constexpr.patch + "${FILESDIR}"/${PN}-4.1.2-opencl-license.patch + "${FILESDIR}"/${PN}-4.4.0-disable-native-cpuflag-detect.patch + "${FILESDIR}"/${PN}-4.5.0-link-with-cblas-for-lapack.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + java-pkg-opt-2_pkg_setup +} + +src_prepare() { + cmake_src_prepare + + # remove bundled stuff + rm -r 3rdparty || die "Removing 3rd party components failed" + sed -e '/add_subdirectory(.*3rdparty.*)/ d' \ + -i CMakeLists.txt cmake/*cmake || die + + if use dnnsamples; then + mv "${WORKDIR}/res10_300x300_ssd_iter_140000.caffemodel" "${WORKDIR}/${P}/samples/dnn/" || die + fi + + if use contrib; then + cd "${WORKDIR}/${PN}_contrib-${PV}" || die + if use contribxfeatures2d; then + mv "${WORKDIR}"/*.i "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die + fi + fi + + if use download; then + mv "${WORKDIR}/${PN}-extdep-4.4.0" "${WORKDIR}/${P}/.cache/" || die + fi + + java-pkg-opt-2_src_prepare + + # this really belongs in src_prepare() too + JAVA_ANT_ENCODING="iso-8859-1" + # set encoding so even this cmake build will pick it up. + export ANT_OPTS+=" -Dfile.encoding=iso-8859-1" + java-ant-2_src_configure +} + +multilib_src_configure() { + # please dont sort here, order is the same as in CMakeLists.txt + GLOBALCMAKEARGS=( + # Optional 3rd party components + # =================================================== + -DENABLE_DOWNLOAD=$(usex download) + -DWITH_QUIRC=OFF # Do not have dependencies + -DWITH_1394=$(usex ieee1394) + # -DWITH_AVFOUNDATION=OFF # IOS + -DWITH_VTK=$(multilib_native_usex vtk) + -DWITH_EIGEN=$(usex eigen) + -DWITH_VFW=OFF # Video windows support + -DWITH_FFMPEG=$(usex ffmpeg) + -DWITH_GSTREAMER=$(usex gstreamer) + -DWITH_GSTREAMER_0_10=OFF # Don't want this + -DWITH_GTK=$(usex gtk3) + -DWITH_GTK_2_X=OFF # only want gtk3 nowadays + -DWITH_IPP=OFF + # Jasper was removed from tree because of security problems. + # Upstream were/are making progress. We use openjpeg instead. + # bug 734284 + -DWITH_JASPER=OFF + -DWITH_JPEG=$(usex jpeg) + -DWITH_OPENJPEG=$(usex jpeg2k) + -DWITH_WEBP=$(usex webp) + -DWITH_OPENEXR=$(usex openexr) + -DWITH_OPENGL=$(usex opengl) + -DWITH_OPENVX=OFF + -DWITH_OPENNI=OFF # Not packaged + -DWITH_OPENNI2=OFF # Not packaged + -DWITH_PNG=$(usex png) + -DWITH_GDCM=OFF + -DWITH_PVAPI=OFF + -DWITH_GIGEAPI=OFF + -DWITH_ARAVIS=OFF + -DWITH_QT=$(multilib_native_usex qt5 5 OFF) + -DWITH_WIN32UI=OFF # Windows only + # -DWITH_QUICKTIME=OFF + # -DWITH_QTKIT=OFF + -DWITH_TBB=$(usex threads) + -DWITH_OPENMP=$(usex openmp) + -DWITH_CSTRIPES=OFF + -DWITH_PTHREADS_PF=ON + -DWITH_TIFF=$(usex tiff) + -DWITH_UNICAP=OFF # Not packaged + -DWITH_V4L=$(usex v4l) + -DWITH_LIBV4L=$(usex v4l) + # -DWITH_DSHOW=ON # direct show supp + -DWITH_MSMF=OFF + -DWITH_XIMEA=OFF # Windows only + -DWITH_XINE=$(multilib_native_usex xine) + -DWITH_CLP=OFF + -DWITH_OPENCL=$(usex opencl) + -DWITH_OPENCL_SVM=OFF + -DWITH_OPENCLAMDFFT=$(usex opencl) + -DWITH_OPENCLAMDBLAS=$(usex opencl) + -DWITH_DIRECTX=OFF + -DWITH_INTELPERC=OFF + -DWITH_IPP_A=OFF + -DWITH_MATLAB=OFF + -DWITH_VA=$(usex vaapi) + -DWITH_VA_INTEL=$(usex vaapi) + -DWITH_GDAL=$(multilib_native_usex gdal) + -DWITH_GPHOTO2=$(usex gphoto2) + -DWITH_LAPACK=$(multilib_native_usex lapack) + -DWITH_ITT=OFF # 3dparty libs itt_notify + # =================================================== + # CUDA build components: nvidia-cuda-toolkit takes care of GCC version + # =================================================== + -DWITH_CUDA=$(multilib_native_usex cuda) + -DWITH_CUBLAS=$(multilib_native_usex cuda) + -DWITH_CUFFT=$(multilib_native_usex cuda) + -DWITH_NVCUVID=OFF + # -DWITH_NVCUVID=$(usex cuda) + -DCUDA_NPP_LIBRARY_ROOT_DIR=$(usex cuda "${EPREFIX}/opt/cuda" "") + # =================================================== + # OpenCV build components + # =================================================== + -DBUILD_SHARED_LIBS=ON + -DBUILD_JAVA=$(multilib_native_usex java) # Ant needed, no compile flag + -DBUILD_ANDROID_EXAMPLES=OFF + -DBUILD_opencv_apps=$(usex opencvapps ON OFF) + -DBUILD_DOCS=OFF # Doesn't install anyways. + -DBUILD_EXAMPLES=$(multilib_native_usex examples) + -DBUILD_PERF_TESTS=OFF + -DBUILD_TESTS=$(multilib_native_usex testprograms) + -DBUILD_WITH_DEBUG_INFO=$(usex debug) + # -DBUILD_WITH_STATIC_CRT=OFF + -DBUILD_WITH_DYNAMIC_IPP=OFF + -DBUILD_FAT_JAVA_LIB=OFF + # -DBUILD_ANDROID_SERVICE=OFF + -DBUILD_CUDA_STUBS=$(multilib_native_usex cuda) + -DOPENCV_EXTRA_MODULES_PATH=$(usex contrib "${WORKDIR}/opencv_contrib-${PV}/modules" "") + # =================================================== + # OpenCV installation options + # =================================================== + -DINSTALL_CREATE_DISTRIB=OFF + -DINSTALL_C_EXAMPLES=$(multilib_native_usex examples) + -DINSTALL_TESTS=$(multilib_native_usex testprograms) + -DINSTALL_PYTHON_EXAMPLES=$(multilib_native_usex examples) + # -DINSTALL_ANDROID_EXAMPLES=OFF + -DINSTALL_TO_MANGLED_PATHS=OFF + -DOPENCV_GENERATE_PKGCONFIG=ON + # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX} + # to set its destination libdir + -DLIB_SUFFIX= + # =================================================== + # OpenCV build options + # =================================================== + -DENABLE_CCACHE=OFF + # bug 733796, but PCH is a risky game in CMake anyway + -DENABLE_PRECOMPILED_HEADERS=OFF + -DENABLE_SOLUTION_FOLDERS=OFF + -DENABLE_PROFILING=OFF + -DENABLE_COVERAGE=OFF + + -DHAVE_opencv_java=$(multilib_native_usex java YES NO) + -DENABLE_NOISY_WARNINGS=OFF + -DOPENCV_WARNINGS_ARE_ERRORS=OFF + -DENABLE_IMPL_COLLECTION=OFF + -DENABLE_INSTRUMENTATION=OFF + -DGENERATE_ABI_DESCRIPTOR=OFF + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF + -DENABLE_LTO=$(usex lto) + # =================================================== + # things we want to be hard off or not yet figured out + # =================================================== + -DBUILD_PACKAGE=OFF + # =================================================== + # Not building protobuf but update files bug #631418 + # =================================================== + -DBUILD_PROTOBUF=OFF + -DPROTOBUF_UPDATE_FILES=ON + # =================================================== + # things we want to be hard enabled not worth useflag + # =================================================== + -DCMAKE_SKIP_RPATH=ON + -DOPENCV_DOC_INSTALL_PATH= + -DBUILD_opencv_features2d=$(usex features2d ON OFF) + ) + + # ================================================== + # cpu flags, should solve 633900 + #=================================================== + local CPU_BASELINE="" + for i in "${CPU_FEATURES_MAP[@]}" ; do + if [[ ${ABI} != x86 || ${i%:*} != "cpu_flags_x86_avx2" ]]; then # workaround for Bug 747163 + use ${i%:*} && CPU_BASELINE="${CPU_BASELINE}${i#*:};" + fi + done + + GLOBALCMAKEARGS+=( + -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON + -DCPU_BASELINE=${CPU_BASELINE} + -DCPU_DISPATCH= + ) + + # =================================================== + # OpenCV Contrib Modules + # =================================================== + if use contrib; then + GLOBALCMAKEARGS+=( + -DBUILD_opencv_dnn=$(usex contribdnn ON OFF) + -DTINYDNN_ROOT="${WORKDIR}/tiny-dnn-${TINY_DNN_PV}" + -DBUILD_opencv_dnns_easily_fooled=OFF + -DBUILD_opencv_xfeatures2d=$(usex contribxfeatures2d ON OFF) + -DBUILD_opencv_cvv=$(usex contribcvv ON OFF) + -DBUILD_opencv_hdf=$(multilib_native_usex contribhdf ON OFF) + -DBUILD_opencv_sfm=$(usex contribsfm ON OFF) + -DBUILD_opencv_freetype=$(usex contribfreetype ON OFF) + -DBUILD_opencv_ovis=$(usex contribovis ON OFF) + ) + + if multilib_is_native_abi; then + GLOBALCMAKEARGS+=( + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=$(usex !tesseract) + ) + else + GLOBALCMAKEARGS+=( + -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=ON + ) + fi + fi + + # workaround for bug 413429 + tc-export CC CXX + + local mycmakeargs=( + ${GLOBALCMAKEARGS[@]} + -DPYTHON_EXECUTABLE=OFF + -DINSTALL_PYTHON_EXAMPLES=OFF + -DBUILD_opencv_python2=OFF + -DBUILD_opencv_python3=OFF + ) + + cmake_src_configure + + # Copy face_land_model to ${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH} + # TODO patch ocv_download to copy files into destination dirs + if use contribdnn; then + mkdir -p "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die + cp "${WORKDIR}"/face_landmark_model.dat "${BUILD_DIR}"/share/OpenCV/testdata/cv/face/ || die + fi + +} + +python_module_compile() { + local BUILD_DIR="${orig_BUILD_DIR}" + local mycmakeargs=( ${GLOBALCMAKEARGS[@]} ) + + # Set all python variables to load the correct Gentoo paths + mycmakeargs+=( + # python_setup alters PATH and sets this as wrapper + # to the correct interpreter we are building for + -DPYTHON_DEFAULT_EXECUTABLE=${EPYTHON} + -DINSTALL_PYTHON_EXAMPLES=$(usex examples) + ) + + # Regenerate cache file. Can't use rebuild_cache as it won't + # have the Gentoo specific options. + rm CMakeCache.txt || die "rm failed" + cmake_src_configure + cmake_src_compile + cmake_src_install + + # Remove compiled binary so new version compiles + # Avoid conflicts with new module builds as build system doesn't + # really support it. + rm -r modules/python3 || die "rm failed" + + python_optimize "${ED}"/$(python_get_sitedir) +} + +multilib_src_install() { + cmake_src_install + + # Build and install the python modules for all targets + if multilib_is_native_abi && use python; then + local orig_BUILD_DIR="${BUILD_DIR}" + python_foreach_impl python_module_compile + fi +} -- cgit v1.2.3