From: maier Date: Fri, 28 Sep 2012 18:55:33 +0000 (+0000) Subject: A more complete FindUMFPACK.cmake module X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c2d8f5ce53162cf00aabb4ae3ecfd968a084837;p=dealii-svn.git A more complete FindUMFPACK.cmake module git-svn-id: https://svn.dealii.org/branches/branch_cmake@26859 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/cmake/configure/configure_metis.cmake b/deal.II/cmake/configure/configure_metis.cmake index 1c0b2c6585..80d37f3e05 100644 --- a/deal.II/cmake/configure/configure_metis.cmake +++ b/deal.II/cmake/configure/configure_metis.cmake @@ -5,14 +5,14 @@ MACRO(FEATURE_METIS_FIND_EXTERNAL var) FIND_PACKAGE(METIS) - IF(METIS_FOUND AND METIS_MAJOR GREATER 4) - SET(${var} TRUE) - ELSE() - MESSAGE(WARNING "\n" - "Could not find a sufficient modern metis installation: " - "Version 5.x required!\n\n" - ) - ENDIF() + #IF(METIS_FOUND AND METIS_MAJOR GREATER 4) + # SET(${var} TRUE) + #ELSE() + # MESSAGE(WARNING "\n" + # "Could not find a sufficient modern metis installation: " + # "Version 5.x required!\n\n" + # ) + #ENDIF() ENDMACRO() diff --git a/deal.II/cmake/modules/FindAMD.cmake b/deal.II/cmake/modules/FindAMD.cmake index 6f1c550bd9..3175733337 100644 --- a/deal.II/cmake/modules/FindAMD.cmake +++ b/deal.II/cmake/modules/FindAMD.cmake @@ -1,6 +1,8 @@ # # Try to find the AMD library # +# This is a helper module for FindUMFPACK.cmake +# # This module exports # # AMD_LIBRARY diff --git a/deal.II/cmake/modules/FindSUITESPARSECONFIG.cmake b/deal.II/cmake/modules/FindSUITESPARSECONFIG.cmake new file mode 100644 index 0000000000..70c36fe4ad --- /dev/null +++ b/deal.II/cmake/modules/FindSUITESPARSECONFIG.cmake @@ -0,0 +1,50 @@ +# +# Try to find the SuiteSparse_config package +# +# This is a helper module for FindUMFPACK.cmake +# +# This module exports +# +# SUITESPARSECONFIG_LIBRARY +# SUITESPARSECONFIG_INCLUDE_DIR +# + +INCLUDE(FindPackageHandleStandardArgs) + +SET_IF_EMPTY(UMFPACK_DIR "$ENV{UMFPACK_DIR}") +SET_IF_EMPTY(SUITESPARSE_DIR "$ENV{SUITESPARSECONFIG_DIR}") + +FIND_PATH(SUITESPARSECONFIG_INCLUDE_DIR SuiteSparse_config.h + HINTS + ${UMFPACK_DIR} + ${SUITESPARSECONFIG_DIR} + PATH_SUFFIXES + include SuiteSparse_config ../SuiteSparse_config +) + +FIND_LIBRARY(SUITESPARSECONFIG_LIBRARY + NAMES suitesparseconfig + HINTS + ${UMFPACK_DIR} + ${SUITESPARSECONFIG_DIR} + PATH_SUFFIXES + lib${LIB_SUFFIX} lib64 lib SuiteSparse_config ../SuiteSparse_config + ) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SUITESPARSECONFIG DEFAULT_MSG + SUITESPARSECONFIG_LIBRARY + SUITESPARSECONFIG_INCLUDE_DIR + ) + +IF(SUITESPARSECONFIG_FOUND) + MARK_AS_ADVANCED( + SUITESPARSECONFIG_LIBRARY + SUITESPARSECONFIG_INCLUDE_DIR + SUITESPARSECONFIG_DIR + ) +ELSE() + SET(SUITESPARSECONFIG_DIR "" CACHE STRING + "An optional hint to a SuiteSparse_config directory" + ) +ENDIF() + diff --git a/deal.II/cmake/modules/FindUMFPACK.cmake b/deal.II/cmake/modules/FindUMFPACK.cmake index 68060cc408..03e560b7fa 100644 --- a/deal.II/cmake/modules/FindUMFPACK.cmake +++ b/deal.II/cmake/modules/FindUMFPACK.cmake @@ -10,7 +10,6 @@ INCLUDE(FindPackageHandleStandardArgs) -SET_IF_EMPTY(AMD_DIR "$ENV{AMD_DIR}") SET_IF_EMPTY(UMFPACK_DIR "$ENV{UMFPACK_DIR}") # @@ -21,7 +20,6 @@ FIND_PACKAGE(BLAS) FIND_PATH(UMFPACK_INCLUDE_DIR umfpack.h HINTS - ${AMD_DIR} ${UMFPACK_DIR} PATH_SUFFIXES umfpack include/umfpack include Include UMFPACK/Include ../UMFPACK/Include @@ -35,14 +33,43 @@ FIND_LIBRARY(UMFPACK_LIBRARY lib${LIB_SUFFIX} lib64 lib Lib UMFPACK/Lib ../UMFPACK/Lib ) +SET(required_variables + blas_LIBRARY + AMD_INCLUDE_DIR + AMD_LIBRARY + UMFPACK_INCLUDE_DIRS + UMFPACK_LIBRARY + ) + +# +# Well, recent versions of UMFPACK >= 5.6 include SuiteSparse_config.h, if so, +# ensure that we'll find these headers as well. +# +IF(NOT UMFPACK_INCLUDE_DIR MATCHES "-NOTFOUND") + FILE(STRINGS "${UMFPACK_INCLUDE_DIR}/umfpack.h" UMFPACK_SUITESPARSE_STRING + REGEX "#include \"SuiteSparse_config.h\"") + IF(NOT "${UMFPACK_SUITESPARSE_STRING}" STREQUAL "") + FIND_PACKAGE(SUITESPARSECONFIG) + LIST(APPEND required_variables + SUITESPARSECONFIG_LIBRARY + SUITESPARSECONFIG_INCLUDE_DIR + ) + ENDIF() +ENDIF() +# +# Otherwise, we're lazy for the moment. +# + SET(UMFPACK_LIBRARIES ${UMFPACK_LIBRARY} ${AMD_LIBRARY} + ${SUITESPARSECONFIG_LIBRARY} # may be empty ${BLAS_LIBRARIES} ) SET(UMFPACK_INCLUDE_DIRS ${UMFPACK_INCLUDE_DIR} + ${SUITESPARSECONFIG_INCLUDE_DIR} # may be empty ${AMD_INCLUDE_DIR} ) @@ -50,19 +77,13 @@ SET(UMFPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS} ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(UMFPACK DEFAULT_MSG - UMFPACK_LIBRARIES - UMFPACK_INCLUDE_DIRS - ) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(UMFPACK DEFAULT_MSG ${required_variables}) IF(UMFPACK_FOUND) MARK_AS_ADVANCED( UMFPACK_LIBRARY UMFPACK_INCLUDE_DIR UMFPACK_DIR - AMD_LIBRARY - AMD_INCLUDE_DIR - lapack_LIBRARY atlas_LIBRARY blas_LIBRARY )