Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 757507 Details for
Bug 800539
media-libs/opencv-4.5.4: fails to build with sci-libs/lapack-3.10.0
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
new patch that doesn't deactivate LAPACK like the previous one does
opencv-4.5.2-lapack-3.10.patch (text/plain), 8.64 KB, created by
Benjamin Réveillé
on 2021-12-05 18:56:55 UTC
(
hide
)
Description:
new patch that doesn't deactivate LAPACK like the previous one does
Filename:
MIME Type:
Creator:
Benjamin Réveillé
Created:
2021-12-05 18:56:55 UTC
Size:
8.64 KB
patch
obsolete
>diff --git a/cmake/OpenCVFindLAPACK.cmake b/cmake/OpenCVFindLAPACK.cmake >index 226825d15b..2a885e8028 100644 >--- a/cmake/OpenCVFindLAPACK.cmake >+++ b/cmake/OpenCVFindLAPACK.cmake >@@ -51,6 +51,13 @@ macro(ocv_lapack_check) > if(NOT "${OPENCV_CBLAS_H_PATH_${_lapack_impl}}" STREQUAL "${OPENCV_LAPACKE_H_PATH_${_lapack_impl}}") > list(APPEND _lapack_content "#include \"${OPENCV_LAPACKE_H_PATH_${_lapack_impl}}\"") > endif() >+ list(APPEND _lapack_content " >+#ifdef OPENCV_USE_LAPACK_PREFIX >+#define LAPACK_FUNC(f) LAPACK_##f >+#else >+#define LAPACK_FUNC(f) f##_ >+#endif >+") > if(${_lapack_add_extern_c}) > list(APPEND _lapack_content "}") > endif() >@@ -156,8 +163,16 @@ if(WITH_LAPACK) > if(WIN32 AND NOT OPENCV_LAPACK_SHARED_LIBS) > set(BLA_STATIC 1) > endif() >- find_package(LAPACK) >+ find_package(LAPACK CONFIG) > if(LAPACK_FOUND) >+ set(USE_LAPACK_PREFIX_MIN_VERSION "3.9.1") >+ if(LAPACK_VERSION VERSION_GREATER_EQUAL USE_LAPACK_PREFIX_MIN_VERSION) >+ message(STATUS "Setting OPENCV_USE_LAPACK_PREFIX to ON as LAPACK_VERSION=${LAPACK_VERSION} >= USE_LAPACK_PREFIX_MIN_VERSION=${USE_LAPACK_PREFIX_MIN_VERSION}") >+ set(OPENCV_USE_LAPACK_PREFIX ON) >+ else() >+ message(STATUS "Setting OPENCV_USE_LAPACK_PREFIX to OFF as LAPACK_VERSION=${LAPACK_VERSION} < USE_LAPACK_PREFIX_MIN_VERSION=${USE_LAPACK_PREFIX_MIN_VERSION}") >+ set(OPENCV_USE_LAPACK_PREFIX OFF) >+ endif() > if(NOT DEFINED LAPACKE_INCLUDE_DIR) > find_path(LAPACKE_INCLUDE_DIR "lapacke.h") > endif() >@@ -210,4 +225,7 @@ if(WITH_LAPACK) > set(LAPACK_LAPACKE_H ${LAPACK_LAPACKE_H} CACHE STRING "Alternative name of lapacke.h" FORCE) > set(LAPACK_LIBRARIES ${LAPACK_LIBRARIES} CACHE STRING "Names of BLAS & LAPACK binaries (.so, .dll, .a, .lib)" FORCE) > set(LAPACK_IMPL ${LAPACK_IMPL} CACHE STRING "Lapack implementation id" FORCE) >+ if(OPENCV_USE_LAPACK_PREFIX) >+ add_definitions(-DOPENCV_USE_LAPACK_PREFIX) >+ endif() > endif() >diff --git a/modules/core/src/hal_internal.cpp b/modules/core/src/hal_internal.cpp >index 483281d1f7..3f761e48d6 100644 >--- a/modules/core/src/hal_internal.cpp >+++ b/modules/core/src/hal_internal.cpp >@@ -163,9 +163,9 @@ lapack_Cholesky(fptype* a, size_t a_step, int m, fptype* b, size_t b_step, int n > if(n == 1 && b_step == sizeof(fptype)) > { > if(typeid(fptype) == typeid(float)) >- sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus); >+ LAPACK_FUNC(sposv)(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus); > else if(typeid(fptype) == typeid(double)) >- dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus); >+ LAPACK_FUNC(dposv)(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus); > } > else > { >@@ -174,9 +174,9 @@ lapack_Cholesky(fptype* a, size_t a_step, int m, fptype* b, size_t b_step, int n > transpose(b, ldb, tmpB, m, m, n); > > if(typeid(fptype) == typeid(float)) >- sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus); >+ LAPACK_FUNC(sposv)(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus); > else if(typeid(fptype) == typeid(double)) >- dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus); >+ LAPACK_FUNC(dposv)(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus); > > transpose(tmpB, m, b, ldb, n, m); > delete[] tmpB; >@@ -185,9 +185,9 @@ lapack_Cholesky(fptype* a, size_t a_step, int m, fptype* b, size_t b_step, int n > else > { > if(typeid(fptype) == typeid(float)) >- spotrf_(L, &m, (float*)a, &lda, &lapackStatus); >+ LAPACK_FUNC(spotrf)(L, &m, (float*)a, &lda, &lapackStatus); > else if(typeid(fptype) == typeid(double)) >- dpotrf_(L, &m, (double*)a, &lda, &lapackStatus); >+ LAPACK_FUNC(dpotrf)(L, &m, (double*)a, &lda, &lapackStatus); > } > > if(lapackStatus == 0) *info = true; >@@ -227,17 +227,17 @@ lapack_SVD(fptype* a, size_t a_step, fptype *w, fptype* u, size_t u_step, fptype > } > > if(typeid(fptype) == typeid(float)) >- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info); >+ LAPACK_FUNC(sgesdd)(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info); > else if(typeid(fptype) == typeid(double)) >- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info); >+ LAPACK_FUNC(dgesdd)(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info); > > lwork = (int)round(work1); //optimal buffer size > fptype* buffer = new fptype[lwork + 1]; > > if(typeid(fptype) == typeid(float)) >- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info); >+ LAPACK_FUNC(sgesdd)(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info); > else if(typeid(fptype) == typeid(double)) >- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info); >+ LAPACK_FUNC(dgesdd)(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info); > > if(!(flags & CV_HAL_SVD_NO_UV)) > transpose_square_inplace(vt, ldv, n); >@@ -288,18 +288,18 @@ lapack_QR(fptype* a, size_t a_step, int m, int n, int k, fptype* b, size_t b_ste > if (k == 1 && b_step == sizeof(fptype)) > { > if (typeid(fptype) == typeid(float)) >- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info); >+ LAPACK_FUNC(sgels)(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info); > else if (typeid(fptype) == typeid(double)) >- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info); >+ LAPACK_FUNC(dgels)(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info); > > lwork = cvRound(work1); //optimal buffer size > std::vector<fptype> workBufMemHolder(lwork + 1); > fptype* buffer = &workBufMemHolder.front(); > > if (typeid(fptype) == typeid(float)) >- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info); >+ LAPACK_FUNC(sgels)(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info); > else if (typeid(fptype) == typeid(double)) >- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info); >+ LAPACK_FUNC(dgels)(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info); > } > else > { >@@ -309,18 +309,18 @@ lapack_QR(fptype* a, size_t a_step, int m, int n, int k, fptype* b, size_t b_ste > transpose(b, ldb, tmpB, m, m, k); > > if (typeid(fptype) == typeid(float)) >- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info); >+ LAPACK_FUNC(sgels)(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info); > else if (typeid(fptype) == typeid(double)) >- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info); >+ LAPACK_FUNC(dgels)(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info); > > lwork = cvRound(work1); //optimal buffer size > std::vector<fptype> workBufMemHolder(lwork + 1); > fptype* buffer = &workBufMemHolder.front(); > > if (typeid(fptype) == typeid(float)) >- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info); >+ LAPACK_FUNC(sgels)(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info); > else if (typeid(fptype) == typeid(double)) >- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info); >+ LAPACK_FUNC(dgels)(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info); > > transpose(tmpB, m, b, ldb, k, m); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 800539
:
721828
|
727533
|
728904
| 757507