Просмотр исходного кода

Find{BLAS,LAPACK}: Simplify search for static libraries

Now that `CHECK_{BLAS,LAPACK}_LIBRARIES` are functions, we can set
`CMAKE_FIND_LIBRARY_SUFFIXES` locally without affecting the global
state.  This avoids the need for local state switching that was added in
commit 9ef82d95d8 (FindBLAS: Fix detection of OpenMP as dependency of
BLA_STATIC, 2021-04-07, v3.20.1~3^2), so remove that.
Brad King 4 лет назад
Родитель
Сommit
193714d67d
2 измененных файлов с 26 добавлено и 44 удалено
  1. 13 19
      Modules/FindBLAS.cmake
  2. 13 25
      Modules/FindLAPACK.cmake

+ 13 - 19
Modules/FindBLAS.cmake

@@ -189,20 +189,6 @@ if(BLA_PREFER_PKGCONFIG)
   endif()
 endif()
 
-set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-if(BLA_STATIC)
-  if(WIN32)
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  endif()
-else()
-  if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    # for ubuntu's libblas3gf and liblapack3gf packages
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
-  endif()
-endif()
-
 # TODO: move this stuff to a separate module
 
 function(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlibdir _subdirs)
@@ -217,6 +203,19 @@ function(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlib
   set(_libraries)
   set(_combined_name)
 
+  if(BLA_STATIC)
+    if(WIN32)
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    else()
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    endif()
+  else()
+    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+      # for ubuntu's libblas3gf and liblapack3gf packages
+      set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
+    endif()
+  endif()
+
   set(_extaddlibdir "${_addlibdir}")
   if(WIN32)
     list(APPEND _extaddlibdir ENV LIB)
@@ -626,8 +625,6 @@ if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
     endif()
     set(_threadlibs "${CMAKE_THREAD_LIBS_INIT}")
     if(BLA_STATIC)
-      set(_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}")
-      set(CMAKE_FIND_LIBRARY_SUFFIXES "${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}")
       if (CMAKE_C_COMPILER_LOADED)
         find_package(OpenMP COMPONENTS C)
         list(PREPEND _threadlibs "${OpenMP_C_LIBRARIES}")
@@ -635,8 +632,6 @@ if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
         find_package(OpenMP COMPONENTS CXX)
         list(PREPEND _threadlibs "${OpenMP_CXX_LIBRARIES}")
       endif()
-      set(CMAKE_FIND_LIBRARY_SUFFIXES "${_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES}")
-      unset(_blas_STATIC_CMAKE_FIND_LIBRARY_SUFFIXES)
     endif()
     check_blas_libraries(
       BLAS_LIBRARIES
@@ -1084,4 +1079,3 @@ if(NOT BLA_F95)
 endif()
 
 _add_blas_target()
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})

+ 13 - 25
Modules/FindLAPACK.cmake

@@ -162,27 +162,6 @@ function(_add_lapack_target)
   endif()
 endfunction()
 
-macro(_lapack_find_library_setup)
-  set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  if(BLA_STATIC)
-    if(WIN32)
-      set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
-    else()
-      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-    endif()
-  else()
-    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-      # for ubuntu's libblas3gf and liblapack3gf packages
-      set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
-    endif()
-  endif()
-endmacro()
-
-macro(_lapack_find_library_teardown)
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-  unset(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
-endmacro()
-
 # TODO: move this stuff to a separate module
 
 function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlibdir _subdirs _blas)
@@ -197,6 +176,19 @@ function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addl
   set(_libraries)
   set(_combined_name)
 
+  if(BLA_STATIC)
+    if(WIN32)
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    else()
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    endif()
+  else()
+    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+      # for ubuntu's libblas3gf and liblapack3gf packages
+      set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
+    endif()
+  endif()
+
   set(_extaddlibdir "${_addlibdir}")
   if(WIN32)
     list(APPEND _extaddlibdir ENV LIB)
@@ -281,8 +273,6 @@ macro(_lapack_find_dependency dep)
   set(_lapack_quiet_arg)
 endmacro()
 
-_lapack_find_library_setup()
-
 set(LAPACK_LINKER_FLAGS)
 set(LAPACK_LIBRARIES)
 set(LAPACK95_LIBRARIES)
@@ -667,5 +657,3 @@ if(LAPACK_LIBRARIES STREQUAL "LAPACK_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
 endif()
 
 _add_lapack_target()
-
-_lapack_find_library_teardown()