xref: /aosp_15_r20/external/eigen/cmake/FindCHOLMOD.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li# CHOLMOD lib usually requires linking to a blas and lapack library.
2*bf2c3715SXin Li# It is up to the user of this module to find a BLAS and link to it.
3*bf2c3715SXin Li
4*bf2c3715SXin Liif (CHOLMOD_INCLUDES AND CHOLMOD_LIBRARIES)
5*bf2c3715SXin Li  set(CHOLMOD_FIND_QUIETLY TRUE)
6*bf2c3715SXin Liendif ()
7*bf2c3715SXin Li
8*bf2c3715SXin Lifind_path(CHOLMOD_INCLUDES
9*bf2c3715SXin Li  NAMES
10*bf2c3715SXin Li  cholmod.h
11*bf2c3715SXin Li  PATHS
12*bf2c3715SXin Li  $ENV{CHOLMODDIR}
13*bf2c3715SXin Li  ${INCLUDE_INSTALL_DIR}
14*bf2c3715SXin Li  PATH_SUFFIXES
15*bf2c3715SXin Li  suitesparse
16*bf2c3715SXin Li  ufsparse
17*bf2c3715SXin Li)
18*bf2c3715SXin Li
19*bf2c3715SXin Lifind_library(CHOLMOD_LIBRARIES cholmod PATHS $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
20*bf2c3715SXin Li
21*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
22*bf2c3715SXin Li
23*bf2c3715SXin Li  get_filename_component(CHOLMOD_LIBDIR ${CHOLMOD_LIBRARIES} PATH)
24*bf2c3715SXin Li
25*bf2c3715SXin Li  find_library(AMD_LIBRARY amd PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
26*bf2c3715SXin Li  if (AMD_LIBRARY)
27*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${AMD_LIBRARY})
28*bf2c3715SXin Li  else ()
29*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES FALSE)
30*bf2c3715SXin Li  endif ()
31*bf2c3715SXin Li
32*bf2c3715SXin Liendif()
33*bf2c3715SXin Li
34*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
35*bf2c3715SXin Li
36*bf2c3715SXin Li  find_library(COLAMD_LIBRARY colamd PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
37*bf2c3715SXin Li  if (COLAMD_LIBRARY)
38*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${COLAMD_LIBRARY})
39*bf2c3715SXin Li  else ()
40*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES FALSE)
41*bf2c3715SXin Li  endif ()
42*bf2c3715SXin Li
43*bf2c3715SXin Liendif()
44*bf2c3715SXin Li
45*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
46*bf2c3715SXin Li
47*bf2c3715SXin Li  find_library(CAMD_LIBRARY camd PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
48*bf2c3715SXin Li  if (CAMD_LIBRARY)
49*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${CAMD_LIBRARY})
50*bf2c3715SXin Li  else ()
51*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES FALSE)
52*bf2c3715SXin Li  endif ()
53*bf2c3715SXin Li
54*bf2c3715SXin Liendif()
55*bf2c3715SXin Li
56*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
57*bf2c3715SXin Li
58*bf2c3715SXin Li  find_library(CCOLAMD_LIBRARY ccolamd PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
59*bf2c3715SXin Li  if (CCOLAMD_LIBRARY)
60*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${CCOLAMD_LIBRARY})
61*bf2c3715SXin Li  else ()
62*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES FALSE)
63*bf2c3715SXin Li  endif ()
64*bf2c3715SXin Li
65*bf2c3715SXin Liendif()
66*bf2c3715SXin Li
67*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
68*bf2c3715SXin Li
69*bf2c3715SXin Li  find_library(CHOLMOD_METIS_LIBRARY metis PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
70*bf2c3715SXin Li  if (CHOLMOD_METIS_LIBRARY)
71*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${CHOLMOD_METIS_LIBRARY})
72*bf2c3715SXin Li  endif ()
73*bf2c3715SXin Li
74*bf2c3715SXin Liendif()
75*bf2c3715SXin Li
76*bf2c3715SXin Liif(CHOLMOD_LIBRARIES)
77*bf2c3715SXin Li
78*bf2c3715SXin Li  find_library(SUITESPARSE_LIBRARY SuiteSparse PATHS ${CHOLMOD_LIBDIR} $ENV{CHOLMODDIR} ${LIB_INSTALL_DIR})
79*bf2c3715SXin Li  if (SUITESPARSE_LIBRARY)
80*bf2c3715SXin Li    set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${SUITESPARSE_LIBRARY})
81*bf2c3715SXin Li  endif ()
82*bf2c3715SXin Li
83*bf2c3715SXin Liendif()
84*bf2c3715SXin Li
85*bf2c3715SXin Liinclude(FindPackageHandleStandardArgs)
86*bf2c3715SXin Lifind_package_handle_standard_args(CHOLMOD DEFAULT_MSG
87*bf2c3715SXin Li                                  CHOLMOD_INCLUDES CHOLMOD_LIBRARIES)
88*bf2c3715SXin Li
89*bf2c3715SXin Limark_as_advanced(CHOLMOD_INCLUDES CHOLMOD_LIBRARIES AMD_LIBRARY COLAMD_LIBRARY SUITESPARSE_LIBRARY CAMD_LIBRARY CCOLAMD_LIBRARY CHOLMOD_METIS_LIBRARY)
90