]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add rudimentary support for Umfpack, AMD, BLAS, LAPACK
authormaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Aug 2012 22:55:22 +0000 (22:55 +0000)
committermaier <maier@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Aug 2012 22:55:22 +0000 (22:55 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_cmake@25848 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/CMakeLists.txt
deal.II/contrib/cmake/modules/FindAMD.cmake [new file with mode: 0644]
deal.II/contrib/cmake/modules/FindUmfpack.cmake [new file with mode: 0644]
deal.II/contrib/cmake/modules/deal_ii_with_threads.cmake
deal.II/contrib/cmake/modules/deal_ii_with_umfpack.cmake
deal.II/contrib/cmake/modules/macro_expand_instantiations.cmake [moved from deal.II/contrib/cmake/macros/macro_expand_instantiations.cmake with 100% similarity]
deal.II/contrib/tbb/CMakeLists.txt
deal.II/contrib/umfpack/CMakeLists.txt [new file with mode: 0644]
deal.II/include/CMakeLists.txt
deal.II/source/CMakeLists.txt

index 27ac703efa63f55d8ed758f62dd5689d52b46a85..2b801b98768e9cab1071cd82d906f0b2e5fb07d7 100644 (file)
@@ -7,11 +7,12 @@ SET(CMAKE_CXX_FLAGS "-std=c++0x -D_REENTRANT -fPIC -O2 -march=native") #TODO: c+
 SET(CMAKE_INCLUDE_CURRENT_DIR true)
 
 
+
 #
 # General configuration options:
 #
 
-OPTION(DEAL_II_USE_CONTRIB "Build and use contrib libraries bundled with the source tarball." OFF)
+OPTION(DEAL_II_USE_CONTRIB "Build and use contrib libraries bundled with the source tarball." ON)
 OPTION(DEAL_II_WITH_THREADS "Build deal.II with support for threads. This pulls in libtbb as a dependency." ON)
 OPTION(DEAL_II_FUNCTIONPARSER "BUild deal.II with support for functionparser" ON)
 OPTION(DEAL_II_MPI "Build deal.II with support for openmpi." OFF)
@@ -20,16 +21,23 @@ OPTION(DEAL_II_WITH_METIS "Build deal.II with support for Metis." OFF)
 # TODO: The rest ;-)
 
 
+
 #
-# Configure:
+# Now, configure and prepare a lot of things:
 #
 
 SET(CMAKE_MODULE_PATH
   ${CMAKE_MODULE_PATH}
-  "${CMAKE_SOURCE_DIR}/contrib/cmake/macros/"
+  # We outsource all the gory details:
   "${CMAKE_SOURCE_DIR}/contrib/cmake/modules/"
   )
 
+#
+# used as a dummy target for all the stuff that has to be done before the
+# library can be compiled:
+#
+ADD_CUSTOM_TARGET(deal_ii_target_dependencies)
+
 IF(DEAL_II_WITH_THREADS)
   INCLUDE(deal_ii_with_threads)
 ENDIF()
@@ -39,13 +47,15 @@ IF(DEAL_II_WITH_UMFPACK)
 ENDIF()
 
 
+
 #
-# Build the toolchain and contrib libraries:
+# Build the toolchain:
 #
 
 ADD_SUBDIRECTORY(common/expand_instantiations)
 
 
+
 #
 # Compile the library:
 #
diff --git a/deal.II/contrib/cmake/modules/FindAMD.cmake b/deal.II/contrib/cmake/modules/FindAMD.cmake
new file mode 100644 (file)
index 0000000..9fb3b4a
--- /dev/null
@@ -0,0 +1,24 @@
+# Try to find AMD
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PATH(AMD_INCLUDE_DIR amd.h
+  HINTS
+  $ENV{AMD_INCLUDE_DIR}
+  ${AMD_INCLUDE_DIR}
+)
+
+FIND_LIBRARY(AMD_LIBRARY
+  NAMES libumfpack.so
+  PATHS
+  $ENV{AMD_LIBRARY_DIR}
+  ${AMD_LIBRARY_DIR}
+  PATH_SUFFIXES lib64 lib
+)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(AMD DEFAULT_MSG AMD_LIBRARY AMD_INCLUDE_DIR)
+
+MARK_AS_ADVANCED(
+  AMD_LIBRARY
+  AMD_INCLUDE_DIR
+)
diff --git a/deal.II/contrib/cmake/modules/FindUmfpack.cmake b/deal.II/contrib/cmake/modules/FindUmfpack.cmake
new file mode 100644 (file)
index 0000000..7d3c2a1
--- /dev/null
@@ -0,0 +1,24 @@
+# Try to find Umfpack
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PATH(Umfpack_INCLUDE_DIR umfpack.h
+  HINTS
+  $ENV{Umfpack_INCLUDE_DIR}
+  ${Umfpack_INCLUDE_DIR}
+)
+
+FIND_LIBRARY(Umfpack_LIBRARY
+  NAMES libumfpack.so
+  PATHS
+  $ENV{Umfpack_LIBRARY_DIR}
+  ${Umfpack_LIBRARY_DIR}
+  PATH_SUFFIXES lib64 lib
+)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Umfpack DEFAULT_MSG Umfpack_LIBRARY Umfpack_INCLUDE_DIR)
+
+MARK_AS_ADVANCED(
+  Umfpack_LIBRARY
+  Umfpack_INCLUDE_DIR
+)
index 2afd963044eac5bbf3adfb1051174039852c14e4..1b958145b04794d53bc11477d8069c9124a45c6f 100644 (file)
@@ -8,7 +8,14 @@ ELSE()
 ENDIF()
 
 INCLUDE_DIRECTORIES(${TBB_INCLUDE_DIR})
-# TODO: external_libraries
+
+SET(deal_ii_external_libraries
+  ${deal_ii_external_libraries}
+  ${TBB_LIBRARY}
+  )
+SET(deal_ii_external_debug_libraries
+  ${deal_ii_external_debug_libraries}
+  ${TBB_DEBUG_LIBRARY}) #TODO
 
 SET(DEAL_II_USE_MT TRUE)
 SET(DEAL_II_USE_MT_POSIX TRUE)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2ed8fbbfc44d721a81791caef948b6bb89f4e383 100644 (file)
@@ -0,0 +1,22 @@
+FIND_PACKAGE(LAPACK REQUIRED)
+FIND_PACKAGE(BLAS REQUIRED)
+
+IF(DEAL_II_USE_CONTRIB)
+  # Compiles and links libumfpack, exports the Umfpack_* variables as well:
+  ADD_SUBDIRECTORY(contrib/umfpack)
+ELSE()
+  FIND_PACKAGE(Umfpack REQUIRED)
+  FIND_PACKAGE(AMD REQUIRED)
+ENDIF()
+
+INCLUDE_DIRECTORIES(${Umfpack_INCLUDE_DIR} ${AMD_INCLUDE_DIR})
+
+SET(deal_ii_external_libraries
+  ${deal_ii_external_libraries}
+  ${Umfpack_LIBRARY} ${AMD_LIBRARY} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}
+  )
+
+SET(deal_ii_external_debug_libraries
+  ${deal_ii_external_debug_libraries}
+  ${Umfpack_LIBRARY} ${AMD_LIBRARY} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}
+  )
index 5ae0b53c48f4f312407f613a51b8fc2b78c5674a..197761dd74e260e2d7736d1cb673346b4170a328 100644 (file)
@@ -22,7 +22,7 @@ ADD_CUSTOM_TARGET(tbb ALL
           ${CMAKE_CURRENT_BINARY_DIR}/${libtbb_directory}/build
   )
 
-ADD_CUSTOM_TARGET(deal_ii_target_dependencies ALL DEPENDS tbb)
+ADD_DEPENDENCIES(deal_ii_target_dependencies tbb)
 
 SET(TBB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${libtbb_directory}/include)
 SET(TBB_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libtbb.so)
diff --git a/deal.II/contrib/umfpack/CMakeLists.txt b/deal.II/contrib/umfpack/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8e69788
--- /dev/null
@@ -0,0 +1 @@
+message( "Yo..." )
index f081190bc7f15cb99857a92a80026cd922987cac..f2a2d79aa84992e570cfc49037e4c7385d8bb2dc 100644 (file)
@@ -3,7 +3,6 @@ CONFIGURE_FILE(
   ${CMAKE_CURRENT_BINARY_DIR}/deal.II/base/config.h
   )
 
-
 #
 #TODO: This perl script has to die...:
 #
@@ -16,6 +15,9 @@ ADD_CUSTOM_COMMAND(
        > ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h
   )
 
-ADD_CUSTOM_TARGET(deal_ii_target_dependencies ALL
+ADD_CUSTOM_TARGET(lapack_templates ALL
   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h
   )
+
+ADD_DEPENDENCIES(deal_ii_target_dependencies lapack_templates)
+
index 8a7ab9636b762a2848445fe47cd67342df729387..5f77721944aed000b1165c641c228f195d76c35f 100644 (file)
@@ -8,7 +8,7 @@ ADD_SUBDIRECTORY(lac)
 ADD_SUBDIRECTORY(multigrid)
 ADD_SUBDIRECTORY(numerics)
 
-ADD_LIBRARY(deal_II
+ADD_LIBRARY(deal_II SHARED
  $<TARGET_OBJECTS:obj_base>
  $<TARGET_OBJECTS:obj_distributed>
  $<TARGET_OBJECTS:obj_dofs>

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.