@@ -16,9 +16,9 @@ Input Variables
1616
1717The following variables may be set to influence this module's behavior:
1818
19- ``CBLAS_PREFER_PKGCONFIG ``
19+ ``LAPACKE_PREFER_PKGCONFIG ``
2020
21- If set ``pkg-config`` will be used to search for a CBLAS library
21+ If set ``pkg-config`` will be used to search for a LAPACKE library
2222 and if one is found that is used.
2323 Note: this is currently the only method.
2424
@@ -48,61 +48,88 @@ This module defines the following variables:
4848``LAPACKE_LIBRARIES``
4949 list of libraries (using full path name) to link against to use LAPACKE
5050``LAPACKE_INCLUDE_DIRS``
51- path to the CBLAS include directory.
51+ path to the LAPACKE include directory.
5252``LAPACKE_VERSION``
5353 version of the module providing LAPACKE
5454
5555#]=======================================================================]
5656
5757set (_default_pkgs lapacke openblas)
5858
59+ set (LAPACKE_FOUND)
60+ set (LAPACKE_LIBRARIES)
61+ set (LAPACKE_INCLUDEDIR)
62+ set (LAPACKE_INCLUDE_DIRS)
63+ set (LAPACKE_VERSION)
64+ set (LAPACKE_LINKER_FLAGS)
65+ set (HAVE_LAPACKE_DGESV)
66+
67+ macro (_test_package )
68+ pkg_check_modules (PKGC_LAPACKE QUIET ${LAPACKE_PKGCONFIG} )
69+ if (PKGC_LAPACKE_FOUND)
70+ set (_lapacke_found ${PKGC_LAPACKE_FOUND} )
71+ set (_lapacke_libraries "${PKGC_LAPACKE_LINK_LIBRARIES} " )
72+ if (MSVC )
73+ # MSVC needs msvc/lapacke.h to define custom complex types
74+ set (_lapacke_includedir "${CMAKE_SOURCE_DIR } /msvc;${PKGC_LAPACKE_INCLUDEDIR} " )
75+ else ()
76+ set (_lapacke_includedir "${PKGC_LAPACKE_INCLUDEDIR} " )
77+ endif ()
78+ set (_lapacke_include_dirs ${PKGC_LAPACKE_INCLUDEDIR}
79+ ${PKGC_LAPACKE_INCLUDE_DIRS} )
80+ set (_lapacke_version ${PKGC_LAPACKE_VERSION} )
81+ set (_lapacke_linker_flags "${PKGC_LAPACKE_LDFLAGS} " )
82+
83+ list (REMOVE_DUPLICATES _lapacke_include_dirs)
84+ list (FILTER _lapacke_linker_flags EXCLUDE REGEX "^-L\. *|^-l\. *" )
85+ endif ()
86+
87+ include (CheckSymbolExists )
88+ set (CMAKE_REQUIRED_LIBRARIES ${_lapacke_libraries} )
89+ set (CMAKE_REQUIRED_INCLUDES ${_lapacke_includedir} )
90+ set (CMAKE_REQUIRED_QUIET ON )
91+ check_symbol_exists (LAPACKE_dgesv "lapacke.h" HAVE_LAPACKE_DGESV )
92+ unset (CMAKE_REQUIRED_LIBRARIES)
93+ unset (CMAKE_REQUIRED_INCLUDES)
94+ unset (CMAKE_REQUIRED_QUIET)
95+
96+ set (LAPACKE_FOUND ${_lapacke_found} )
97+ set (LAPACKE_LIBRARIES ${_lapacke_libraries} )
98+ set (LAPACKE_INCLUDEDIR ${_lapacke_includedir} )
99+ set (LAPACKE_INCLUDE_DIRS ${_lapacke_include_dirs} )
100+ set (LAPACKE_VERSION ${_lapacke_version} )
101+ set (LAPACKE_LINKER_FLAGS ${_lapacke_linker_flags} )
102+ endmacro ()
103+
59104macro (_search_lapacke_pkgs )
60105 foreach (_pkg ${_default_pkgs} )
61106 pkg_check_modules (PKGC_LAPACKE QUIET ${_pkg} )
62107 if (PKGC_LAPACKE_FOUND)
63108 set (LAPACKE_PKGCONFIG ${_pkg} )
64- break ()
109+ _test_package ()
110+ if (HAVE_LAPACKE_DGESV)
111+ break ()
112+ endif ()
65113 endif ()
66114 endforeach ()
67115endmacro ()
68116
69- if (CBLAS_PREFER_PKGCONFIG )
117+ if (LAPACKE_PREFER_PKGCONFIG )
70118 find_package (PkgConfig QUIET )
71119 if (PKG_CONFIG_FOUND)
72- if (NOT LAPACKE_PKGCONFIG)
120+ if (LAPACKE_PKGCONFIG)
121+ _test_package ()
122+ else ()
73123 _search_lapacke_pkgs ()
74124 endif ()
75- pkg_check_modules (PKGC_LAPACKE QUIET ${LAPACKE_PKGCONFIG} )
76- if (PKGC_LAPACKE_FOUND)
77- set (LAPACKE_FOUND ${PKGC_LAPACKE_FOUND} )
78- set (LAPACKE_LIBRARIES "${PKGC_LAPACKE_LINK_LIBRARIES} " )
79- if (MSVC )
80- # MSVC needs msvc/lapacke.h to define custom complex types
81- set (LAPACKE_INCLUDEDIR "${CMAKE_SOURCE_DIR } /msvc;${PKGC_LAPACKE_INCLUDEDIR} " )
82- else ()
83- set (LAPACKE_INCLUDEDIR "${PKGC_LAPACKE_INCLUDEDIR} " )
84- endif ()
85- set (LAPACKE_INCLUDE_DIRS ${PKGC_LAPACKE_INCLUDEDIR}
86- ${PKGC_LAPACKE_INCLUDE_DIRS} )
87- set (LAPACKE_VERSION ${PKGC_LAPACKE_VERSION} )
88- set (LAPACKE_LINKER_FLAGS "${PKGC_LAPACKE_LDFLAGS} " )
89-
90- list (REMOVE_DUPLICATES LAPACKE_INCLUDE_DIRS)
91- list (FILTER LAPACKE_LINKER_FLAGS EXCLUDE REGEX "^-L\. *|^-l\. *" )
92- endif ()
93125 endif ()
94126endif ()
95127
96128unset (_default_pkgs)
97129
98- include (CheckSymbolExists )
99- set (CMAKE_REQUIRED_LIBRARIES ${LAPACKE_LIBRARIES} )
100- set (CMAKE_REQUIRED_INCLUDES ${LAPACKE_INCLUDEDIR} )
101- set (CMAKE_REQUIRED_QUIET ${LAPACKE_FIND_QUIETLY} )
102- check_symbol_exists (LAPACKE_dgesv "lapacke.h" HAVE_LAPACKE_DGESV )
103- unset (CMAKE_REQUIRED_LIBRARIES)
104- unset (CMAKE_REQUIRED_INCLUDES)
105- unset (CMAKE_REQUIRED_QUIET)
130+ if (NOT HAVE_LAPACKE_DGESV)
131+ message (STATUS "Looking for LAPACKE_dgesv - not found" )
132+ endif ()
106133
107134include (FindPackageHandleStandardArgs )
108135find_package_handle_standard_args (
@@ -112,6 +139,8 @@ find_package_handle_standard_args(
112139 VERSION_VAR LAPACKE_VERSION)
113140mark_as_advanced (LAPACKE_LIBRARIES LAPACKE_INCLUDEDIR )
114141
142+ message (STATUS "Using LAPACKE package: ${LAPACKE_PKGCONFIG} " )
143+
115144if (LAPACKE_FOUND AND NOT TARGET LAPACKE::LAPACKE)
116145 add_library (LAPACKE::LAPACKE INTERFACE IMPORTED )
117146 set_target_properties (
0 commit comments