diff --git a/Help/release/dev/FindBLAS-LAPACK-libblastrampoline.rst b/Help/release/dev/FindBLAS-LAPACK-libblastrampoline.rst new file mode 100644 index 0000000000..d1f2148289 --- /dev/null +++ b/Help/release/dev/FindBLAS-LAPACK-libblastrampoline.rst @@ -0,0 +1,5 @@ +FindBLAS-LAPACK-libblastrampoline +--------------------------------- + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules gained + support for ``libblastrampoline``. diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index e9b118f243..2fc01d0c79 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -164,6 +164,11 @@ BLAS/LAPACK Vendors Intel MKL v10+ 64 bit, single dynamic library +``libblastrampoline`` + .. versionadded:: 3.30 + + A BLAS/LAPACK demuxing library using PLT trampolines + ``NVHPC`` .. versionadded:: 3.21 @@ -1352,6 +1357,31 @@ if(BLA_VENDOR STREQUAL "NVHPC" OR BLA_VENDOR STREQUAL "All") unset(_blas_nvhpc_lib) endif() +# libblastrampoline? (https://github.com/JuliaLinearAlgebra/libblastrampoline/tree/main) +if(BLA_VENDOR STREQUAL "libblastrampoline" OR BLA_VENDOR STREQUAL "All") + set(_blas_libblastrampoline_lib "blastrampoline") + + if(WIN32) + # Windows appends the version number to the library + string(APPEND _blas_libblastrampoline_lib "-5") + endif() + + if(NOT BLAS_LIBRARIES) + check_blas_libraries( + BLAS_LIBRARIES + BLAS + sgemm + "" + "${_blas_libblastrampoline_lib}" + "" + "" + "" + ) + endif() + + unset(_blas_libblastrampoline_lib) +endif() + # Generic BLAS library? if(BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All") diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index e142516cf2..bbf25b68b6 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -742,6 +742,14 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) unset(_lapack_nvhpc_flags) endif() + # libblastrampoline? (https://github.com/JuliaLinearAlgebra/libblastrampoline/tree/main) + if(NOT LAPACK_LIBRARIES + AND (BLA_VENDOR STREQUAL "libblastrampoline" OR BLA_VENDOR STREQUAL "All")) + if(BLAS_LIBRARIES MATCHES "blastrampoline.+") + set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) + endif() + endif() + # Generic LAPACK library? if(NOT LAPACK_LIBRARIES AND (BLA_VENDOR STREQUAL "Generic"