1# Retrieved from https://github.com/microsoft/vcpkg/blob/3b433e5081f35a32331492d98a8b0c1c2477048e/ports/suitesparse/FindCXSparse.cmake
2#
3# Distributed under the OSI-approved BSD 3-Clause License.
4#
5#.rst:
6# FindCXSparse
7# --------
8#
9# Find the CXSparse library
10#
11# Result Variables
12# ^^^^^^^^^^^^^^^^
13#
14# The following variables will be defined:
15#
16#  ``CXSparse_FOUND``
17#    True if CXSparse found on the local system
18#
19#  ``CXSPARSE_FOUND``
20#    True if CXSparse found on the local system
21#
22#  ``CXSparse_INCLUDE_DIRS``
23#    Location of CXSparse header files
24#
25#  ``CXSPARSE_INCLUDE_DIRS``
26#    Location of CXSparse header files
27#
28#  ``CXSparse_LIBRARIES``
29#    List of the CXSparse libraries found
30#
31#  ``CXSPARSE_LIBRARIES``
32#    List of the CXSparse libraries found
33#
34#
35
36include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
37include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
38
39find_path(CXSPARSE_INCLUDE_DIR NAMES cs.h PATH_SUFFIXES suitesparse)
40
41find_library(CXSPARSE_LIBRARY_RELEASE NAMES cxsparse libcxsparse)
42find_library(CXSPARSE_LIBRARY_DEBUG NAMES cxsparsed libcxsparsed)
43select_library_configurations(CXSPARSE)
44
45if(CXSPARSE_INCLUDE_DIR)
46  set(CXSPARSE_VERSION_FILE ${CXSPARSE_INCLUDE_DIR}/cs.h)
47  file(READ ${CXSPARSE_INCLUDE_DIR}/cs.h CXSPARSE_VERSION_FILE_CONTENTS)
48
49  string(REGEX MATCH "#define CS_VER [0-9]+"
50    CXSPARSE_MAIN_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
51  string(REGEX REPLACE "#define CS_VER ([0-9]+)" "\\1"
52    CXSPARSE_MAIN_VERSION "${CXSPARSE_MAIN_VERSION}")
53
54  string(REGEX MATCH "#define CS_SUBVER [0-9]+"
55    CXSPARSE_SUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
56  string(REGEX REPLACE "#define CS_SUBVER ([0-9]+)" "\\1"
57    CXSPARSE_SUB_VERSION "${CXSPARSE_SUB_VERSION}")
58
59  string(REGEX MATCH "#define CS_SUBSUB [0-9]+"
60    CXSPARSE_SUBSUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
61  string(REGEX REPLACE "#define CS_SUBSUB ([0-9]+)" "\\1"
62    CXSPARSE_SUBSUB_VERSION "${CXSPARSE_SUBSUB_VERSION}")
63
64  set(CXSPARSE_VERSION "${CXSPARSE_MAIN_VERSION}.${CXSPARSE_SUB_VERSION}.${CXSPARSE_SUBSUB_VERSION}")
65endif()
66
67include(FindPackageHandleStandardArgs)
68find_package_handle_standard_args(CXSparse
69  REQUIRED_VARS CXSPARSE_INCLUDE_DIR CXSPARSE_LIBRARIES
70  VERSION_VAR CXSPARSE_VERSION)
71
72set(CXSPARSE_FOUND ${CXSparse_FOUND})
73set(CXSPARSE_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
74set(CXSparse_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
75set(CXSparse_LIBRARIES ${CXSPARSE_LIBRARIES})
76