1 # Distributed under the OSI-approved BSD 3-Clause License.
7 # Find the CXSparse library
12 # The following variables will be defined:
15 # True if CXSparse found on the local system
18 # True if CXSparse found on the local system
20 # ``CXSparse_INCLUDE_DIRS``
21 # Location of CXSparse header files
23 # ``CXSPARSE_INCLUDE_DIRS``
24 # Location of CXSparse header files
26 # ``CXSparse_LIBRARIES``
27 # List of the CXSparse libraries found
29 # ``CXSPARSE_LIBRARIES``
30 # List of the CXSparse libraries found
34 include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
35 include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
37 find_path(CXSPARSE_INCLUDE_DIR NAMES cs.h PATH_SUFFIXES suitesparse)
39 find_library(CXSPARSE_LIBRARY_RELEASE NAMES cxsparse libcxsparse)
40 find_library(CXSPARSE_LIBRARY_DEBUG NAMES cxsparsed libcxsparsed)
41 select_library_configurations(CXSPARSE)
43 if(CXSPARSE_INCLUDE_DIR)
44 set(CXSPARSE_VERSION_FILE ${CXSPARSE_INCLUDE_DIR}/cs.h)
45 file(READ ${CXSPARSE_INCLUDE_DIR}/cs.h CXSPARSE_VERSION_FILE_CONTENTS)
47 string(REGEX MATCH "#define CS_VER [0-9]+"
48 CXSPARSE_MAIN_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
49 string(REGEX REPLACE "#define CS_VER ([0-9]+)" "\\1"
50 CXSPARSE_MAIN_VERSION "${CXSPARSE_MAIN_VERSION}")
52 string(REGEX MATCH "#define CS_SUBVER [0-9]+"
53 CXSPARSE_SUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
54 string(REGEX REPLACE "#define CS_SUBVER ([0-9]+)" "\\1"
55 CXSPARSE_SUB_VERSION "${CXSPARSE_SUB_VERSION}")
57 string(REGEX MATCH "#define CS_SUBSUB [0-9]+"
58 CXSPARSE_SUBSUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
59 string(REGEX REPLACE "#define CS_SUBSUB ([0-9]+)" "\\1"
60 CXSPARSE_SUBSUB_VERSION "${CXSPARSE_SUBSUB_VERSION}")
62 set(CXSPARSE_VERSION "${CXSPARSE_MAIN_VERSION}.${CXSPARSE_SUB_VERSION}.${CXSPARSE_SUBSUB_VERSION}")
65 include(FindPackageHandleStandardArgs)
66 find_package_handle_standard_args(CXSparse
67 REQUIRED_VARS CXSPARSE_INCLUDE_DIR CXSPARSE_LIBRARIES
68 VERSION_VAR CXSPARSE_VERSION)
70 set(CXSPARSE_FOUND ${CXSparse_FOUND})
71 set(CXSPARSE_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
72 set(CXSparse_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
73 set(CXSparse_LIBRARIES ${CXSPARSE_LIBRARIES})