]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Caching, done right. And prettify the configuration a bit
authormaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 27 Sep 2012 10:07:55 +0000 (10:07 +0000)
committermaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 27 Sep 2012 10:07:55 +0000 (10:07 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_cmake@26779 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/TODO.CMAKE
deal.II/cmake/configure/configure_metis.cmake
deal.II/cmake/configure/configure_p4est.cmake
deal.II/cmake/configure/configure_trilinos.cmake
deal.II/cmake/modules/FindAMD.cmake
deal.II/cmake/modules/FindP4EST.cmake
deal.II/cmake/modules/FindPETSC.cmake
deal.II/cmake/modules/FindSC.cmake
deal.II/cmake/modules/FindTRILINOS.cmake

index d9e8ee13fd820d58a6dee68cc78332266d30328c..fec9deb49e488e14d8df47e8c708d2c6973644f7 100644 (file)
@@ -1,16 +1,10 @@
 Major:
 
-* Bug: Unset some cached tests variables. Notably:
-    - A Trilinos test
-    - the LAPACK routine checks
-
 * Implement the documentation component. (I don't grok what's going on in
   this makefiles. There is a rudimentary doxygen call, though.)
 
 * Add the rest of the Bug tests
 
-* Enable in source FindModules for P4est and Trilinos.
-
 * The following features have to be written:
     * HDF5
     * MUMPS
index a962c235434f46982273bb41160f88013c15e199..1c0b2c6585451da1354acc50892c4f6a62cbb6ab 100644 (file)
@@ -8,9 +8,9 @@ MACRO(FEATURE_METIS_FIND_EXTERNAL var)
   IF(METIS_FOUND AND METIS_MAJOR GREATER 4)
     SET(${var} TRUE)
   ELSE()
-    MESSAGE(WARNING
+    MESSAGE(WARNING "\n"
       "Could not find a sufficient modern metis installation: "
-      "Version 5.x required!"
+      "Version 5.x required!\n\n"
       )
   ENDIF()
 ENDMACRO()
index b7ca93ff85e909ef97c7dd16593d1ea9605b4855..3cfc70a8b264e767035548253f0ce228a5ffaa63 100644 (file)
@@ -39,6 +39,11 @@ MACRO(FEATURE_P4EST_FIND_EXTERNAL var)
       SET(${var} TRUE)
     ENDIF()
 
+    #
+    # Remove the variable from the cache to force a recheck:
+    #
+    UNSET(P4EST_WITH_MPI CACHE)
+
   ENDIF()
 ENDMACRO()
 
@@ -50,19 +55,9 @@ MACRO(FEATURE_P4EST_CONFIGURE_EXTERNAL var)
   LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${P4EST_INCLUDE_DIR} ${SC_INCLUDE_DIR})
 
   IF (CMAKE_BUILD_TYPE MATCHES "Debug")
-    IF(P4EST_DEBUG_FOUND AND SC_DEBUG_FOUND)
-      LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_DEBUG
-        ${P4EST_DEBUG_LIBRARY} ${SC_DEBUG_LIBRARY}
-        )
-    ELSE()
-      MESSAGE(STATUS
-        "No debug p4est and sc libraries were found. "
-        "The regular p4est and sc libs will be used for the debug target instead."
-        )
-      LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_DEBUG
-        ${P4EST_LIBRARY} ${SC_LIBRARY}
-        )
-    ENDIF()
+    LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_DEBUG
+      ${P4EST_LIBRARY} ${SC_LIBRARY}
+      )
   ENDIF()
 
   IF (CMAKE_BUILD_TYPE MATCHES "Release")
@@ -85,7 +80,10 @@ MACRO(FEATURE_P4EST_ERROR_MESSAGE)
     "Could not find the p4est and sc libraries!\n\n"
     "Please ensure that the libraries are installed on your computer.\n"
     "If the libraries are not at a default location, either provide some hints\n"
-    "for the autodetection, or set the relevant variables by hand in ccmake.\n\n"
+    "for the autodetection:\n"
+    "    $ P4EST_DIR=\"...\" cmake <...>\n"
+    "    $ ccmake -DP4EST_DIR=\"...\" cmake <...>\n"
+    "or set the relevant variables by hand in ccmake.\n"
     )
 ENDMACRO()
 
index c3709253aba1bf018155299aab9e7692ca602330..9e12bb1a3ddd198fea0b07e5f22378ef38c331a5 100644 (file)
@@ -138,6 +138,12 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var)
     STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-std=c++0x")
     LIST(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIRS})
 
+    #
+    # Remove the following variables from the cache to force a recheck:
+    #
+    UNSET(TRILINOS_SUPPORTS_CPP11 CACHE)
+    UNSET(TRILINOS_HAS_C99_TR1_WORKAROUND CACHE)
+
   ENDIF(TRILINOS_FOUND)
 ENDMACRO()
 
index 54ef5b781291fd46bbc5993cd48b0810bc1d0beb..8fccdfdc10b8d604f9f8dbc1dd60d963ab2d9f59 100644 (file)
@@ -37,3 +37,4 @@ ELSE()
     "An optional hint to an AMD directory"
     )
 ENDIF()
+
index c09d32ad3b4cb700bf1eac4b243c8021c98d7315..39d0e16e4fbc34daae0b4266779032c0518bd4af 100644 (file)
@@ -4,36 +4,34 @@
 
 INCLUDE(FindPackageHandleStandardArgs)
 
+SET_IF_EMPTY(P4EST_DIR "$ENV{P4EST_DIR}")
+
 FIND_PATH(P4EST_INCLUDE_DIR p4est.h
   HINTS
-    ${P4EST_DIR}/include
-    $ENV{P4EST_DIR}/include
+    ${P4EST_DIR}
+  PATH_SUFFIXES
+    p4est include/p4est include src p4est/src
   )
 
 FIND_LIBRARY(P4EST_LIBRARY
   NAMES p4est
   HINTS
     ${P4EST_DIR}
-    $ENV{P4EST_DIR}
-  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
-  )
-
-FIND_LIBRARY(P4EST_DEBUG_LIBRARY
-  NAMES p4est_debug p4est.g
-  HINTS
-    ${P4EST_DIR}
-    $ENV{P4EST_DIR}
-  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
+  PATH_SUFFIXES
+    lib${LIB_SUFFIX} lib64 lib src
   )
 
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(P4EST DEFAULT_MSG P4EST_LIBRARY P4EST_INCLUDE_DIR)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(P4EST_DEBUG DEFAULT_MSG P4EST_DEBUG_LIBRARY P4EST_INCLUDE_DIR)
 
 IF(P4EST_FOUND)
   MARK_AS_ADVANCED(
     P4EST_LIBRARY
-    P4EST_DEBUG_LIBRARY
     P4EST_INCLUDE_DIR
+    P4EST_DIR
   )
+ELSE()
+  SET(P4EST_DIR "" CACHE STRING
+    "An optional hint to a p4est installation/directory"
+    )
 ENDIF()
 
index f8b179d7dba3e93b842d240061b2a09d2c2576a0..3ba5f890596598f3b21ae0f146ca7ccc7b5f715e 100644 (file)
@@ -212,3 +212,4 @@ ENDIF()
 UNSET(PETSC_INCLUDE_DIR_ARCH CACHE)
 UNSET(PETSC_PETSCCONF_H CACHE)
 UNSET(PETSC_PETSCVERSION_H CACHE)
+
index 33353498796b0a19a522eb8e1d8e0f954f58ebe1..ea4190b49683b74532c28a402d64a1456c5f0a0d 100644 (file)
@@ -2,12 +2,15 @@
 
 INCLUDE(FindPackageHandleStandardArgs)
 
+SET_IF_EMPTY(P4EST_DIR "$ENV{P4EST_DIR}")
+SET_IF_EMPTY(SC_DIR "$ENV{SC_DIR}")
+
 FIND_PATH(SC_INCLUDE_DIR sc.h
   HINTS
-    ${SC_DIR}/include
-    $ENV{SC_DIR}/include
-    ${P4EST_DIR}/include
-    $ENV{P4EST_DIR}/include
+    ${SC_DIR}
+    ${P4EST_DIR}
+  PATH_SUFFIXES
+    sc include/p4est include src sc/src p4est/sc/src
   )
 
 
@@ -15,29 +18,22 @@ FIND_LIBRARY(SC_LIBRARY
   NAMES sc
   HINTS
     ${SC_DIR}
-    $ENV{SC_DIR}
     ${P4EST_DIR}
-    $ENV{P4EST_DIR}
-  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
-  )
-
-FIND_LIBRARY(SC_DEBUG_LIBRARY
-  NAMES sc_debug sc.g
-  HINTS
-    ${SC_DIR}
-    $ENV{SC_DIR}
-    ${P4EST_DIR}
-    $ENV{P4EST_DIR}
-  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
+  PATH_SUFFIXES
+    lib${LIB_SUFFIX} lib64 lib src
   )
 
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(SC DEFAULT_MSG SC_LIBRARY SC_INCLUDE_DIR)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(SC_DEBUG DEFAULT_MSG SC_DEBUG_LIBRARY SC_INCLUDE_DIR)
 
 IF(SC_FOUND)
   MARK_AS_ADVANCED(
     SC_LIBRARY
-    SC_DEBUG_LIBRARY
     SC_INCLUDE_DIR
+    SC_DIR
   )
+ELSE()
+  SET(SC_DIR "" CACHE STRING
+    "An optional hint to an sc installation/directory"
+    )
 ENDIF()
+
index f7884e457677a5cbe6ebbfaa8f7dbbb461ea7263..d2024987cf68275f05e5624877121d2dff1ab1b1 100644 (file)
@@ -14,6 +14,8 @@
 
 INCLUDE(FindPackageHandleStandardArgs)
 
+SET_IF_EMPTY(TRILINOS_DIR "$ENV{TRILINOS_DIR}")
+
 #
 # Include the trilinos package configuration:
 #
@@ -22,7 +24,6 @@ find_package(TRILINOS
   NAMES Trilinos TRILINOS
   HINTS
     ${TRILINOS_DIR}
-    $ENV{TRILINOS_DIR}
   PATH_SUFFIXES
     lib${LIB_SUFFIX}/cmake/Trilinos
     lib64/cmake/Trilinos
@@ -57,9 +58,14 @@ FOREACH(library ${Trilinos_LIBRARIES})
     NAMES ${library}
     HINTS ${Trilinos_LIBRARY_DIRS}
     )
-  MARK_AS_ADVANCED(TRILINOS_LIBRARY_${library})
 
   LIST(APPEND TRILINOS_LIBRARIES ${TRILINOS_LIBRARY_${library}})
+
+  #
+  # Remove the variables from the cache, so that updating TRILINOS_DIR will
+  # find the new libraries..
+  #
+  UNSET(TRILINOS_LIBRARY_${library} CACHE)
 ENDFOREACH()
 
 
@@ -75,5 +81,12 @@ IF(TRILINOS_FOUND)
     TRILINOS_INCLUDE_DIRS
     TRILINOS_LIBRARIES
     )
+ELSE()
+  IF(TRILINOS_DIR MATCHES "-NOTFOUND")
+    SET(TRILINOS_DIR "" CACHE STRING
+      "A hint to a Trilinos installation"
+      FORCE
+      )
+  ENDIF()
 ENDIF()
 

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.