]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
A more complete FindUMFPACK.cmake module
authormaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 28 Sep 2012 18:55:33 +0000 (18:55 +0000)
committermaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 28 Sep 2012 18:55:33 +0000 (18:55 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_cmake@26859 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/cmake/configure/configure_metis.cmake
deal.II/cmake/modules/FindAMD.cmake
deal.II/cmake/modules/FindSUITESPARSECONFIG.cmake [new file with mode: 0644]
deal.II/cmake/modules/FindUMFPACK.cmake

index 1c0b2c6585451da1354acc50892c4f6a62cbb6ab..80d37f3e05a88d31eb59e709cc674eca0f802c9a 100644 (file)
@@ -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()
 
 
index 6f1c550bd90b4bf5fc0a6de0d5d404fa18e7ed6a..31757333378a310e1fa1a1e4910be206963e56f7 100644 (file)
@@ -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 (file)
index 0000000..70c36fe
--- /dev/null
@@ -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()
+
index 68060cc408e934e56917106b837bac3dfff011c8..03e560b7fa66b5c0caea547fed43bc7e9f1db5a7 100644 (file)
@@ -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
   )

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.