xref: /aosp_15_r20/external/eigen/cmake/FindSPQR.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li# SPQR 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 Li# SPQR lib requires Cholmod, colamd and amd as well.
5*bf2c3715SXin Li# FindCholmod.cmake can be used to find those packages before finding spqr
6*bf2c3715SXin Li
7*bf2c3715SXin Liif (SPQR_INCLUDES AND SPQR_LIBRARIES)
8*bf2c3715SXin Li  set(SPQR_FIND_QUIETLY TRUE)
9*bf2c3715SXin Liendif ()
10*bf2c3715SXin Li
11*bf2c3715SXin Lifind_path(SPQR_INCLUDES
12*bf2c3715SXin Li  NAMES
13*bf2c3715SXin Li  SuiteSparseQR.hpp
14*bf2c3715SXin Li  PATHS
15*bf2c3715SXin Li  $ENV{SPQRDIR}
16*bf2c3715SXin Li  ${INCLUDE_INSTALL_DIR}
17*bf2c3715SXin Li  PATH_SUFFIXES
18*bf2c3715SXin Li  suitesparse
19*bf2c3715SXin Li  ufsparse
20*bf2c3715SXin Li)
21*bf2c3715SXin Li
22*bf2c3715SXin Lifind_library(SPQR_LIBRARIES spqr $ENV{SPQRDIR} ${LIB_INSTALL_DIR})
23*bf2c3715SXin Li
24*bf2c3715SXin Liif(SPQR_LIBRARIES)
25*bf2c3715SXin Li
26*bf2c3715SXin Li  find_library(SUITESPARSE_LIBRARY SuiteSparse PATHS $ENV{SPQRDIR} ${LIB_INSTALL_DIR})
27*bf2c3715SXin Li  if (SUITESPARSE_LIBRARY)
28*bf2c3715SXin Li    set(SPQR_LIBRARIES ${SPQR_LIBRARIES} ${SUITESPARSE_LIBRARY})
29*bf2c3715SXin Li  endif()
30*bf2c3715SXin Li
31*bf2c3715SXin Li  find_library(CHOLMOD_LIBRARY cholmod PATHS $ENV{UMFPACK_LIBDIR} $ENV{UMFPACKDIR} ${LIB_INSTALL_DIR})
32*bf2c3715SXin Li  if(CHOLMOD_LIBRARY)
33*bf2c3715SXin Li    set(SPQR_LIBRARIES ${SPQR_LIBRARIES} ${CHOLMOD_LIBRARY})
34*bf2c3715SXin Li  endif()
35*bf2c3715SXin Li
36*bf2c3715SXin Liendif()
37*bf2c3715SXin Li
38*bf2c3715SXin Liinclude(FindPackageHandleStandardArgs)
39*bf2c3715SXin Lifind_package_handle_standard_args(SPQR DEFAULT_MSG SPQR_INCLUDES SPQR_LIBRARIES)
40*bf2c3715SXin Li
41*bf2c3715SXin Limark_as_advanced(SPQR_INCLUDES SPQR_LIBRARIES)