aboutsummaryrefslogtreecommitdiff
path: root/ports/suitesparse/FindCXSparse.cmake
blob: 94ba41e045f78612e927a26f8eb2d634e1a5d303 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Distributed under the OSI-approved BSD 3-Clause License.
#
#.rst:
# FindCXSparse
# --------
#
# Find the CXSparse library
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# The following variables will be defined:
#
#  ``CXSparse_FOUND``
#    True if CXSparse found on the local system
#
#  ``CXSPARSE_FOUND``
#    True if CXSparse found on the local system
#
#  ``CXSparse_INCLUDE_DIRS``
#    Location of CXSparse header files
#
#  ``CXSPARSE_INCLUDE_DIRS``
#    Location of CXSparse header files
#
#  ``CXSparse_LIBRARIES``
#    List of the CXSparse libraries found
#
#  ``CXSPARSE_LIBRARIES``
#    List of the CXSparse libraries found
#
#

include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
include(${CMAKE_ROOT}/Modules/CMakeFindDependencyMacro.cmake)

find_path(CXSPARSE_INCLUDE_DIR NAMES cs.h)

find_library(CXSPARSE_LIBRARY_RELEASE NAMES cxsparse libcxsparse)
find_library(CXSPARSE_LIBRARY_DEBUG NAMES cxsparsed libcxsparsed)
select_library_configurations(CXSPARSE)

if(CXSPARSE_INCLUDE_DIR)
  set(CXSPARSE_VERSION_FILE ${CXSPARSE_INCLUDE_DIR}/cs.h)
  file(READ ${CXSPARSE_INCLUDE_DIR}/cs.h CXSPARSE_VERSION_FILE_CONTENTS)

  string(REGEX MATCH "#define CS_VER [0-9]+"
    CXSPARSE_MAIN_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
  string(REGEX REPLACE "#define CS_VER ([0-9]+)" "\\1"
    CXSPARSE_MAIN_VERSION "${CXSPARSE_MAIN_VERSION}")

  string(REGEX MATCH "#define CS_SUBVER [0-9]+"
    CXSPARSE_SUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
  string(REGEX REPLACE "#define CS_SUBVER ([0-9]+)" "\\1"
    CXSPARSE_SUB_VERSION "${CXSPARSE_SUB_VERSION}")

  string(REGEX MATCH "#define CS_SUBSUB [0-9]+"
    CXSPARSE_SUBSUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
  string(REGEX REPLACE "#define CS_SUBSUB ([0-9]+)" "\\1"
    CXSPARSE_SUBSUB_VERSION "${CXSPARSE_SUBSUB_VERSION}")

  set(CXSPARSE_VERSION "${CXSPARSE_MAIN_VERSION}.${CXSPARSE_SUB_VERSION}.${CXSPARSE_SUBSUB_VERSION}")
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(CXSparse
  REQUIRED_VARS CXSPARSE_INCLUDE_DIRS CXSPARSE_LIBRARIES
  VERSION_VAR CXSPARSE_VERSION)

set(CXSPARSE_FOUND ${CXSparse_FOUND})
set(CXSPARSE_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
set(CXSPARSE_LIBRARIES ${CXSPARSE_LIBRARY})
set(CXSparse_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
set(CXSparse_LIBRARIES ${CXSPARSE_LIBRARY})