FindSUITESPARSE.cmake 5.07 KB
Newer Older
1 2 3
# - Try to find SUITESPARSE
# Once done this will define
#  
4 5 6 7 8 9 10
#  SUITESPARSE_FOUND            - system has SUITESPARSE
#  SUITESPARSE_INCLUDE_DIRS     - the SUITESPARSE include directory
#  SUITESPARSE_LIBRARIES        - Link these to use SUITESPARSE
#  SUITESPARSE_SPQR_LIBRARY     - name of spqr library (necessary due to error in debian package)
#  SUITESPARSE_SPQR_LIBRARY_DIR - name of spqr library (necessary due to error in debian package)
#  SUITESPARSE_LIBRARY_DIR      - Library main directory containing suitesparse libs
#  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 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

IF (SUITESPARSE_INCLUDE_DIRS)
  # Already in cache, be silent
  SET(SUITESPARSE_FIND_QUIETLY TRUE)
ENDIF (SUITESPARSE_INCLUDE_DIRS)

if( WIN32 )
   # Find cholmod part of the suitesparse library collection

   FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h
              PATHS "C:\\libs\\win32\\SuiteSparse\\Include"  )

   # Add cholmod include directory to collection include directories
   IF ( CHOLMOD_INCLUDE_DIR )
	list ( APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR} )
   ENDIF( CHOLMOD_INCLUDE_DIR )


   # find path suitesparse library
31
   FIND_PATH( SUITESPARSE_LIBRARY_DIRS 
32 33 34 35
	         amd.lib
               PATHS "C:\\libs\\win32\\SuiteSparse\\libs" )

   # if we found the library, add it to the defined libraries
36
   IF ( SUITESPARSE_LIBRARY_DIRS )
Mike Kremer's avatar
Mike Kremer committed
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 43 44
	   FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h
        	      PATHS  /opt/local/include/ufsparse )

45
           FIND_PATH( SUITESPARSE_LIBRARY_DIR
46
                      NAMES libSuiteSparse.dylib
47 48
                      PATHS /opt/local/lib )

49 50 51
           list ( APPEND SUITESPARSE_LIBRARY_DIRS ${SUITESPARSE_LIBRARY_DIR} )

           list ( APPEND SUITESPARSE_LIBRARIES SuiteSparse)
52 53 54

   ELSE(APPLE)
	   FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h
55
        	      PATHS /usr/local/include 
56 57 58
        	            /usr/include 
        	            /usr/include/suitesparse/ 
        	            ${CMAKE_SOURCE_DIR}/MacOS/Libs/cholmod
59 60 61 62 63
              	      PATH_SUFFIXES cholmod/ CHOLMOD/ )

   	
           FIND_PATH( SUITESPARSE_LIBRARY_DIR
                      NAMES libcholmod.so 
64 65 66
                      PATHS /usr/lib 
                            /usr/lib64 
                            /usr/local/lib )
67 68 69 70 71 72 73 74 75 76 77 78


   ENDIF(APPLE)

   # Add cholmod include directory to collection include directories
   IF ( CHOLMOD_INCLUDE_DIR )
	list ( APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR} )
   ENDIF( CHOLMOD_INCLUDE_DIR )


   # if we found the library, add it to the defined libraries
   IF ( SUITESPARSE_LIBRARY_DIR )
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

       # Skipped, as this is set for apple in the block above
       if (NOT APPLE)
         list ( APPEND SUITESPARSE_LIBRARIES amd)
         list ( APPEND SUITESPARSE_LIBRARIES btf)
         list ( APPEND SUITESPARSE_LIBRARIES camd)
         list ( APPEND SUITESPARSE_LIBRARIES ccolamd)
         list ( APPEND SUITESPARSE_LIBRARIES cholmod)
         list ( APPEND SUITESPARSE_LIBRARIES colamd)
 #       list ( APPEND SUITESPARSE_LIBRARIES csparse)
         list ( APPEND SUITESPARSE_LIBRARIES cxsparse)
         list ( APPEND SUITESPARSE_LIBRARIES klu)
 #       list ( APPEND SUITESPARSE_LIBRARIES spqr)
         list ( APPEND SUITESPARSE_LIBRARIES umfpack)
       endif()
94 95 96 97
   
       # Metis and spqr are optional
       FIND_LIBRARY( SUITESPARSE_METIS_LIBRARY
                     NAMES metis
98
                     PATHS ${SUITESPARSE_LIBRARY_DIR} )
99
       IF (SUITESPARSE_METIS_LIBRARY)			
100
	  list ( APPEND SUITESPARSE_LIBRARIES ${SUITESPARSE_METIS_LIBRARY})
101 102 103 104
       ENDIF(SUITESPARSE_METIS_LIBRARY)

       if(EXISTS  "${CHOLMOD_INCLUDE_DIR}/SuiteSparseQR.hpp")
	  SET(SUITESPARSE_SPQR_VALID TRUE CACHE BOOL "SuiteSparseSPQR valid")
Jan Möbius's avatar
Jan Möbius committed
105
       else()
106 107 108 109 110 111 112 113 114 115
	  SET(SUITESPARSE_SPQR_VALID false CACHE BOOL "SuiteSparseSPQR valid")
       endif()

       if(SUITESPARSE_SPQR_VALID)
	  FIND_LIBRARY( SUITESPARSE_SPQR_LIBRARY
		      NAMES spqr
		      PATHS ${SUITESPARSE_LIBRARY_DIR} )
	  IF (SUITESPARSE_SPQR_LIBRARY)			
	    list ( APPEND SUITESPARSE_LIBRARIES spqr)
	  ENDIF (SUITESPARSE_SPQR_LIBRARY)
Jan Möbius's avatar
Jan Möbius committed
116
       endif()
117 118
       
    ENDIF( SUITESPARSE_LIBRARY_DIR )  
119 120 121 122 123 124 125 126 127 128 129 130
   
endif( WIN32 )

IF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES)
   IF(WIN32)
    list (APPEND SUITESPARSE_INCLUDE_DIRS ${CHOLMOD_INCLUDE_DIR}/../../UFconfig )
   ENDIF(WIN32)
   SET(SUITESPARSE_FOUND TRUE)
ELSE (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES)
   SET( SUITESPARSE_FOUND FALSE )
ENDIF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES)