summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media-libs/opencv/files/opencv-3.4.1-popcnt.patch30
-rw-r--r--media-libs/opencv/opencv-3.4.1-r5.ebuild1
2 files changed, 31 insertions, 0 deletions
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 000000000000..51a6d554a252
--- /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 <alexander.alekhin@intel.com>
+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 <popcntintrin.h>
+ # 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/opencv-3.4.1-r5.ebuild b/media-libs/opencv/opencv-3.4.1-r5.ebuild
index 45086698e736..c8bf140695b9 100644
--- a/media-libs/opencv/opencv-3.4.1-r5.ebuild
+++ b/media-libs/opencv/opencv-3.4.1-r5.ebuild
@@ -233,6 +233,7 @@ PATCHES=(
"${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
)
pkg_pretend() {