From: maier Date: Thu, 9 Aug 2012 22:55:22 +0000 (+0000) Subject: Add rudimentary support for Umfpack, AMD, BLAS, LAPACK X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5872e90ce0a81a61a9210f3702805f5e94407824;p=dealii-svn.git Add rudimentary support for Umfpack, AMD, BLAS, LAPACK git-svn-id: https://svn.dealii.org/branches/branch_cmake@25848 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/CMakeLists.txt b/deal.II/CMakeLists.txt index 27ac703efa..2b801b9876 100644 --- a/deal.II/CMakeLists.txt +++ b/deal.II/CMakeLists.txt @@ -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 index 0000000000..9fb3b4aa9b --- /dev/null +++ b/deal.II/contrib/cmake/modules/FindAMD.cmake @@ -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 index 0000000000..7d3c2a1bee --- /dev/null +++ b/deal.II/contrib/cmake/modules/FindUmfpack.cmake @@ -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 +) diff --git a/deal.II/contrib/cmake/modules/deal_ii_with_threads.cmake b/deal.II/contrib/cmake/modules/deal_ii_with_threads.cmake index 2afd963044..1b958145b0 100644 --- a/deal.II/contrib/cmake/modules/deal_ii_with_threads.cmake +++ b/deal.II/contrib/cmake/modules/deal_ii_with_threads.cmake @@ -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) diff --git a/deal.II/contrib/cmake/modules/deal_ii_with_umfpack.cmake b/deal.II/contrib/cmake/modules/deal_ii_with_umfpack.cmake index e69de29bb2..2ed8fbbfc4 100644 --- a/deal.II/contrib/cmake/modules/deal_ii_with_umfpack.cmake +++ b/deal.II/contrib/cmake/modules/deal_ii_with_umfpack.cmake @@ -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} + ) diff --git a/deal.II/contrib/cmake/macros/macro_expand_instantiations.cmake b/deal.II/contrib/cmake/modules/macro_expand_instantiations.cmake similarity index 100% rename from deal.II/contrib/cmake/macros/macro_expand_instantiations.cmake rename to deal.II/contrib/cmake/modules/macro_expand_instantiations.cmake diff --git a/deal.II/contrib/tbb/CMakeLists.txt b/deal.II/contrib/tbb/CMakeLists.txt index 5ae0b53c48..197761dd74 100644 --- a/deal.II/contrib/tbb/CMakeLists.txt +++ b/deal.II/contrib/tbb/CMakeLists.txt @@ -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 index 0000000000..8e697887fb --- /dev/null +++ b/deal.II/contrib/umfpack/CMakeLists.txt @@ -0,0 +1 @@ +message( "Yo..." ) diff --git a/deal.II/include/CMakeLists.txt b/deal.II/include/CMakeLists.txt index f081190bc7..f2a2d79aa8 100644 --- a/deal.II/include/CMakeLists.txt +++ b/deal.II/include/CMakeLists.txt @@ -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) + diff --git a/deal.II/source/CMakeLists.txt b/deal.II/source/CMakeLists.txt index 8a7ab9636b..5f77721944 100644 --- a/deal.II/source/CMakeLists.txt +++ b/deal.II/source/CMakeLists.txt @@ -8,7 +8,7 @@ ADD_SUBDIRECTORY(lac) ADD_SUBDIRECTORY(multigrid) ADD_SUBDIRECTORY(numerics) -ADD_LIBRARY(deal_II +ADD_LIBRARY(deal_II SHARED $ $ $