commit:     a2a45a58b8e6590a544dad4295f3aac6ba9fbaa3
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Wed Sep 10 16:32:11 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Sep 10 20:27:41 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a2a45a58

media-libs/opencv: 4.12.0 fix blas/lapack handling

Closes: https://bugs.gentoo.org/962527
Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/43729
Closes: https://github.com/gentoo/gentoo/pull/43729
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../opencv-4.12.0-link-with-cblas-for-lapack.patch | 20 +++++++++++++++++
 media-libs/opencv/opencv-4.12.0-r1.ebuild          | 26 +++++++++++++++-------
 2 files changed, 38 insertions(+), 8 deletions(-)

diff --git 
a/media-libs/opencv/files/opencv-4.12.0-link-with-cblas-for-lapack.patch 
b/media-libs/opencv/files/opencv-4.12.0-link-with-cblas-for-lapack.patch
new file mode 100644
index 000000000000..4f0fb04e0f1c
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.12.0-link-with-cblas-for-lapack.patch
@@ -0,0 +1,20 @@
+diff --git a/cmake/OpenCVFindLAPACK.cmake b/cmake/OpenCVFindLAPACK.cmake
+index 2ec1889..ff6adf2 100644
+--- a/cmake/OpenCVFindLAPACK.cmake
++++ b/cmake/OpenCVFindLAPACK.cmake
+@@ -229,12 +229,13 @@ if(WITH_LAPACK)
+         if(NOT DEFINED CBLAS_INCLUDE_DIR)
+           find_path(CBLAS_INCLUDE_DIR "cblas.h")
+         endif()
+-        if(CBLAS_INCLUDE_DIR AND LAPACKE_INCLUDE_DIR)
++        find_package(CBLAS)
++        if(CBLAS_INCLUDE_DIR AND LAPACKE_INCLUDE_DIR AND CBLAS_FOUND)
+           ocv_lapack_check(IMPL "LAPACK/Generic"
+             CBLAS_H "cblas.h"
+             LAPACKE_H "lapacke.h"
+             INCLUDE_DIR "${CBLAS_INCLUDE_DIR}" "${LAPACKE_INCLUDE_DIR}"
+-            LIBRARIES "${LAPACK_LIBRARIES}")
++            LIBRARIES "${LAPACK_LIBRARIES};${CBLAS_LIBRARIES}")
+         elseif(APPLE)
+           ocv_lapack_check(IMPL "LAPACK/Apple"
+             CBLAS_H "Accelerate/Accelerate.h"

diff --git a/media-libs/opencv/opencv-4.12.0-r1.ebuild 
b/media-libs/opencv/opencv-4.12.0-r1.ebuild
index 87958fe8fabd..2ee715741560 100644
--- a/media-libs/opencv/opencv-4.12.0-r1.ebuild
+++ b/media-libs/opencv/opencv-4.12.0-r1.ebuild
@@ -239,7 +239,10 @@ COMMON_DEPEND="
        )
        lapack? (
                atlas? ( sci-libs/atlas )
-               mkl? ( sci-libs/mkl )
+               mkl? (
+                       sci-libs/mkl[tbb?]
+                       openmp? ( sci-libs/mkl[gnu-openmp] )
+               )
                !atlas? (
                        !mkl? (
                                virtual/cblas
@@ -365,6 +368,7 @@ PATCHES=(
        "${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.12.0-link-with-cblas-for-lapack.patch"
 
        "${FILESDIR}/${PN}-4.8.1-use-system-flatbuffers.patch"
        "${FILESDIR}/${PN}-4.8.1-use-system-opencl.patch"
@@ -1123,13 +1127,19 @@ multilib_src_configure() {
                )
        fi
 
-       if use mkl; then
-               mycmakeargs+=(
-                       -DLAPACK_IMPL="MKL"
-                       -DWITH_MKL="yes"
-                       -DMKL_WITH_OPENMP="$(usex openmp)"
-                       -DMKL_WITH_TBB="$(usex tbb)"
-               )
+       if multilib_native_use lapack; then
+               if use mkl; then
+                       mycmakeargs+=(
+                               -DWITH_MKL="yes"
+                               -DMKL_WITH_OPENMP="$(usex openmp)"
+                               -DMKL_WITH_TBB="$(usex tbb)"
+                       )
+               else
+                       mycmakeargs+=(
+                               -DSKIP_OPENBLAS_PACKAGE="yes"
+                               -DOPENCV_LAPACK_DISABLE_MKL="yes"
+                       )
+               fi
        fi
 
        if use gtk3 || use qt6 || use wayland; then

Reply via email to