|
|
@@ -190,22 +190,16 @@ endmacro()
|
|
|
|
|
|
# TODO: move this stuff to a separate module
|
|
|
|
|
|
-macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _addlibdir _subdirs _blas)
|
|
|
- # This macro checks for the existence of the combination of fortran libraries
|
|
|
- # given by _list. If the combination is found, this macro checks (using the
|
|
|
- # Check_Fortran_Function_Exists macro) whether can link against that library
|
|
|
- # combination using the name of a routine given by _name using the linker
|
|
|
- # flags given by _flags. If the combination of libraries is found and passes
|
|
|
- # the link test, LIBRARIES is set to the list of complete library paths that
|
|
|
- # have been found. Otherwise, LIBRARIES is set to FALSE.
|
|
|
-
|
|
|
- # N.B. _prefix is the prefix applied to the names of all cached variables that
|
|
|
- # are generated internally and marked advanced by this macro.
|
|
|
- # _addlibdir is a list of additional search paths. _subdirs is a list of path
|
|
|
- # suffixes to be used by find_library().
|
|
|
+function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlibdir _subdirs _blas)
|
|
|
+ # This function checks for the existence of the combination of libraries
|
|
|
+ # given by _list. If the combination is found, this checks whether can link
|
|
|
+ # against that library combination using the name of a routine given by _name
|
|
|
+ # using the linker flags given by _flags. If the combination of libraries is
|
|
|
+ # found and passes the link test, ${LIBRARIES} is set to the list of complete
|
|
|
+ # library paths that have been found. Otherwise, ${LIBRARIES} is set to FALSE.
|
|
|
|
|
|
set(_libraries_work TRUE)
|
|
|
- set(${LIBRARIES})
|
|
|
+ set(_libraries)
|
|
|
set(_combined_name)
|
|
|
|
|
|
set(_extaddlibdir "${_addlibdir}")
|
|
|
@@ -218,13 +212,16 @@ macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _a
|
|
|
endif()
|
|
|
list(APPEND _extaddlibdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
|
|
|
|
|
|
- foreach(_library ${_list} ${_threadlibs})
|
|
|
- if(_library MATCHES "^-Wl,--(start|end)-group$")
|
|
|
- # Respect linker flags like --start/end-group (required by MKL)
|
|
|
- set(${LIBRARIES} ${${LIBRARIES}} "${_library}")
|
|
|
+ foreach(_library ${_list})
|
|
|
+ if(_library MATCHES "^-")
|
|
|
+ # Respect linker flags as-is (required by MKL)
|
|
|
+ list(APPEND _libraries "${_library}")
|
|
|
else()
|
|
|
string(REGEX REPLACE "[^A-Za-z0-9]" "_" _lib_var "${_library}")
|
|
|
set(_combined_name ${_combined_name}_${_lib_var})
|
|
|
+ if(NOT "${_deps}" STREQUAL "")
|
|
|
+ set(_combined_name ${_combined_name}_deps)
|
|
|
+ endif()
|
|
|
if(_libraries_work)
|
|
|
find_library(${_prefix}_${_lib_var}_LIBRARY
|
|
|
NAMES ${_library}
|
|
|
@@ -233,12 +230,11 @@ macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _a
|
|
|
PATH_SUFFIXES ${_subdirs}
|
|
|
)
|
|
|
mark_as_advanced(${_prefix}_${_lib_var}_LIBRARY)
|
|
|
- set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_lib_var}_LIBRARY})
|
|
|
+ list(APPEND _libraries ${${_prefix}_${_lib_var}_LIBRARY})
|
|
|
set(_libraries_work ${${_prefix}_${_lib_var}_LIBRARY})
|
|
|
endif()
|
|
|
endif()
|
|
|
endforeach()
|
|
|
- unset(_library)
|
|
|
|
|
|
foreach(_flag ${_flags})
|
|
|
string(REGEX REPLACE "[^A-Za-z0-9]" "_" _flag_var "${_flag}")
|
|
|
@@ -246,7 +242,7 @@ macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _a
|
|
|
endforeach()
|
|
|
if(_libraries_work)
|
|
|
# Test this combination of libraries.
|
|
|
- set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_blas} ${_threadlibs})
|
|
|
+ set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${_libraries} ${_blas} ${_deps})
|
|
|
if(CMAKE_Fortran_COMPILER_LOADED)
|
|
|
check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
|
|
|
else()
|
|
|
@@ -258,18 +254,15 @@ macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _a
|
|
|
|
|
|
if(_libraries_work)
|
|
|
if("${_list}${_blas}" STREQUAL "")
|
|
|
- set(${LIBRARIES} "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
|
|
|
+ set(_libraries "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
|
|
|
else()
|
|
|
- set(${LIBRARIES} ${${LIBRARIES}} ${_blas} ${_threadlibs})
|
|
|
+ list(APPEND _libraries ${_blas} ${_deps})
|
|
|
endif()
|
|
|
else()
|
|
|
- set(${LIBRARIES} FALSE)
|
|
|
+ set(_libraries FALSE)
|
|
|
endif()
|
|
|
-
|
|
|
- unset(_extaddlibdir)
|
|
|
- unset(_libraries_work)
|
|
|
- unset(_combined_name)
|
|
|
-endmacro()
|
|
|
+ set(${LIBRARIES} "${_libraries}" PARENT_SCOPE)
|
|
|
+endfunction()
|
|
|
|
|
|
macro(_lapack_find_dependency dep)
|
|
|
set(_lapack_quiet_arg)
|