diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2017fb31d..8b97fefa7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,10 @@
* bump simplisafe-python-5.1.0
* bump bimmer_connected-0.6.2
* add (older) haanna-0.12.3 for a test
- * remove dev-python/Pillow, we use the one from the main repo
+ * add dev-python/roombapy/roombapy-1.3.1
+ - add scikit-build-0.10.0
+ - apply a temporary hack for opencv-3.4.1 (https://bugs.gentoo.org/699730)
+ - remove dev-python/Pillow, we already use only the one from gentoo main repo
2019-11-09 again modules from dev tree
* bump abodepy-0.16.7
diff --git a/dev-python/roombapy/Manifest b/dev-python/roombapy/Manifest
new file mode 100644
index 000000000..60d056a4d
--- /dev/null
+++ b/dev-python/roombapy/Manifest
@@ -0,0 +1,3 @@
+DIST roombapy-1.3.1.tar.gz 125411 BLAKE2B ed68f1ac614f8514c46383ed45848a48b9affec2fc2e07532e45e00db7b4420497b3f4f3a0a85b44a297b9129a017fd8c10e4aff5bec02ffba1744c25c3e01a9 SHA512 851292f7b96fdbd54928df769d2e62113109a618bac0004f016077520b05da241c465ee6af7fdbc1172e756beb8b41ef3123cc02e4d151d57bef22ce69cdc9c0
+EBUILD roombapy-1.3.1.ebuild 1238 BLAKE2B 3a8c0745d8ad7b7c44a86b18d24ed3f2fc7400525a6a1531faf4c78c8f768f0424cd7fa582dcd56a0baadf5759bae436b6d9f8d0d3e01407001329f529dd19bd SHA512 52b3091a2312d9f371efff8370dbe0863dd34b5ad597b4a26d115d24bf4802db068ba1f21ec5cfff311d6bf976c69281cfdbdc2e732bca9a4984dedfe0720143
+MISC metadata.xml 639 BLAKE2B 0f49226c13428d056f5e0caa5422eeefa19a904ddc65e3878515165931c4b9ff19c0cb067c880a7d9f9ccb52ce34531081f5d3d36e40cf244241ad29f7393fac SHA512 ff4baa24c2d7766239adae4e78ed014894310bfca7492ab84af9c1d3f86165ae50ce49aeb7696ec6ef74cf3e64842d082ff957f767688cfc7ff3ee273515bc81
diff --git a/dev-python/roombapy/metadata.xml b/dev-python/roombapy/metadata.xml
new file mode 100644
index 000000000..19fa39df9
--- /dev/null
+++ b/dev-python/roombapy/metadata.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ b@edevau.net
+ Andreas Billmeier
+
+
+ python
+
+ roombapy
+
+ nick.waterton@med.ge.com
+
+
+
diff --git a/dev-python/roombapy/roombapy-1.3.1.ebuild b/dev-python/roombapy/roombapy-1.3.1.ebuild
new file mode 100644
index 000000000..6b1622724
--- /dev/null
+++ b/dev-python/roombapy/roombapy-1.3.1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2019 Gentoo Authors Andreas Billmeier b (at) edevau.net
+# Distributed under the terms of the GNU General Public License v3.0
+
+EAPI="7"
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python program and library to control Wi-Fi enabled iRobot Roomba vacuum cleaners"
+HOMEPAGE="https://github.com/pschmitt/roombapy https://pypi.org/project/roombapy/"
+SRC_URI="https://github.com/pschmitt/roombapy/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="test +opencv pillow mqtt"
+
+RDEPEND=">=dev-python/appdirs-1.4.3[${PYTHON_USEDEP}]
+ >=dev-python/olefile-0.44[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ mqtt? ( dev-python/paho-mqtt[${PYTHON_USEDEP}] )
+ >=dev-python/pyparsing-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
+ opencv? ( =media-libs/opencv-3.4.1-r7[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.12.1[${PYTHON_USEDEP}] )
+ pillow? ( >=dev-python/pillow-4.1.1[${PYTHON_USEDEP}] )"
+
+DEPEND="${REDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/nose[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ )"
+
+python_test() {
+ nosetests --verbose || die
+ py.test -v -v || die
+}
diff --git a/dev-python/scikit-build/Manifest b/dev-python/scikit-build/Manifest
new file mode 100644
index 000000000..ea9b8d590
--- /dev/null
+++ b/dev-python/scikit-build/Manifest
@@ -0,0 +1,3 @@
+DIST scikit-build-0.10.0.tar.gz 132443 BLAKE2B 7e817b1b6d8ea5e663cec59c5ed51b3f58318eedf6587380eb2a1458bac772a5a02a936015027f1200f740884ba33512babb1aadc4cdbb59ea38f46bc36cbb5f SHA512 cbdc59a41c60c162be84b38d207838d5e38898871f2ef02dcb672796f01f7a31645892770172e9891a4dd7aa02a85dd489b6dede4c5f717ab013dd8947d5d314
+EBUILD scikit-build-0.10.0.ebuild 798 BLAKE2B 84163d44be896106db1795a2056883af7ff93d804f6c3f87494cf6b4b7f65d5624462b2bf0e0d2d75e0e2fb719c50e1bdba41c4a6030c81577b226f112885c3f SHA512 cf4efbc1b99c79c916e5d381ec124faa2df12b48079d2a527a12f0c2d17a98c9605677e28c181630b3b683d09e6510f56acf761bdc0c2ed36f9ceda75bbeb490
+MISC metadata.xml 482 BLAKE2B 49e1787adb16ea6cd60086b1fdd2655123d089b9a53c8cc4270278f8349415f9d226ff33f7e122f31fd45220732b2b72131b3c417b908cb7864646bf31b3a575 SHA512 cab4f192c3c7415e2402e5f4db90a90b1f8fe7ba7da44ad60ba6eb559747dbe3fa21e459f9e5b0587415ae49ffa70318cf8b8f5a05f94ccdba2bf993bb905cae
diff --git a/dev-python/scikit-build/metadata.xml b/dev-python/scikit-build/metadata.xml
new file mode 100644
index 000000000..28c15d66c
--- /dev/null
+++ b/dev-python/scikit-build/metadata.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ b@edevau.net
+ Andreas Billmeier
+
+ python
+
+ scikit-build
+
+ scikit-build@googlegroups.com
+ The scikit-build team
+
+
+
diff --git a/dev-python/scikit-build/scikit-build-0.10.0.ebuild b/dev-python/scikit-build/scikit-build-0.10.0.ebuild
new file mode 100644
index 000000000..b46059665
--- /dev/null
+++ b/dev-python/scikit-build/scikit-build-0.10.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2019 Gentoo Authors Andreas Billmeier b (at) edevau.net
+# Distributed under the terms of the GNU General Public License v3.0
+
+EAPI="7"
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="Improved build system generator for Python C/C++/Fortran/Cython extensions"
+HOMEPAGE="https://github.com/scikit-build/scikit-build https://pypi.org/project/scikit-build/"
+SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="test"
+
+RDEPEND=">=dev-python/wheel-0.29.0[${PYTHON_USEDEP}]"
+DEPEND="${REDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/nose[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ )"
+
+python_test() {
+ nosetests --verbose || die
+ py.test -v -v || die
+}
diff --git a/media-libs/opencv/Manifest b/media-libs/opencv/Manifest
new file mode 100644
index 000000000..efc07a561
--- /dev/null
+++ b/media-libs/opencv/Manifest
@@ -0,0 +1,26 @@
+AUX opencv-2.3.1a-libav-0.7.patch 415 BLAKE2B f3aecdeae8c558edbca610d380a2c0862f2c69f8104b63564d3a07f9494dd474cfeee15438086c6e2abb74821ac482ebdeb896e2aac96d69088f089273cdd7f2 SHA512 b17466470a47876e1a8434367f47ce13ec989bdc35ec707d87188187e08b8ccca6af4c5563f20b3170758582b500323030cff22961a7fbbc6b4843d8bb808f1e
+AUX opencv-2.4.13-gcc-6.0.patch 1068 BLAKE2B cfbb70e2e3e9909fe8b37705faf51f88e754751e66073a767aa943144827817c2cfe1b84778ed6d3f7774de066a7aba76f070d621806d0f00065d7f6c1768a2e SHA512 b5dced5d0816d7560c827db06000e770de22b0b3a703ab078bf1cdde4202a5bbe223e5021c9d0e99eeb93c7622a89b9fa03e5ae8bd4a8d3b2df12f014b7e5ca9
+AUX opencv-2.4.13-imgcodecs-refactoring.patch 19899 BLAKE2B 106e5426091f3072b108d9750a6273f5201f77e190cbfba6e3a77da0b3cdfc2f83e276e1ff0506374ea1c4914314e036e921cf9324eb47eebff9f6a474c5f6c9 SHA512 2fae29c7190930f1a2657641d42e0484d4ce6a4562d52cd1522b3b4e9d56468ef7b3d313088270fbb778e5f412f02e149164c38174d95e397e9f2b7d5a1b404b
+AUX opencv-2.4.2-cflags.patch 742 BLAKE2B 15e523b500028cd5483a9eae16f3a200937876214b0f99d6ce08345f94050e7cc4c76b7c79b4e3ecee64e9a3a6ef7510c2b86ce7eef3608b24e61d3501ccbc16 SHA512 b92c07d8c9c40ad7721e0cca2d79b001f825478a336ad40cb43d02218fcd9e8b94b871575028ca8eaf6616cfce8138c796f32d4cf55d83d5cbe819ec50cf7c82
+AUX opencv-2.4.3-gcc47.patch 835 BLAKE2B 2e0f71fff77a23c2db9747d8bb7f9301de18acd4821b8223edd1979f2a1c62c86e71c4d4a5b0e3bf0057df81127d207230eb7b3f08507b17397b8370d454b570 SHA512 cc5e3e4c0def0745867403e990abf4b88d7d3edc72867a283403a991fd96f59c4cca6524ca184a52a40c913cd5d9cdfb52e98be71d5060fc4c7aa6b613a2a220
+AUX opencv-2.4.8-javamagic.patch 1165 BLAKE2B 0f12fd471145e1e303a517e5bc704fb5abc5ac5731fb1eadf08ef61e618bd70f9348c9c7a23296eefeb37826fd6701baaab0fc475ad0c441302b20516cf9bb9a SHA512 fd8a0d33997889c9316c0a4474c836b2528b676cd26bbb0e6ee2262377e45c5a0c465534831bd7fec3c0aa9cb198bc792a53f958b05a5217009314b678076d64
+AUX opencv-2.4.9-cuda-pkg-config.patch 373 BLAKE2B 389a27607926170c38c69cba955e91e0dfde65a51ee88dd0aec315056ba0f36a303ef2d4b95e226f323e92c59a251b93e9deae5cb3822ad69d257e1cb3cb1f34 SHA512 5b8f931758c6c8edfc3cae35a16d1c8674f17716f13b424ee0510eb313f06ed334b80205262e6bfcce22db235467cad81fddfa96e0cf669972794cc8524f6937
+AUX opencv-3.0.0-gles.patch 481 BLAKE2B 3eecd8c754abd9fdbfc2878b8b5a8b5ac3c6410342eb0756162ac901fe0903f7e1236bf2cc6e2ec5c7eeb638037f0dfad2b5aa9ebc905c485c4084936daed24e SHA512 37cac226bc39b91a87e4891e1d58169a0c2723240215670ebaecbfaf9b066b571296041fc5140aff7274cc44ca132b6f1b3bd4cf6d6dd23b950cac6eca548ad9
+AUX opencv-3.3.0-remove-tiny-dnn-autodownload.patch 1138 BLAKE2B 0bf85ca7a0e3759a4de14a844f2929120a47f9c0c212992d078b19cc7a602e157d5233ebc30d7eb6dcfa8c5a9606e3acea15e5a96717842fa80d2d8b3fa3189c SHA512 6824c3fc193491d0d776a7a904d71515309a5b67b0dfa1790bbd402c40b68e813c9fdfc3037a60f31893341ea78553d97470d152e90f34485004e0e50e6d66f6
+AUX opencv-3.4.0-disable-download.patch 1050 BLAKE2B 6f39f61588d9231cc8d877624538a49654ec8cf63091f8d0251cd01cc14684f2f5264c295a149c4a5754a9336e1ad4d1760cc26471fd85a6f571404f7c8d540d SHA512 95f2043c286a7de33fb4718fc1e2ded1fd943b20a5c4cc0c3d7af84fc317e53e3aa6358a33e4781195f8a80904d6bc615171142cde5d30a83d16045d36f85826
+AUX opencv-3.4.1-compilation-C-mode.patch 2077 BLAKE2B 78f55e49bd51ac4377a1db37125da6ca1ddfb9d723243eca7ef3df9d6d7b3922329cdd1c5915d480a9264af623c2953b4edaf81fd53afc950dc19cd49f04ea6f SHA512 203a4376728df6aa3dcaab147654139ebfd296a98d83847ac3ab0184dba828cf2ee298fedf7e7c2c64e1e8965237172fa6f1d5c7a4f6be5165a384d21b6875e7
+AUX opencv-3.4.1-cuda-add-relaxed-constexpr.patch 707 BLAKE2B 743a9c259c59fc4e3017539faef0723e0a80fb9c4bbde94811f32b3e6ae271b3db39fd35487d75078cfbe9e596604c4e37fb5c6c18619ed524c52683219dd8af SHA512 b37ce78495a3bbc439f203d9db81d9bff3e7f980c01ef5187dee537dd9c1025c5163ec3760b48d91a099a2fafb60526c9fe83f7183fc605fb3cc0f5c7a65f6bf
+AUX opencv-3.4.1-fix-build-with-va.patch 1459 BLAKE2B 20a65a5bef15fab56d277d78f747b883b5a008508c643ae877717dd0c524aa6c2ba398aff7ac8073d3ccfffdcd284223369c15de36214f62730bc62ca582cf71 SHA512 24186689afe73fd3e63d6d43073a88c65bc7cd5c0719701c8a014e5e85e179765e1b2d2adac5fcc3c8490e92aeaf65642f6d0276581d8311470328b55b74d441
+AUX opencv-3.4.1-fix-on-x86.patch 1256 BLAKE2B 785e718d7cea4bf72b03de5083d065449bad294c6bf5b6e7eb837e4c5f4ead34c1034988303410dba49e8376ca63caaaa209a4bd175d786c75ebfc548b71e271 SHA512 8ebf573e3f02b78b5769eaf828215698073096a1dade9214af0382cfbbe2353307df836a6af8c4e86246ad33fefe1f64a1087d0ff7a6dc7c5f3e231592c20b4c
+AUX opencv-3.4.1-popcnt.patch 890 BLAKE2B 553352472eaf2a2c97f148f97856a103e8a190970ef8a675d7a9b6fbf1ead0686279a4a5d961e8802164c73177da3f25cef016d40b59044f5c74b63613251512 SHA512 44f35d21c55e68b2125c5eba83c875c02c3822998d973257ab8a7d7e0baaeb5de70386b9294ff62a327732743253c588946eb8c59f87f1629b26e0f594c7b65f
+AUX opencv-3.4.1-python-lib-suffix-hack.patch 723 BLAKE2B bc4b1c68f2c73b40d20372ce4e3232b2db3b414ce2da16a8d84710fc53902211f17585c7ce6daf2d54025b53c04aa74f0c3eb3a30f26bfbc9af24e246f56b71a SHA512 54d2c8189fc1ff06ee1cacf5f375ea976faf339563ee804085feb0ec1f55cdbe10eea7335a786706b6a6152b6f9145156b3e74ce802c3d15b5a23014b25044b8
+AUX opencv-3.4.1-python37.patch 452 BLAKE2B c4a2850c17a0f9e01f537df6123e7c4262862ec0cd1dd43f8cebd21d4d6e8903205813b2a200eb6b60efdc43e74b0c9222d0b6bba504bacb84f87cfcf7d80d1a SHA512 c7fac2a6425c4afbef3b3cae5307e6035e3f4ef77ba0006c4dfd3a1cfc15c4648e978cc305ce598ec70c049e2cdc36f5f85cf24a75a4d3f3dc025091993e66e2
+AUX opencv-3.4.1-remove-git-autodetect.patch 1549 BLAKE2B 0ed44deddea20d5a57dded6a51d40645e5376411d9c055995fdbdbfbf4252817eaa9158925276661e4958f894898122ec273a352491be53511207345a481db52 SHA512 8496677542981c64ba9763f0d494885f71747884ae3e02de0bc8f96c1802356d917dcc7aed84ddfc2af093456c250bf2fafbdd06f7789aae8c720f5a412c07a0
+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-3.4.1.tar.gz 87051748 BLAKE2B 87c83ab9b3d7fb048263f047aa5d6e95b153e1a28f3e34cc885eff7eb080a2258cfa1aa494cd56b32f1098ab158c17c23fc8464fcbe70642a3a1842f2fd1b4ac SHA512 e1fc14285090c6fe9e26e721f2d67d7096650c523147e925567426ef76aa7f4c6f12035d6f6ce3ec7991a75a6828a810fd4f9b75f78ed5fcccecefbadd79944b
+DIST opencv-3.4.1_contrib.tar.gz 57126844 BLAKE2B 63d9d5cb088371754eb132607789c8f1d4820f3e0e486593d6f64ee8f918ea4362152f050baec16f17904c03a6cdc0abc6e5fb2510308dcbabebe97b29285fbc SHA512 431dfba0f413071d7faa18bc6e6f5e4f015285e2cc730c5dd69b2a4d6aa4250b7e0bcb1814ac6f06f5c76f103aea1f93f72f32aee6bc0cd7ddacdaf1f40075c1
+DIST tiny-dnn-1.0.0a3.tar.gz 12885646 BLAKE2B 85c0715ab6c692b77522487775e70b0db645528baed1830c83c9f44d2b67a5207e4f7ea1709b35c6a4217d287199549304e9be19f4a5cec9a1183b0b5dccc562 SHA512 5f2c1a161771efa67e85b1fea395953b7744e29f61187ac5a6c54c912fb195b3aef9a5827135c3668bd0eeea5ae04a33cc433e1f6683e2b7955010a2632d168b
+DIST vgg_boostdesc-3.2.0.tar.gz 1867770 BLAKE2B 1fa5b58e73b6fa56ecf8d19af22298f729942ee1369082e173445d09d3de767bf844bad3d2b462efc1199c392f37c88ba49a9996ba8bfd84b4abeba7de94db63 SHA512 4a046aedd639c8eb4b295b0f499e756deb66210ca083f0124c75531e540663367cb58f6d175f66c4713324177036cd89a8869bdab2de8d1736dafc7f00ef9f44
+EBUILD opencv-3.4.1-r7.ebuild 18994 BLAKE2B 412c30967ddb4a6a45b3d7d2675cf37fded6a998f05415683a31e2f65d8314c05cabf7b7e81aae9d1b058a36de7822614e0c6bf9e0709bfefb14736f162b76b1 SHA512 4069e52e74277f3657c9de54213b10974ec3f753029b547a89815702023266c3e9cf1358feb963ecaf539e983646631a744ffdfcd75e297b4d60c8ab9889209c
+MISC metadata.xml 2458 BLAKE2B 3102d768cb8308fa243ab9388110312ddf1a2adfd6aa31d8261192530bdb13e222338eb424c2102c12af129494d3025097b79e1cb34770238c8ef90d10b0a535 SHA512 e364a0811b3eab96adc83e800d6fad7ceb51d56b5c78ba1d363af19fe27c17bf644bb99a30e6235a6154971caeec389dcced8ba1cdca9586d8cfead8927617a0
diff --git a/media-libs/opencv/files/opencv-2.3.1a-libav-0.7.patch b/media-libs/opencv/files/opencv-2.3.1a-libav-0.7.patch
new file mode 100644
index 000000000..59090703d
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.3.1a-libav-0.7.patch
@@ -0,0 +1,10 @@
+--- OpenCV-2.3.1.orig/modules/highgui/src/cap_ffmpeg_impl.hpp 2011-11-14 05:33:37.000000000 +0100
++++ OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp 2011-11-14 05:33:18.000000000 +0100
+@@ -104,6 +104,7 @@
+ #endif
+ #if defined(HAVE_LIBAVCODEC_AVCODEC_H)
+ #include
++ #include
+ #endif
+ #if defined(HAVE_LIBSWSCALE_SWSCALE_H)
+ #include
diff --git a/media-libs/opencv/files/opencv-2.4.13-gcc-6.0.patch b/media-libs/opencv/files/opencv-2.4.13-gcc-6.0.patch
new file mode 100644
index 000000000..b0a508475
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.13-gcc-6.0.patch
@@ -0,0 +1,23 @@
+From fb598bb76a0431aa3a880ecfa45054c996a070fb Mon Sep 17 00:00:00 2001
+From: Maksim Shabunin
+Date: Fri, 13 May 2016 13:28:09 +0300
+Subject: [PATCH] Disabled PCH support for gcc >= 6.0.0
+
+Command line generation routine uses "-isystem" to include headers outside of "/modules" folder, but GCC 6 does not work when passed "-isystem /usr/include" option.
+---
+ cmake/OpenCVPCHSupport.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake
+index 13619daf27e..e6585cae020 100644
+--- a/cmake/OpenCVPCHSupport.cmake
++++ b/cmake/OpenCVPCHSupport.cmake
+@@ -19,7 +19,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
+ ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
+ OUTPUT_VARIABLE gcc_compiler_version)
+ #MESSAGE("GCC Version: ${gcc_compiler_version}")
+- IF(gcc_compiler_version VERSION_GREATER "4.2.-1")
++ IF(gcc_compiler_version VERSION_GREATER "4.2.-1" AND gcc_compiler_version VERSION_LESS "6.0.0")
+ SET(PCHSupport_FOUND TRUE)
+ ENDIF()
+
diff --git a/media-libs/opencv/files/opencv-2.4.13-imgcodecs-refactoring.patch b/media-libs/opencv/files/opencv-2.4.13-imgcodecs-refactoring.patch
new file mode 100644
index 000000000..d1bea3658
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.13-imgcodecs-refactoring.patch
@@ -0,0 +1,580 @@
+From 72d29259ca741950527c8cca7fb649030c01f658 Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin
+Date: Tue, 15 Aug 2017 22:04:55 +0000
+Subject: [PATCH] imgcodecs: refactoring, improve code quality
+
+---
+ modules/core/include/opencv2/core/core.hpp | 3 +
+ modules/core/include/opencv2/core/operations.hpp | 3 +
+ modules/highgui/src/bitstrm.cpp | 2 +
+ modules/highgui/src/bitstrm.hpp | 19 ++--
+ modules/highgui/src/grfmt_bmp.cpp | 13 ++-
+ modules/highgui/src/grfmt_pxm.cpp | 119 +++++++++++++---------
+ modules/highgui/src/loadsave.cpp | 120 +++++++++++++++++++----
+ 7 files changed, 207 insertions(+), 72 deletions(-)
+
+diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp
+index 6bb295f5c73..86f4eb182b2 100644
+--- a/modules/core/include/opencv2/core/core.hpp
++++ b/modules/core/include/opencv2/core/core.hpp
+@@ -3248,6 +3248,9 @@ template class AutoBuffer
+ //! returns read-only pointer to the real buffer, stack-allocated or head-allocated
+ operator const _Tp* () const;
+
++ //! returns number of allocated elements
++ size_t getSize() const;
++
+ protected:
+ //! pointer to the real buffer, can point to buf if the buffer is small enough
+ _Tp* ptr;
+diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp
+index 1b7484aded2..37fd3d97c7a 100644
+--- a/modules/core/include/opencv2/core/operations.hpp
++++ b/modules/core/include/opencv2/core/operations.hpp
+@@ -2581,6 +2581,9 @@ template inline AutoBuffer<_Tp, fixed_size>::op
+ template inline AutoBuffer<_Tp, fixed_size>::operator const _Tp* () const
+ { return ptr; }
+
++template inline size_t AutoBuffer<_Tp, fixed_size>::getSize() const
++{ return size; }
++
+
+ /////////////////////////////////// Ptr ////////////////////////////////////////
+
+diff --git a/modules/highgui/src/bitstrm.cpp b/modules/highgui/src/bitstrm.cpp
+index dd8bec87cca..67792a27f28 100644
+--- a/modules/highgui/src/bitstrm.cpp
++++ b/modules/highgui/src/bitstrm.cpp
+@@ -208,6 +208,8 @@ int RLByteStream::getByte()
+ current = m_current;
+ }
+
++ CV_Assert(current < m_end);
++
+ val = *((uchar*)current);
+ m_current = current + 1;
+ return val;
+diff --git a/modules/highgui/src/bitstrm.hpp b/modules/highgui/src/bitstrm.hpp
+index 57956beb539..b22987bc911 100644
+--- a/modules/highgui/src/bitstrm.hpp
++++ b/modules/highgui/src/bitstrm.hpp
+@@ -48,13 +48,20 @@
+ namespace cv
+ {
+
+-enum
+-{
+- RBS_THROW_EOS=-123, // exception code
+- RBS_THROW_FORB=-124, // exception code
+- RBS_HUFF_FORB=2047, // forrbidden huffman code "value"
+- RBS_BAD_HEADER=-125 // invalid header
++#define DECLARE_RBS_EXCEPTION(name) \
++class RBS_ ## name ## _Exception : public cv::Exception \
++{ \
++public: \
++ RBS_ ## name ## _Exception(int code_, const String& err_, const String& func_, const String& file_, int line_) : \
++ cv::Exception(code_, err_, func_, file_, line_) \
++ {} \
+ };
++DECLARE_RBS_EXCEPTION(THROW_EOS)
++#define RBS_THROW_EOS RBS_THROW_EOS_Exception(CV_StsError, "Unexpected end of input stream", CV_Func, __FILE__, __LINE__)
++DECLARE_RBS_EXCEPTION(THROW_FORB)
++#define RBS_THROW_FORB RBS_THROW_FORB_Exception(CV_StsError, "Forrbidden huffman code", CV_Func, __FILE__, __LINE__)
++DECLARE_RBS_EXCEPTION(BAD_HEADER)
++#define RBS_BAD_HEADER RBS_BAD_HEADER_Exception(CV_StsError, "Invalid header", CV_Func, __FILE__, __LINE__)
+
+ typedef unsigned long ulong;
+
+diff --git a/modules/highgui/src/grfmt_bmp.cpp b/modules/highgui/src/grfmt_bmp.cpp
+index c8f8218cd3b..026b317467d 100644
+--- a/modules/highgui/src/grfmt_bmp.cpp
++++ b/modules/highgui/src/grfmt_bmp.cpp
+@@ -115,8 +115,9 @@ bool BmpDecoder::readHeader()
+
+ if( m_bpp <= 8 )
+ {
+- memset( m_palette, 0, sizeof(m_palette));
+- m_strm.getBytes( m_palette, (clrused == 0? 1< 2 ) // absolute mode
+ {
+ if( data + code*nch > line_end ) goto decode_rle4_bad;
+- m_strm.getBytes( src, (((code + 1)>>1) + 1) & -2 );
++ int sz = (((code + 1)>>1) + 1) & (~1);
++ CV_Assert((size_t)sz < _src.getSize());
++ m_strm.getBytes(src, sz);
+ if( color )
+ data = FillColorRow4( data, src, code, m_palette );
+ else
+@@ -371,7 +374,9 @@ decode_rle4_bad: ;
+
+ if( data + code3 > line_end )
+ goto decode_rle8_bad;
+- m_strm.getBytes( src, (code + 1) & -2 );
++ int sz = (code + 1) & (~1);
++ CV_Assert((size_t)sz < _src.getSize());
++ m_strm.getBytes(src, sz);
+ if( color )
+ data = FillColorRow8( data, src, code, m_palette );
+ else
+diff --git a/modules/highgui/src/grfmt_pxm.cpp b/modules/highgui/src/grfmt_pxm.cpp
+index f73bbb1bf6b..e609d165966 100644
+--- a/modules/highgui/src/grfmt_pxm.cpp
++++ b/modules/highgui/src/grfmt_pxm.cpp
+@@ -43,50 +43,58 @@
+ #include "precomp.hpp"
+ #include "utils.hpp"
+ #include "grfmt_pxm.hpp"
++#include
+
+ namespace cv
+ {
+
+ ///////////////////////// P?M reader //////////////////////////////
+
+-static int ReadNumber( RLByteStream& strm, int maxdigits )
++static int ReadNumber(RLByteStream& strm, int maxdigits = 0)
+ {
+ int code;
+- int val = 0;
++ int64 val = 0;
+ int digits = 0;
+
+ code = strm.getByte();
+
+- if( !isdigit(code))
++ while (!isdigit(code))
+ {
+- do
++ if (code == '#' )
+ {
+- if( code == '#' )
++ do
+ {
+- do
+- {
+- code = strm.getByte();
+- }
+- while( code != '\n' && code != '\r' );
++ code = strm.getByte();
+ }
+-
++ while (code != '\n' && code != '\r');
+ code = strm.getByte();
+-
+- while( isspace(code))
++ }
++ else if (isspace(code))
++ {
++ while (isspace(code))
+ code = strm.getByte();
+ }
+- while( !isdigit( code ));
++ else
++ {
++#if 1
++ CV_Error_(CV_StsError, ("PXM: Unexpected code in ReadNumber(): 0x%x (%d)", code, code));
++#else
++ code = strm.getByte();
++#endif
++ }
+ }
+
+ do
+ {
+- val = val*10 + code - '0';
+- if( ++digits >= maxdigits ) break;
++ val = val*10 + (code - '0');
++ CV_Assert(val <= INT_MAX && "PXM: ReadNumber(): result is too large");
++ digits++;
++ if (maxdigits != 0 && digits >= maxdigits) break;
+ code = strm.getByte();
+ }
+- while( isdigit(code));
++ while (isdigit(code));
+
+- return val;
++ return (int)val;
+ }
+
+
+@@ -119,13 +127,13 @@ ImageDecoder PxMDecoder::newDecoder() const
+ return new PxMDecoder;
+ }
+
+-void PxMDecoder::close()
++void PxMDecoder::close()
+ {
+ m_strm.close();
+ }
+
+
+-bool PxMDecoder::readHeader()
++bool PxMDecoder::readHeader()
+ {
+ bool result = false;
+
+@@ -155,10 +163,10 @@ bool PxMDecoder::readHeader()
+ m_binary = code >= '4';
+ m_type = m_bpp > 8 ? CV_8UC3 : CV_8UC1;
+
+- m_width = ReadNumber( m_strm, INT_MAX );
+- m_height = ReadNumber( m_strm, INT_MAX );
++ m_width = ReadNumber(m_strm);
++ m_height = ReadNumber(m_strm);
+
+- m_maxval = m_bpp == 1 ? 1 : ReadNumber( m_strm, INT_MAX );
++ m_maxval = m_bpp == 1 ? 1 : ReadNumber(m_strm);
+ if( m_maxval > 65535 )
+ throw RBS_BAD_HEADER;
+
+@@ -172,8 +180,14 @@ bool PxMDecoder::readHeader()
+ result = true;
+ }
+ }
+- catch(...)
++ catch (const cv::Exception&)
+ {
++ throw;
++ }
++ catch (...)
++ {
++ std::cerr << "PXM::readHeader(): unknown C++ exception" << std::endl << std::flush;
++ throw;
+ }
+
+ if( !result )
+@@ -193,27 +207,23 @@ bool PxMDecoder::readData( Mat& img )
+ int step = (int)img.step;
+ PaletteEntry palette[256];
+ bool result = false;
+- int bit_depth = CV_ELEM_SIZE1(m_type)*8;
+- int src_pitch = (m_width*m_bpp*bit_depth/8 + 7)/8;
++ const int bit_depth = CV_ELEM_SIZE1(m_type)*8;
++ const int src_pitch = (m_width*m_bpp*(bit_depth/8) + 7) / 8;
++
+ int nch = CV_MAT_CN(m_type);
+ int width3 = m_width*nch;
+- int i, x, y;
+
+ if( m_offset < 0 || !m_strm.isOpened())
+ return false;
+
+- AutoBuffer _src(src_pitch + 32);
+- uchar* src = _src;
+- AutoBuffer _gray_palette;
+- uchar* gray_palette = _gray_palette;
++ uchar gray_palette[256] = {0};
+
+ // create LUT for converting colors
+ if( bit_depth == 8 )
+ {
+- _gray_palette.allocate(m_maxval + 1);
+- gray_palette = _gray_palette;
++ CV_Assert(m_maxval < 256);
+
+- for( i = 0; i <= m_maxval; i++ )
++ for (int i = 0; i <= m_maxval; i++)
+ gray_palette[i] = (uchar)((i*255/m_maxval)^(m_bpp == 1 ? 255 : 0));
+
+ FillGrayPalette( palette, m_bpp==1 ? 1 : 8 , m_bpp == 1 );
+@@ -227,12 +237,16 @@ bool PxMDecoder::readData( Mat& img )
+ {
+ ////////////////////////// 1 BPP /////////////////////////
+ case 1:
++ CV_Assert(CV_MAT_DEPTH(m_type) == CV_8U);
+ if( !m_binary )
+ {
+- for( y = 0; y < m_height; y++, data += step )
++ AutoBuffer _src(m_width);
++ uchar* src = _src;
++
++ for (int y = 0; y < m_height; y++, data += step)
+ {
+- for( x = 0; x < m_width; x++ )
+- src[x] = ReadNumber( m_strm, 1 ) != 0;
++ for (int x = 0; x < m_width; x++)
++ src[x] = ReadNumber(m_strm, 1) != 0;
+
+ if( color )
+ FillColorRow8( data, src, m_width, palette );
+@@ -242,7 +256,10 @@ bool PxMDecoder::readData( Mat& img )
+ }
+ else
+ {
+- for( y = 0; y < m_height; y++, data += step )
++ AutoBuffer _src(src_pitch);
++ uchar* src = _src;
++
++ for (int y = 0; y < m_height; y++, data += step)
+ {
+ m_strm.getBytes( src, src_pitch );
+
+@@ -258,11 +275,15 @@ bool PxMDecoder::readData( Mat& img )
+ ////////////////////////// 8 BPP /////////////////////////
+ case 8:
+ case 24:
+- for( y = 0; y < m_height; y++, data += step )
++ {
++ AutoBuffer _src(std::max(width3*2, src_pitch));
++ uchar* src = _src;
++
++ for (int y = 0; y < m_height; y++, data += step)
+ {
+ if( !m_binary )
+ {
+- for( x = 0; x < width3; x++ )
++ for (int x = 0; x < width3; x++)
+ {
+ int code = ReadNumber( m_strm, INT_MAX );
+ if( (unsigned)code > (unsigned)m_maxval ) code = m_maxval;
+@@ -277,7 +298,7 @@ bool PxMDecoder::readData( Mat& img )
+ m_strm.getBytes( src, src_pitch );
+ if( bit_depth == 16 && !isBigEndian() )
+ {
+- for( x = 0; x < width3; x++ )
++ for (int x = 0; x < width3; x++)
+ {
+ uchar v = src[x * 2];
+ src[x * 2] = src[x * 2 + 1];
+@@ -288,7 +309,7 @@ bool PxMDecoder::readData( Mat& img )
+
+ if( img.depth() == CV_8U && bit_depth == 16 )
+ {
+- for( x = 0; x < width3; x++ )
++ for (int x = 0; x < width3; x++)
+ {
+ int v = ((ushort *)src)[x];
+ src[x] = (uchar)(v >> 8);
+@@ -329,12 +350,19 @@ bool PxMDecoder::readData( Mat& img )
+ }
+ result = true;
+ break;
++ }
+ default:
+- assert(0);
++ CV_Error(CV_StsError, "m_bpp is not supported");
+ }
+ }
+- catch(...)
++ catch (const cv::Exception&)
++ {
++ throw;
++ }
++ catch (...)
+ {
++ std::cerr << "PXM::readData(): unknown exception" << std::endl << std::flush;
++ throw;
+ }
+
+ return result;
+@@ -410,8 +438,9 @@ bool PxMEncoder::write( const Mat& img, const vector& params )
+ char* buffer = _buffer;
+
+ // write header;
+- sprintf( buffer, "P%c\n%d %d\n%d\n",
++ sprintf( buffer, "P%c\n# Generated by OpenCV %s\n%d %d\n%d\n",
+ '2' + (channels > 1 ? 1 : 0) + (isBinary ? 3 : 0),
++ CV_VERSION,
+ width, height, (1 << depth) - 1 );
+
+ strm.putBytes( buffer, (int)strlen(buffer) );
+diff --git a/modules/highgui/src/loadsave.cpp b/modules/highgui/src/loadsave.cpp
+index 81c708acdd4..9b270c900f7 100644
+--- a/modules/highgui/src/loadsave.cpp
++++ b/modules/highgui/src/loadsave.cpp
+@@ -48,12 +48,32 @@
+ #undef min
+ #undef max
+
++#include
++
+ /****************************************************************************************\
+ * Image Codecs *
+ \****************************************************************************************/
+ namespace cv
+ {
+
++// TODO Add runtime configuration
++#define CV_IO_MAX_IMAGE_PARAMS (50)
++#define CV_IO_MAX_IMAGE_WIDTH (1<<20)
++#define CV_IO_MAX_IMAGE_HEIGHT (1<<20)
++#define CV_IO_MAX_IMAGE_PIXELS (1<<30) // 1 Gigapixel
++
++static Size validateInputImageSize(const Size& size)
++{
++ CV_Assert(size.width > 0);
++ CV_Assert(size.width <= CV_IO_MAX_IMAGE_WIDTH);
++ CV_Assert(size.height > 0);
++ CV_Assert(size.height <= CV_IO_MAX_IMAGE_HEIGHT);
++ uint64 pixels = (uint64)size.width * (uint64)size.height;
++ CV_Assert(pixels <= CV_IO_MAX_IMAGE_PIXELS);
++ return size;
++}
++
++
+ struct ImageCodecInitializer
+ {
+ ImageCodecInitializer()
+@@ -203,12 +223,26 @@ imread_( const string& filename, int flags, int hdrtype, Mat* mat=0 )
+ if( decoder.empty() )
+ return 0;
+ decoder->setSource(filename);
+- if( !decoder->readHeader() )
++
++ try
++ {
++ // read the header to make sure it succeeds
++ if (!decoder->readHeader())
++ return 0;
++ }
++ catch (const cv::Exception& e)
++ {
++ std::cerr << "imread_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
+ return 0;
++ }
++ catch (...)
++ {
++ std::cerr << "imread_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
++ return 0;
++ }
+
+- CvSize size;
+- size.width = decoder->width();
+- size.height = decoder->height();
++
++ Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
+
+ int type = decoder->type();
+ if( flags != -1 )
+@@ -242,7 +276,21 @@ imread_( const string& filename, int flags, int hdrtype, Mat* mat=0 )
+ temp = cvarrToMat(image);
+ }
+
+- if( !decoder->readData( *data ))
++ bool success = false;
++ try
++ {
++ if (decoder->readData(*data))
++ success = true;
++ }
++ catch (const cv::Exception& e)
++ {
++ std::cerr << "imread_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
++ }
++ catch (...)
++ {
++ std::cerr << "imread_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
++ }
++ if (!success)
+ {
+ cvReleaseImage( &image );
+ cvReleaseMat( &matrix );
+@@ -288,6 +336,7 @@ static bool imwrite_( const string& filename, const Mat& image,
+ }
+
+ encoder->setDestination( filename );
++ CV_Assert(params.size() <= CV_IO_MAX_IMAGE_PARAMS*2);
+ bool code = encoder->write( *pimage, params );
+
+ // CV_Assert( code );
+@@ -326,16 +375,34 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
+ decoder->setSource(filename);
+ }
+
+- if( !decoder->readHeader() )
++ bool success = false;
++ try
+ {
+- if( !filename.empty() )
+- remove(filename.c_str());
++ if (decoder->readHeader())
++ success = true;
++ }
++ catch (const cv::Exception& e)
++ {
++ std::cerr << "imdecode_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
++ }
++ catch (...)
++ {
++ std::cerr << "imdecode_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
++ }
++ if (!success)
++ {
++ if (!filename.empty())
++ {
++ if (0 != remove(filename.c_str()))
++ {
++ std::cerr << "unable to remove temporary file:" << filename << std::endl << std::flush;
++ }
++ }
+ return 0;
+ }
+
+- CvSize size;
+- size.width = decoder->width();
+- size.height = decoder->height();
++ // established the required input image size
++ Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
+
+ int type = decoder->type();
+ if( flags != -1 )
+@@ -369,11 +436,30 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
+ temp = cvarrToMat(image);
+ }
+
+- bool code = decoder->readData( *data );
+- if( !filename.empty() )
+- remove(filename.c_str());
++ success = false;
++ try
++ {
++ if (decoder->readData(*data))
++ success = true;
++ }
++ catch (const cv::Exception& e)
++ {
++ std::cerr << "imdecode_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
++ }
++ catch (...)
++ {
++ std::cerr << "imdecode_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
++ }
+
+- if( !code )
++ if (!filename.empty())
++ {
++ if (0 != remove(filename.c_str()))
++ {
++ std::cerr << "unable to remove temporary file:" << filename << std::endl << std::flush;
++ }
++ }
++
++ if (!success)
+ {
+ cvReleaseImage( &image );
+ cvReleaseMat( &matrix );
+@@ -490,7 +576,7 @@ cvSaveImage( const char* filename, const CvArr* arr, const int* _params )
+ if( _params )
+ {
+ for( ; _params[i] > 0; i += 2 )
+- ;
++ CV_Assert(i < CV_IO_MAX_IMAGE_PARAMS*2); // Limit number of params for security reasons
+ }
+ return cv::imwrite_(filename, cv::cvarrToMat(arr),
+ i > 0 ? cv::vector(_params, _params+i) : cv::vector(),
+@@ -521,7 +607,7 @@ cvEncodeImage( const char* ext, const CvArr* arr, const int* _params )
+ if( _params )
+ {
+ for( ; _params[i] > 0; i += 2 )
+- ;
++ CV_Assert(i < CV_IO_MAX_IMAGE_PARAMS*2); // Limit number of params for security reasons
+ }
+ cv::Mat img = cv::cvarrToMat(arr);
+ if( CV_IS_IMAGE(arr) && ((const IplImage*)arr)->origin == IPL_ORIGIN_BL )
diff --git a/media-libs/opencv/files/opencv-2.4.2-cflags.patch b/media-libs/opencv/files/opencv-2.4.2-cflags.patch
new file mode 100644
index 000000000..d52e6b6a3
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.2-cflags.patch
@@ -0,0 +1,21 @@
+diff -ruN OpenCV-2.4.2.orig/cmake/OpenCVCompilerOptions.cmake OpenCV-2.4.2/cmake/OpenCVCompilerOptions.cmake
+--- OpenCV-2.4.2.orig/cmake/OpenCVCompilerOptions.cmake 2012-06-29 00:55:15.000000000 +0200
++++ OpenCV-2.4.2/cmake/OpenCVCompilerOptions.cmake 2012-07-16 23:51:24.244907235 +0200
+@@ -110,17 +110,6 @@
+ endif()
+
+ # Other optimizations
+- if(ENABLE_OMIT_FRAME_POINTER)
+- add_extra_compiler_option(-fomit-frame-pointer)
+- else()
+- add_extra_compiler_option(-fno-omit-frame-pointer)
+- endif()
+- if(ENABLE_FAST_MATH)
+- add_extra_compiler_option(-ffast-math)
+- endif()
+- if(ENABLE_POWERPC)
+- add_extra_compiler_option("-mcpu=G3 -mtune=G5")
+- endif()
+ if(ENABLE_SSE)
+ add_extra_compiler_option(-msse)
+ endif()
diff --git a/media-libs/opencv/files/opencv-2.4.3-gcc47.patch b/media-libs/opencv/files/opencv-2.4.3-gcc47.patch
new file mode 100644
index 000000000..13ac8f8fb
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.3-gcc47.patch
@@ -0,0 +1,22 @@
+diff -ruN OpenCV-2.4.3.orig/modules/highgui/src/grfmt_tiff.cpp OpenCV-2.4.3/modules/highgui/src/grfmt_tiff.cpp
+--- OpenCV-2.4.3.orig/modules/highgui/src/grfmt_tiff.cpp 2012-10-12 00:55:12.000000000 +0200
++++ OpenCV-2.4.3/modules/highgui/src/grfmt_tiff.cpp 2012-11-05 21:37:40.000000000 +0100
+@@ -47,6 +47,7 @@
+
+ #include "precomp.hpp"
+ #include "grfmt_tiff.hpp"
++#include "unistd.h"
+
+ namespace cv
+ {
+diff -ruN OpenCV-2.4.3.orig/modules/highgui/src/window_QT.h OpenCV-2.4.3/modules/highgui/src/window_QT.h
+--- OpenCV-2.4.3.orig/modules/highgui/src/window_QT.h 2012-10-18 00:55:38.000000000 +0200
++++ OpenCV-2.4.3/modules/highgui/src/window_QT.h 2012-11-05 21:38:41.000000000 +0100
+@@ -41,6 +41,7 @@
+ #define __OPENCV_HIGHGUI_QT_H__
+
+ #include "precomp.hpp"
++#include "unistd.h"
+
+ #if defined( HAVE_QT_OPENGL )
+ #include
diff --git a/media-libs/opencv/files/opencv-2.4.8-javamagic.patch b/media-libs/opencv/files/opencv-2.4.8-javamagic.patch
new file mode 100644
index 000000000..766abc1e0
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.8-javamagic.patch
@@ -0,0 +1,32 @@
+diff -ruN opencv-2.4.8.orig/CMakeLists.txt opencv-2.4.8/CMakeLists.txt
+--- opencv-2.4.8.orig/CMakeLists.txt 2013-12-27 18:09:18.000000000 +0100
++++ opencv-2.4.8/CMakeLists.txt 2014-01-24 22:06:12.000000000 +0100
+@@ -164,6 +164,7 @@
+ OCV_OPTION(WITH_OPENCLAMDFFT "Include AMD OpenCL FFT library support" ON IF (NOT ANDROID AND NOT IOS) )
+ OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" ON IF (NOT ANDROID AND NOT IOS) )
+ OCV_OPTION(WITH_INTELPERC "Include Intel Perceptual Computing support" OFF IF WIN32 )
++OCV_OPTION(WITH_JAVA "Include Java support" ON)
+
+ # OpenCV build components
+ # ===================================================
+@@ -449,6 +450,8 @@
+ include(cmake/OpenCVDetectPython.cmake)
+
+ # --- Java Support ---
++if(WITH_JAVA)
++
+ include(cmake/OpenCVDetectApacheAnt.cmake)
+ if(ANDROID)
+ include(cmake/OpenCVDetectAndroidSDK.cmake)
+@@ -466,6 +469,11 @@
+ SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
+ endif()
+
++else()
++ SET(ANT_EXECUTABLE "")
++ SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
++endif()
++
+ # --- OpenCL ---
+ if(WITH_OPENCL)
+ include(cmake/OpenCVDetectOpenCL.cmake)
diff --git a/media-libs/opencv/files/opencv-2.4.9-cuda-pkg-config.patch b/media-libs/opencv/files/opencv-2.4.9-cuda-pkg-config.patch
new file mode 100644
index 000000000..d7ff3c7ea
--- /dev/null
+++ b/media-libs/opencv/files/opencv-2.4.9-cuda-pkg-config.patch
@@ -0,0 +1,12 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -528,6 +528,9 @@
+ if(HAVE_CUFFT)
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_cufft_LIBRARY})
+ endif()
++ foreach(p ${CUDA_LIBS_PATH})
++ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} -L${p})
++ endforeach()
+ endif()
+
+ # ----------------------------------------------------------------------------
diff --git a/media-libs/opencv/files/opencv-3.0.0-gles.patch b/media-libs/opencv/files/opencv-3.0.0-gles.patch
new file mode 100644
index 000000000..a2629d928
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.0.0-gles.patch
@@ -0,0 +1,14 @@
+Index: opencv-2.4.11/modules/highgui/src/window_QT.cpp
+===================================================================
+--- opencv-2.4.11.orig/modules/highgui/src/window_QT.cpp
++++ opencv-2.4.11/modules/highgui/src/window_QT.cpp
+@@ -3118,7 +3118,9 @@ void OpenGlViewPort::updateGl()
+
+ void OpenGlViewPort::initializeGL()
+ {
++#ifdef GL_PERSPECTIVE_CORRECTION_HINT
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
++#endif
+ }
+
+ void OpenGlViewPort::resizeGL(int w, int h)
diff --git a/media-libs/opencv/files/opencv-3.3.0-remove-tiny-dnn-autodownload.patch b/media-libs/opencv/files/opencv-3.3.0-remove-tiny-dnn-autodownload.patch
new file mode 100644
index 000000000..6929a4c2c
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.3.0-remove-tiny-dnn-autodownload.patch
@@ -0,0 +1,27 @@
+diff -purN a/modules/dnn_modern/CMakeLists.txt b/modules/dnn_modern/CMakeLists.txt
+--- a/modules/dnn_modern/CMakeLists.txt 2017-07-31 15:58:38.000000000 +0100
++++ b/modules/dnn_modern/CMakeLists.txt 2018-01-15 17:15:15.202454388 +0000
+@@ -15,23 +15,6 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CU
+ # MODULE REQUIREMENTS
+ # ----------------------------------------------------------------------------
+
+-set(TINY_DNN_CPP_PATH "${OpenCV_BINARY_DIR}/3rdparty/tinydnn")
+-set(TINY_DNN_CPP_ROOT "${TINY_DNN_CPP_PATH}/tiny-dnn-1.0.0a3")
+-ocv_download(FILENAME "v1.0.0a3.tar.gz"
+- HASH "adb1c512e09ca2c7a6faef36f9c53e59"
+- URL
+- "${OPENCV_TINY_DNN_URL}"
+- "$ENV{OPENCV_TINY_DNN_URL}"
+- "https://github.com/tiny-dnn/tiny-dnn/archive/"
+- DESTINATION_DIR "${TINY_DNN_CPP_PATH}"
+- STATUS TINY_DNN_DOWNLOAD_SUCCESS
+- ID "tiny-dnn"
+- UNPACK RELATIVE_URL)
+-
+-if(NOT TINY_DNN_DOWNLOAD_SUCCESS)
+- message(STATUS "Failed to download tiny-dnn sources")
+-endif()
+-
+ find_package(TinyDNN QUIET)
+
+ include(CheckCXXCompilerFlag)
diff --git a/media-libs/opencv/files/opencv-3.4.0-disable-download.patch b/media-libs/opencv/files/opencv-3.4.0-disable-download.patch
new file mode 100644
index 000000000..245ad3b3d
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.0-disable-download.patch
@@ -0,0 +1,29 @@
+--- a/CMakeLists.txt 2018-05-13 20:47:11.635871328 +0200
++++ b/CMakeLists.txt 2018-05-13 20:47:49.289872617 +0200
+@@ -187,6 +187,7 @@
+ # ----------------------------------------------------------------------------
+
+ OCV_OPTION(OPENCV_ENABLE_NONFREE "Enable non-free algorithms" OFF)
++OCV_OPTION(ENABLE_DOWNLOAD "Enable download during configure" ON)
+
+ # 3rd party libs
+ OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE)
+
+--- a/cmake/OpenCVDownload.cmake 2018-05-13 21:22:14.966943336 +0200
++++ b/cmake/OpenCVDownload.cmake 2018-05-13 21:23:15.959945424 +0200
+@@ -32,6 +32,7 @@
+
+
+ function(ocv_download)
++ if(ENABLE_DOWNLOAD)
+ cmake_parse_arguments(DL "UNPACK;RELATIVE_URL" "FILENAME;HASH;DESTINATION_DIR;ID;STATUS" "URL" ${ARGN})
+
+ macro(ocv_download_log)
+@@ -236,4 +237,7 @@
+ if(OCV_DOWNLOAD_HASH_NAME)
+ set(${OCV_DOWNLOAD_HASH_NAME} "${DL_HASH}" CACHE INTERNAL "")
+ endif()
++ else()
++ message( "Download was disabled during configure phase by ENABLE_DOWNLOAD=OFF" )
++ endif()
+ endfunction()
diff --git a/media-libs/opencv/files/opencv-3.4.1-compilation-C-mode.patch b/media-libs/opencv/files/opencv-3.4.1-compilation-C-mode.patch
new file mode 100644
index 000000000..c94f206ed
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-compilation-C-mode.patch
@@ -0,0 +1,56 @@
+From 549b5df22520b60b91dd77096434d79425b31ac2 Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin
+Date: Mon, 28 May 2018 18:07:23 +0300
+Subject: [PATCH] build: workaround issues with C compilation mode
+
+- cvdef.h + cvRound (double only)
+- highgui_c.h
+---
+ modules/core/include/opencv2/core/cvdef.h | 8 +++++++-
+ modules/highgui/include/opencv2/highgui/highgui_c.h | 2 ++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h
+index a87ced09d78..4ab72b34cc1 100644
+--- a/modules/core/include/opencv2/core/cvdef.h
++++ b/modules/core/include/opencv2/core/cvdef.h
+@@ -480,7 +480,7 @@ Cv64suf;
+ // Integer types portatibility
+ #ifdef OPENCV_STDINT_HEADER
+ #include OPENCV_STDINT_HEADER
+-#else
++#elif defined(__cplusplus)
+ #if defined(_MSC_VER) && _MSC_VER < 1600 /* MSVS 2010 */
+ namespace cv {
+ typedef signed char int8_t;
+@@ -517,9 +517,15 @@ typedef ::int64_t int64_t;
+ typedef ::uint64_t uint64_t;
+ }
+ #endif
++#else // pure C
++#include
+ #endif
+
+
+ //! @}
+
++#ifndef __cplusplus
++#include "opencv2/core/fast_math.hpp" // define cvRound(double)
++#endif
++
+ #endif // OPENCV_CORE_CVDEF_H
+diff --git a/modules/highgui/include/opencv2/highgui/highgui_c.h b/modules/highgui/include/opencv2/highgui/highgui_c.h
+index 1eb414a76ca..35413139c79 100644
+--- a/modules/highgui/include/opencv2/highgui/highgui_c.h
++++ b/modules/highgui/include/opencv2/highgui/highgui_c.h
+@@ -135,8 +135,10 @@ CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOS
+ CVAPI(void) cvSetWindowProperty(const char* name, int prop_id, double prop_value);
+ CVAPI(double) cvGetWindowProperty(const char* name, int prop_id);
+
++#ifdef __cplusplus // FIXIT remove in OpenCV 4.0
+ /* Get window image rectangle coordinates, width and height */
+ CVAPI(cv::Rect)cvGetWindowImageRect(const char* name);
++#endif
+
+ /* display image within window (highgui windows remember their content) */
+ CVAPI(void) cvShowImage( const char* name, const CvArr* image );
diff --git a/media-libs/opencv/files/opencv-3.4.1-cuda-add-relaxed-constexpr.patch b/media-libs/opencv/files/opencv-3.4.1-cuda-add-relaxed-constexpr.patch
new file mode 100644
index 000000000..11ca6aa86
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-cuda-add-relaxed-constexpr.patch
@@ -0,0 +1,14 @@
+diff -Naur a/cmake/FindCUDA.cmake b/cmake/FindCUDA.cmake
+--- a/cmake/FindCUDA.cmake 2018-05-26 12:57:45.698858052 +0100
++++ b/cmake/FindCUDA.cmake 2018-05-26 16:49:01.196390803 +0100
+@@ -447,8 +447,8 @@
+ # Parse HOST_COMPILATION mode.
+ option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON)
+
+-# Extra user settable flags
+-set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.")
++ #Extra user settable flags
++set(CUDA_NVCC_FLAGS "--expt-relaxed-constexpr;" CACHE STRING "Semi-colon delimit multiple arguments.")
+
+ if(CMAKE_GENERATOR MATCHES "Visual Studio")
+ set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)Tools/MSVC/$(VCToolsVersion)/bin/Host$(Platform)/$(PlatformTarget)")
diff --git a/media-libs/opencv/files/opencv-3.4.1-fix-build-with-va.patch b/media-libs/opencv/files/opencv-3.4.1-fix-build-with-va.patch
new file mode 100644
index 000000000..813eb7e4a
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-fix-build-with-va.patch
@@ -0,0 +1,26 @@
+From 20f5fa8e3e880bc8b2e5156e9f25f7fb756ed8e4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?=
+Date: Wed, 28 Feb 2018 19:21:31 +0000
+Subject: [PATCH] Fix build with VA
+
+This commit readd ${VA_LIBRARIES} ${VA_INTEL_LIBRARIES}
+that was missed in commit 2200e13c7193e0fe9db4b9f7c4bee3a7ef043909
+
+ diff --git a/samples/va_intel/CMakeLists.txt b/samples/va_intel/CMakeLists.txt
+ - ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_VA_INTEL_SAMPLES_REQUIRED_DEPS} ${VA_LIBRARIES} ${VA_INTEL_LIBRARIES})
+ + ocv_target_link_libraries(${tgt} ${OPENCV_LINKER_LIBS} ${OPENCV_VA_INTEL_SAMPLES_REQUIRED_DEPS})
+---
+ samples/va_intel/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/samples/va_intel/CMakeLists.txt b/samples/va_intel/CMakeLists.txt
+index af51dd32061..04f2ea5fd40 100644
+--- a/samples/va_intel/CMakeLists.txt
++++ b/samples/va_intel/CMakeLists.txt
+@@ -17,5 +17,5 @@ ocv_include_modules_recurse(${OPENCV_VA_INTEL_SAMPLES_REQUIRED_DEPS})
+ file(GLOB all_samples RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)
+ foreach(sample_filename ${all_samples})
+ ocv_define_sample(tgt ${sample_filename} va_intel)
+- ocv_target_link_libraries(${tgt} ${OPENCV_LINKER_LIBS} ${OPENCV_VA_INTEL_SAMPLES_REQUIRED_DEPS})
++ ocv_target_link_libraries(${tgt} ${OPENCV_LINKER_LIBS} ${OPENCV_VA_INTEL_SAMPLES_REQUIRED_DEPS} ${VA_LIBRARIES} ${VA_INTEL_LIBRARIES})
+ endforeach()
diff --git a/media-libs/opencv/files/opencv-3.4.1-fix-on-x86.patch b/media-libs/opencv/files/opencv-3.4.1-fix-on-x86.patch
new file mode 100644
index 000000000..f36d643cf
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-fix-on-x86.patch
@@ -0,0 +1,27 @@
+From 7dc162cb4252ccf461f1c63650abde3c8807b79c Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin
+Date: Mon, 9 Apr 2018 18:25:51 +0300
+Subject: [PATCH] core: fix mm_pause() for non-SSE i386 builds
+
+replaced to safe binary compatible 'rep; nop' asm instruction
+---
+ modules/core/src/parallel_impl.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules/core/src/parallel_impl.cpp b/modules/core/src/parallel_impl.cpp
+index 78d9eb63694..bc64fce7a81 100644
+--- a/modules/core/src/parallel_impl.cpp
++++ b/modules/core/src/parallel_impl.cpp
+@@ -49,7 +49,11 @@ DECLARE_CV_YIELD
+ DECLARE_CV_PAUSE
+ #endif
+ #ifndef CV_PAUSE
+-#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
++# if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
++# if !defined(__SSE__)
++ static inline void cv_non_sse_mm_pause() { __asm__ __volatile__ ("rep; nop"); }
++# define _mm_pause cv_non_sse_mm_pause
++# endif
+ # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { _mm_pause(); } } while (0)
+ # elif defined __GNUC__ && defined __aarch64__
+ # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { asm volatile("yield" ::: "memory"); } } while (0)
diff --git a/media-libs/opencv/files/opencv-3.4.1-popcnt.patch b/media-libs/opencv/files/opencv-3.4.1-popcnt.patch
new file mode 100644
index 000000000..51a6d554a
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-popcnt.patch
@@ -0,0 +1,30 @@
+From a2d6fc7ac040c6ef94a36515f9ea24428f8f1ecc Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin
+Date: Tue, 24 Apr 2018 12:40:25 +0300
+Subject: [PATCH] cmake: fix popcnt detection
+
+via GCC/Clang __POPCNT__ define
+---
+ cmake/checks/cpu_popcnt.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/checks/cpu_popcnt.cpp b/cmake/checks/cpu_popcnt.cpp
+index 16e5575108b..44c7deda053 100644
+--- a/cmake/checks/cpu_popcnt.cpp
++++ b/cmake/checks/cpu_popcnt.cpp
+@@ -4,12 +4,14 @@
+ # define CV_POPCNT_U64 _mm_popcnt_u64
+ # endif
+ # define CV_POPCNT_U32 _mm_popcnt_u32
+-#else
++#elif defined(__POPCNT__)
+ # include
+ # if defined(__x86_64__)
+ # define CV_POPCNT_U64 __builtin_popcountll
+ # endif
+ # define CV_POPCNT_U32 __builtin_popcount
++#else
++# error "__POPCNT__ is not defined by compiler"
+ #endif
+
+ int main()
diff --git a/media-libs/opencv/files/opencv-3.4.1-python-lib-suffix-hack.patch b/media-libs/opencv/files/opencv-3.4.1-python-lib-suffix-hack.patch
new file mode 100644
index 000000000..248e5034a
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-python-lib-suffix-hack.patch
@@ -0,0 +1,13 @@
+--- a/cmake/OpenCVDetectPython.cmake 2018-05-31 09:14:42.998873104 +0200
++++ b/cmake/OpenCVDetectPython.cmake 2018-05-31 09:26:08.444914001 +0200
+@@ -140,8 +140,8 @@
+ else() #debian based assumed, install to the dist-packages.
+ set(_packages_path "python${_version_major_minor}/dist-packages")
+ endif()
+- if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${${packages_path}}")
+- set(_packages_path "lib${LIB_SUFFIX}/${_packages_path}")
++ if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIBPY_SUFFIX}/${${packages_path}}")
++ set(_packages_path "lib${LIBPY_SUFFIX}/${_packages_path}")
+ else()
+ set(_packages_path "lib/${_packages_path}")
+ endif()
diff --git a/media-libs/opencv/files/opencv-3.4.1-python37.patch b/media-libs/opencv/files/opencv-3.4.1-python37.patch
new file mode 100644
index 000000000..94d307b74
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-python37.patch
@@ -0,0 +1,12 @@
+diff -urN a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp
+--- a/modules/python/src2/cv2.cpp 2018-02-23 11:38:33.000000000 +0300
++++ b/modules/python/src2/cv2.cpp 2019-08-10 22:28:03.337071791 +0300
+@@ -886,7 +886,7 @@
+ (void)name;
+ if(!obj || obj == Py_None)
+ return true;
+- char* str = PyString_AsString(obj);
++ const char* str = PyString_AsString(obj);
+ if(!str)
+ return false;
+ value = String(str);
diff --git a/media-libs/opencv/files/opencv-3.4.1-remove-git-autodetect.patch b/media-libs/opencv/files/opencv-3.4.1-remove-git-autodetect.patch
new file mode 100644
index 000000000..94b221ab9
--- /dev/null
+++ b/media-libs/opencv/files/opencv-3.4.1-remove-git-autodetect.patch
@@ -0,0 +1,42 @@
+--- a/CMakeLists.txt 2019-01-10 19:29:06.831367707 +0100
++++ b/CMakeLists.txt 2019-01-10 19:30:11.125364384 +0100
+@@ -522,23 +522,23 @@
+ # ----------------------------------------------------------------------------
+ # Autodetect if we are in a GIT repository
+ # ----------------------------------------------------------------------------
+-find_host_package(Git QUIET)
++# find_host_package(Git QUIET)
+
+-if(NOT DEFINED OPENCV_VCSVERSION AND GIT_FOUND)
+- execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always --dirty --match "[0-9].[0-9].[0-9]*"
+- WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
+- OUTPUT_VARIABLE OPENCV_VCSVERSION
+- RESULT_VARIABLE GIT_RESULT
+- ERROR_QUIET
+- OUTPUT_STRIP_TRAILING_WHITESPACE
+- )
+- if(NOT GIT_RESULT EQUAL 0)
+- set(OPENCV_VCSVERSION "unknown")
+- endif()
+-elseif(NOT DEFINED OPENCV_VCSVERSION)
+- # We don't have git:
+- set(OPENCV_VCSVERSION "unknown")
+-endif()
++# if(NOT DEFINED OPENCV_VCSVERSION AND GIT_FOUND)
++# execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always --dirty --match "[0-9].[0-9].[0-9]*"
++# WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
++# OUTPUT_VARIABLE OPENCV_VCSVERSION
++# RESULT_VARIABLE GIT_RESULT
++# ERROR_QUIET
++# OUTPUT_STRIP_TRAILING_WHITESPACE
++# )
++# if(NOT GIT_RESULT EQUAL 0)
++# set(OPENCV_VCSVERSION "unknown")
++# endif()
++# elseif(NOT DEFINED OPENCV_VCSVERSION)
++# # We don't have git:
++# set(OPENCV_VCSVERSION "unknown")
++#endif()
+
+
+ # ----------------------------------------------------------------------------
diff --git a/media-libs/opencv/metadata.xml b/media-libs/opencv/metadata.xml
new file mode 100644
index 000000000..e9ef88171
--- /dev/null
+++ b/media-libs/opencv/metadata.xml
@@ -0,0 +1,36 @@
+
+
+
+
+ amynka@gentoo.org
+ Amy Liffey
+
+
+OpenCV (Open Source Computer Vision) is a library of programming functions mainly aimed at real time computer vision.
+Example applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition;
+Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); and Mobile Robotics.
+
+
+
+ cpe:/a:opencv:opencv
+ opencvlibrary
+ Itseez/opencv_contrib
+
+
diff --git a/media-libs/opencv/opencv-3.4.1-r7.ebuild b/media-libs/opencv/opencv-3.4.1-r7.ebuild
new file mode 100644
index 000000000..9b6c2f665
--- /dev/null
+++ b/media-libs/opencv/opencv-3.4.1-r7.ebuild
@@ -0,0 +1,513 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# ###########################################################
+# This is a temporary hack for https://bugs.gentoo.org/699730
+# Ebuild will be removed as sonn as it is fixed.
+# ###########################################################
+
+EAPI=7
+
+PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
+
+: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
+inherit java-pkg-opt-2 java-ant-2 python-r1 toolchain-funcs cmake-multilib
+
+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
+ dnn_samples? ( https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-res10_300x300-caffeemodel.tar.gz )
+ contrib? (
+ https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz
+ contrib_dnn? (
+ https://github.com/tiny-dnn/tiny-dnn/archive/v${TINY_DNN_PV}.tar.gz -> tiny-dnn-${TINY_DNN_PV}.tar.gz
+ https://dev.gentoo.org/~amynka/snap/${PN}-3.4.0-face_landmark_model.tar.gz
+ )
+ contrib_xfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz )
+ )"
+
+LICENSE="BSD"
+SLOT="0/3.4.1" # subslot = libopencv* soname version
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux"
+IUSE="contrib contrib_cvv contrib_dnn contrib_hdf contrib_sfm contrib_xfeatures2d 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 dnn_samples +eigen examples ffmpeg gdal gflags glog gphoto2 gstreamer gtk ieee1394 jpeg lapack libav opencl openexr opengl openmp pch png +python qt5 tesseract testprograms threads tiff vaapi v4l vtk webp xine"
+# 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 ) )
+ dnn_samples? ( examples )
+ gflags? ( contrib )
+ glog? ( contrib )
+ contrib_cvv? ( contrib qt5 )
+ contrib_dnn? ( contrib )
+ contrib_hdf? ( contrib )
+ contrib_sfm? ( contrib eigen gflags glog )
+ contrib_xfeatures2d? ( contrib cuda )
+ java? ( python )
+ opengl? ( || ( gtk qt5 ) )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ tesseract? ( contrib )"
+
+# The following logic is intrinsic in the build system, but we do not enforce
+# it on the useflags since this just blocks emerging pointlessly:
+# gtk? ( !qt5 )
+# 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= )
+ contrib_hdf? ( sci-libs/hdf5 )
+ ffmpeg? (
+ libav? ( media-video/libav:0=[${MULTILIB_USEDEP}] )
+ !libav? ( 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}]
+ )
+ gtk? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ x11-libs/gtk+:2[${MULTILIB_USEDEP}]
+ opengl? ( x11-libs/gtkglext[${MULTILIB_USEDEP}] )
+ )
+ ieee1394? (
+ media-libs/libdc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ java? ( >=virtual/jre-1.6:* )
+ jpeg? ( virtual/jpeg:0[${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=] )
+ threads? ( dev-cpp/tbb[${MULTILIB_USEDEP}] )
+ tiff? ( media-libs/tiff:0[${MULTILIB_USEDEP}] )
+ v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] )
+ vtk? ( sci-libs/vtk[rendering] )
+ webp? ( media-libs/libwebp[${MULTILIB_USEDEP}] )
+ xine? ( media-libs/xine-lib )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig[${MULTILIB_USEDEP}]
+ contrib_dnn? ( dev-libs/cereal )
+ eigen? ( dev-cpp/eigen:3 )
+ java? ( >=virtual/jdk-1.6 )
+ vaapi? ( x11-libs/libva )"
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/opencv2/cvconfig.h
+ /usr/include/opencv2/opencv_modules.hpp
+ # [contrib_cvv]
+ /usr/include/opencv2/cvv.hpp
+ /usr/include/opencv2/cvv/call_meta_data.hpp
+ /usr/include/opencv2/cvv/cvv.hpp
+ /usr/include/opencv2/cvv/debug_mode.hpp
+ /usr/include/opencv2/cvv/dmatch.hpp
+ /usr/include/opencv2/cvv/filter.hpp
+ /usr/include/opencv2/cvv/final_show.hpp
+ /usr/include/opencv2/cvv/show_image.hpp
+ # [contrib_hdf]
+ /usr/include/opencv2/hdf.hpp
+ /usr/include/opencv2/hdf/hdf5.hpp
+ # [vtk]
+ /usr/include/opencv2/viz.hpp
+ /usr/include/opencv2/viz/types.hpp
+ /usr/include/opencv2/viz/viz3d.hpp
+ /usr/include/opencv2/viz/vizcore.hpp
+ /usr/include/opencv2/viz/widget_accessor.hpp
+ /usr/include/opencv2/viz/widgets.hpp
+ # [cudev]
+ /usr/include/opencv2/cudaarithm.hpp
+ /usr/include/opencv2/cudabgsegm.hpp
+ /usr/include/opencv2/cudacodec.hpp
+ /usr/include/opencv2/cudafeatures2d.hpp
+ /usr/include/opencv2/cudafilters.hpp
+ /usr/include/opencv2/cudaimgproc.hpp
+ /usr/include/opencv2/cudalegacy.hpp
+ /usr/include/opencv2/cudalegacy/NCVBroxOpticalFlow.hpp
+ /usr/include/opencv2/cudalegacy/NCVHaarObjectDetection.hpp
+ /usr/include/opencv2/cudalegacy/NCV.hpp
+ /usr/include/opencv2/cudalegacy/NCVPyramid.hpp
+ /usr/include/opencv2/cudalegacy/NPP_staging.hpp
+ /usr/include/opencv2/cudaobjdetect.hpp
+ /usr/include/opencv2/cudaoptflow.hpp
+ /usr/include/opencv2/cudastereo.hpp
+ /usr/include/opencv2/cudawarping.hpp
+ /usr/include/opencv2/cudev/block/block.hpp
+ /usr/include/opencv2/cudev/block/detail/reduce.hpp
+ /usr/include/opencv2/cudev/block/detail/reduce_key_val.hpp
+ /usr/include/opencv2/cudev/block/dynamic_smem.hpp
+ /usr/include/opencv2/cudev/block/reduce.hpp
+ /usr/include/opencv2/cudev/block/scan.hpp
+ /usr/include/opencv2/cudev/block/vec_distance.hpp
+ /usr/include/opencv2/cudev/common.hpp
+ /usr/include/opencv2/cudev/expr/binary_func.hpp
+ /usr/include/opencv2/cudev/expr/binary_op.hpp
+ /usr/include/opencv2/cudev/expr/color.hpp
+ /usr/include/opencv2/cudev/expr/deriv.hpp
+ /usr/include/opencv2/cudev/expr/expr.hpp
+ /usr/include/opencv2/cudev/expr/per_element_func.hpp
+ /usr/include/opencv2/cudev/expr/reduction.hpp
+ /usr/include/opencv2/cudev/expr/unary_func.hpp
+ /usr/include/opencv2/cudev/expr/unary_op.hpp
+ /usr/include/opencv2/cudev/expr/warping.hpp
+ /usr/include/opencv2/cudev/functional/color_cvt.hpp
+ /usr/include/opencv2/cudev/functional/detail/color_cvt.hpp
+ /usr/include/opencv2/cudev/functional/functional.hpp
+ /usr/include/opencv2/cudev/functional/tuple_adapter.hpp
+ /usr/include/opencv2/cudev/grid/copy.hpp
+ /usr/include/opencv2/cudev/grid/detail/copy.hpp
+ /usr/include/opencv2/cudev/grid/detail/histogram.hpp
+ /usr/include/opencv2/cudev/grid/detail/integral.hpp
+ /usr/include/opencv2/cudev/grid/detail/minmaxloc.hpp
+ /usr/include/opencv2/cudev/grid/detail/pyr_down.hpp
+ /usr/include/opencv2/cudev/grid/detail/pyr_up.hpp
+ /usr/include/opencv2/cudev/grid/detail/reduce.hpp
+ /usr/include/opencv2/cudev/grid/detail/reduce_to_column.hpp
+ /usr/include/opencv2/cudev/grid/detail/reduce_to_row.hpp
+ /usr/include/opencv2/cudev/grid/detail/split_merge.hpp
+ /usr/include/opencv2/cudev/grid/detail/transform.hpp
+ /usr/include/opencv2/cudev/grid/detail/transpose.hpp
+ /usr/include/opencv2/cudev/grid/histogram.hpp
+ /usr/include/opencv2/cudev/grid/integral.hpp
+ /usr/include/opencv2/cudev/grid/pyramids.hpp
+ /usr/include/opencv2/cudev/grid/reduce.hpp
+ /usr/include/opencv2/cudev/grid/reduce_to_vec.hpp
+ /usr/include/opencv2/cudev/grid/split_merge.hpp
+ /usr/include/opencv2/cudev/grid/transform.hpp
+ /usr/include/opencv2/cudev/grid/transpose.hpp
+ /usr/include/opencv2/cudev.hpp
+ /usr/include/opencv2/cudev/ptr2d/constant.hpp
+ /usr/include/opencv2/cudev/ptr2d/deriv.hpp
+ /usr/include/opencv2/cudev/ptr2d/detail/gpumat.hpp
+ /usr/include/opencv2/cudev/ptr2d/extrapolation.hpp
+ /usr/include/opencv2/cudev/ptr2d/glob.hpp
+ /usr/include/opencv2/cudev/ptr2d/gpumat.hpp
+ /usr/include/opencv2/cudev/ptr2d/interpolation.hpp
+ /usr/include/opencv2/cudev/ptr2d/lut.hpp
+ /usr/include/opencv2/cudev/ptr2d/mask.hpp
+ /usr/include/opencv2/cudev/ptr2d/remap.hpp
+ /usr/include/opencv2/cudev/ptr2d/resize.hpp
+ /usr/include/opencv2/cudev/ptr2d/texture.hpp
+ /usr/include/opencv2/cudev/ptr2d/traits.hpp
+ /usr/include/opencv2/cudev/ptr2d/transform.hpp
+ /usr/include/opencv2/cudev/ptr2d/warping.hpp
+ /usr/include/opencv2/cudev/ptr2d/zip.hpp
+ /usr/include/opencv2/cudev/util/atomic.hpp
+ /usr/include/opencv2/cudev/util/detail/tuple.hpp
+ /usr/include/opencv2/cudev/util/detail/type_traits.hpp
+ /usr/include/opencv2/cudev/util/limits.hpp
+ /usr/include/opencv2/cudev/util/saturate_cast.hpp
+ /usr/include/opencv2/cudev/util/simd_functions.hpp
+ /usr/include/opencv2/cudev/util/tuple.hpp
+ /usr/include/opencv2/cudev/util/type_traits.hpp
+ /usr/include/opencv2/cudev/util/vec_math.hpp
+ /usr/include/opencv2/cudev/util/vec_traits.hpp
+ /usr/include/opencv2/cudev/warp/detail/reduce.hpp
+ /usr/include/opencv2/cudev/warp/detail/reduce_key_val.hpp
+ /usr/include/opencv2/cudev/warp/reduce.hpp
+ /usr/include/opencv2/cudev/warp/scan.hpp
+ /usr/include/opencv2/cudev/warp/shuffle.hpp
+ /usr/include/opencv2/cudev/warp/warp.hpp
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.0.0-gles.patch"
+ "${FILESDIR}/${PN}-3.4.0-disable-download.patch"
+ "${FILESDIR}/${P}-compilation-C-mode.patch" # https://bugs.gentoo.org/656530
+ "${FILESDIR}/${P}-python-lib-suffix-hack.patch"
+ "${FILESDIR}/${P}-cuda-add-relaxed-constexpr.patch"
+ "${FILESDIR}/${P}-remove-git-autodetect.patch"
+ "${FILESDIR}/${P}-fix-build-with-va.patch" # bug https://bugs.gentoo.org/656576
+ "${FILESDIR}/${P}-popcnt.patch" # https://bugs.gentoo.org/633900
+ "${FILESDIR}/${P}-fix-on-x86.patch" # https://bugs.gentoo.org/682104
+ "${FILESDIR}/${P}-python37.patch" # https://bugs.gentoo.org/691480
+)
+
+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-utils_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 dnn_samples; 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
+ eapply "${FILESDIR}/${PN}-3.3.0-remove-tiny-dnn-autodownload.patch"
+
+ if use contrib_xfeatures2d; then
+ mv "${WORKDIR}"/*.i "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die
+ fi
+ 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=OFF
+ -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 gtk)
+ -DWITH_GTK_2_X=$(usex gtk)
+ -DWITH_IPP=OFF
+ -DWITH_JASPER=OFF
+ -DWITH_JPEG=$(usex jpeg)
+ -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=
+ -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=$(multilib_native_usex java)
+ # -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
+ # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX}
+ # to set its destination libdir
+ -DLIB_SUFFIX=
+ # ===================================================
+ # OpenCV build options
+ # ===================================================
+ -DENABLE_CCACHE=OFF
+ -DENABLE_PRECOMPILED_HEADERS=$(usex pch)
+ -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
+ # ===================================================
+ # 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=
+ # ==================================================
+ # cpu flags, should solve 633900
+ #===================================================
+ -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON
+ -DCPU_DISPATCH=
+ -DENABLE_SSE=$(usex cpu_flags_x86_sse)
+ -DENABLE_SSE2=$(usex cpu_flags_x86_sse2)
+ -DENABLE_SSE3=$(usex cpu_flags_x86_sse3)
+ -DENABLE_SSSE3=$(usex cpu_flags_x86_ssse3)
+ -DENABLE_SSE41=$(usex cpu_flags_x86_sse4_1)
+ -DENABLE_SSE42=$(usex cpu_flags_x86_sse4_2)
+ -DENABLE_POPCNT=$(usex cpu_flags_x86_popcnt)
+ -DENABLE_AVX=$(usex cpu_flags_x86_avx)
+ -DENABLE_AVX2=$(usex cpu_flags_x86_avx2)
+ -DENABLE_FMA3=$(usex cpu_flags_x86_fma3)
+ )
+
+ # ===================================================
+ # OpenCV Contrib Modules
+ # ===================================================
+ if use contrib; then
+ GLOBALCMAKEARGS+=(
+ -DBUILD_opencv_dnn=$(usex contrib_dnn ON OFF)
+ -DTINYDNN_ROOT="${WORKDIR}/tiny-dnn-${TINY_DNN_PV}"
+ -DBUILD_opencv_dnns_easily_fooled=OFF
+ -DBUILD_opencv_xfeatures2d=$(usex contrib_xfeatures2d ON OFF)
+ -DBUILD_opencv_cvv=$(usex contrib_cvv ON OFF)
+ -DBUILD_opencv_hdf=$(multilib_native_usex contrib_hdf ON OFF)
+ -DBUILD_opencv_sfm=$(usex contrib_sfm 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
+ )
+
+ cmake-utils_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 contrib_dnn; 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=python
+ -DINSTALL_PYTHON_EXAMPLES=$(usex examples)
+
+ # Here's the hack for profile 17.1
+ # -DLIBPY_SUFFIX=64
+
+ )
+
+ # 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-utils_src_configure
+ cmake-utils_src_compile
+ cmake-utils_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"
+}
+
+multilib_src_install() {
+ cmake-utils_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
+}