|
| 1 | +# - Try to find SUITESPARSE |
| 2 | +# Once done this will define |
| 3 | +# |
| 4 | +# SUITESPARSE_FOUND - system has SUITESPARSE |
| 5 | +# SUITESPARSE_INCLUDE_DIRS - the SUITESPARSE include directory |
| 6 | +# SUITESPARSE_LIBRARIES - Link these to use SUITESPARSE |
| 7 | +# SUITESPARSE_SPQR_LIBRARY - name of spqr library (necessary due to error in debian package) |
| 8 | +# SUITESPARSE_SPQR_LIBRARY_DIR - name of spqr library (necessary due to error in debian package) |
| 9 | +# SUITESPARSE_LIBRARY_DIR - Library main directory containing suitesparse libs |
| 10 | +# SUITESPARSE_LIBRARY_DIRS - all Library directories containing suitesparse libs |
| 11 | +# SUITESPARSE_SPQR_VALID - automatic identification whether or not spqr package is installed correctly |
| 12 | + |
| 13 | +IF (SUITESPARSE_INCLUDE_DIRS) |
| 14 | + # Already in cache, be silent |
| 15 | + SET(SUITESPARSE_FIND_QUIETLY TRUE) |
| 16 | +ENDIF (SUITESPARSE_INCLUDE_DIRS) |
| 17 | + |
| 18 | +if( WIN32 ) |
| 19 | + # Find cholmod part of the suitesparse library collection |
| 20 | + |
| 21 | + FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h |
| 22 | + PATHS "C:\\libs\\win32\\SuiteSparse\\Include" ) |
| 23 | + |
| 24 | + # Add cholmod include directory to collection include directories |
| 25 | + IF ( CHOLMOD_INCLUDE_DIR ) |
| 26 | +list ( APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR} ) |
| 27 | + ENDIF( CHOLMOD_INCLUDE_DIR ) |
| 28 | + |
| 29 | + |
| 30 | + # find path suitesparse library |
| 31 | + FIND_PATH( SUITESPARSE_LIBRARY_DIRS |
| 32 | +amd.lib |
| 33 | + PATHS "C:\\libs\\win32\\SuiteSparse\\libs" ) |
| 34 | + |
| 35 | + # if we found the library, add it to the defined libraries |
| 36 | + IF ( SUITESPARSE_LIBRARY_DIRS ) |
| 37 | +list ( APPEND SUITESPARSE_LIBRARIES optimized;amd;optimized;camd;optimized;ccolamd;optimized;cholmod;optimized;colamd;optimized;metis;optimized;spqr;optimized;umfpack;debug;amdd;debug;camdd;debug;ccolamdd;debug;cholmodd;debug;spqrd;debug;umfpackd;debug;colamdd;debug;metisd;optimized;blas;optimized;libf2c;optimized;lapack;debug;blasd;debug;libf2cd;debug;lapackd ) |
| 38 | + ENDIF( SUITESPARSE_LIBRARY_DIRS ) |
| 39 | + |
| 40 | +else( WIN32 ) |
| 41 | + IF(APPLE) |
| 42 | +FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h |
| 43 | + PATHS /opt/local/include/ufsparse |
| 44 | +/usr/local/include ) |
| 45 | + |
| 46 | + FIND_PATH( SUITESPARSE_LIBRARY_DIR |
| 47 | + NAMES libcholmod.a |
| 48 | + PATHS /opt/local/lib |
| 49 | +/usr/local/lib ) |
| 50 | + ELSE(APPLE) |
| 51 | +FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h |
| 52 | + PATHS /usr/local/include |
| 53 | + /usr/include |
| 54 | + /usr/include/suitesparse/ |
| 55 | + ${CMAKE_SOURCE_DIR}/MacOS/Libs/cholmod |
| 56 | + PATH_SUFFIXES cholmod/ CHOLMOD/ ) |
| 57 | + |
| 58 | + FIND_PATH( SUITESPARSE_LIBRARY_DIR |
| 59 | + NAMES libcholmod.so libcholmod.a |
| 60 | + PATHS /usr/lib |
| 61 | + /usr/lib64 |
| 62 | + /usr/lib/x86_64-linux-gnu |
| 63 | + /usr/local/lib ) |
| 64 | + ENDIF(APPLE) |
| 65 | + |
| 66 | + # Add cholmod include directory to collection include directories |
| 67 | + IF ( CHOLMOD_INCLUDE_DIR ) |
| 68 | +list ( APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR} ) |
| 69 | + ENDIF( CHOLMOD_INCLUDE_DIR ) |
| 70 | + |
| 71 | + # if we found the library, add it to the defined libraries |
| 72 | + IF ( SUITESPARSE_LIBRARY_DIR ) |
| 73 | + |
| 74 | + list ( APPEND SUITESPARSE_LIBRARIES amd) |
| 75 | + list ( APPEND SUITESPARSE_LIBRARIES btf) |
| 76 | + list ( APPEND SUITESPARSE_LIBRARIES camd) |
| 77 | + list ( APPEND SUITESPARSE_LIBRARIES ccolamd) |
| 78 | + list ( APPEND SUITESPARSE_LIBRARIES cholmod) |
| 79 | + list ( APPEND SUITESPARSE_LIBRARIES colamd) |
| 80 | + # list ( APPEND SUITESPARSE_LIBRARIES csparse) |
| 81 | + list ( APPEND SUITESPARSE_LIBRARIES cxsparse) |
| 82 | + list ( APPEND SUITESPARSE_LIBRARIES klu) |
| 83 | + # list ( APPEND SUITESPARSE_LIBRARIES spqr) |
| 84 | + list ( APPEND SUITESPARSE_LIBRARIES umfpack) |
| 85 | + |
| 86 | + IF (APPLE) |
| 87 | + list ( APPEND SUITESPARSE_LIBRARIES suitesparseconfig) |
| 88 | + ENDIF (APPLE) |
| 89 | + |
| 90 | + # Metis and spqr are optional |
| 91 | + FIND_LIBRARY( SUITESPARSE_METIS_LIBRARY |
| 92 | + NAMES metis |
| 93 | + PATHS ${SUITESPARSE_LIBRARY_DIR} ) |
| 94 | + IF (SUITESPARSE_METIS_LIBRARY) |
| 95 | +list ( APPEND SUITESPARSE_LIBRARIES metis) |
| 96 | + ENDIF(SUITESPARSE_METIS_LIBRARY) |
| 97 | + |
| 98 | + if(EXISTS "${CHOLMOD_INCLUDE_DIR}/SuiteSparseQR.hpp") |
| 99 | +SET(SUITESPARSE_SPQR_VALID TRUE CACHE BOOL "SuiteSparseSPQR valid") |
| 100 | + else() |
| 101 | +SET(SUITESPARSE_SPQR_VALID false CACHE BOOL "SuiteSparseSPQR valid") |
| 102 | + endif() |
| 103 | + |
| 104 | + if(SUITESPARSE_SPQR_VALID) |
| 105 | +FIND_LIBRARY( SUITESPARSE_SPQR_LIBRARY |
| 106 | +NAMES spqr |
| 107 | +PATHS ${SUITESPARSE_LIBRARY_DIR} ) |
| 108 | +IF (SUITESPARSE_SPQR_LIBRARY) |
| 109 | +list ( APPEND SUITESPARSE_LIBRARIES spqr) |
| 110 | +ENDIF (SUITESPARSE_SPQR_LIBRARY) |
| 111 | + endif() |
| 112 | + |
| 113 | + ENDIF( SUITESPARSE_LIBRARY_DIR ) |
| 114 | + |
| 115 | +endif( WIN32 ) |
| 116 | + |
| 117 | + |
| 118 | +IF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) |
| 119 | + IF(WIN32) |
| 120 | + list (APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR}/../../UFconfig ) |
| 121 | + ENDIF(WIN32) |
| 122 | + SET(SUITESPARSE_FOUND TRUE) |
| 123 | + MESSAGE(STATUS "Found SuiteSparse") |
| 124 | +ELSE (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) |
| 125 | + SET( SUITESPARSE_FOUND FALSE ) |
| 126 | + MESSAGE(FATAL_ERROR "Unable to find SuiteSparse") |
| 127 | +ENDIF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) |
0 commit comments