media-libs/opencv: fix popcnt detection
authorAmy Liffey <amynka@gentoo.org>
Thu, 24 Jan 2019 08:54:25 +0000 (09:54 +0100)
committerAmy Liffey <amynka@gentoo.org>
Thu, 24 Jan 2019 09:24:08 +0000 (10:24 +0100)
Closes: https://bugs.gentoo.org/633900
Submitted-by: Branko Grubic <bitlord0xff@gmail.com>
Signed-off-by: Amy Liffey <amynka@gentoo.org>
Package-Manager: Portage-2.3.49, Repoman-2.3.11

media-libs/opencv/files/opencv-3.4.1-popcnt.patch [new file with mode: 0644]
media-libs/opencv/opencv-3.4.1-r5.ebuild

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 (file)
index 0000000..51a6d55
--- /dev/null
@@ -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()
index 45086698e73615435ebfa7929482de5db762c0b0..c8bf140695b97c6ce97c59ca5e9aa84923874063 100644 (file)
@@ -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() {