From ca1ed43cede1f3e40f380507172a914e2e7ff243 Mon Sep 17 00:00:00 2001 From: Andreas Naumann <andreas.naumann@tu-dresden.de> Date: Sun, 5 Sep 2010 18:40:36 +0000 Subject: [PATCH] packing and simplified usage (compilation determines flags like with_umfpack, have_parallel and additionally needed libraries) --- AMDiS/AMDiSConfig.cmake | 32 ++++++++++++++++++++++++++++++++ AMDiS/AMDiSUse.cmake | 16 ++++++++++++++++ AMDiS/CMakeLists.txt | 39 +++++++++++++++++++++++++++++++++++---- 3 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 AMDiS/AMDiSConfig.cmake create mode 100644 AMDiS/AMDiSUse.cmake diff --git a/AMDiS/AMDiSConfig.cmake b/AMDiS/AMDiSConfig.cmake new file mode 100644 index 00000000..51d86c82 --- /dev/null +++ b/AMDiS/AMDiSConfig.cmake @@ -0,0 +1,32 @@ +set(AMDiS_INCLUDE_DIR ${AMDiS_DIR}/include ${AMDiS_DIR}/mtl4) +set(AMDiS_LIBRARIES amdis compositeFEM) +set(AMDiS_LIBRARY_DIRS ${AMDiS_DIR}/lib) +find_package(Boost 1.42 REQUIRED) +if(Boost_FOUND) + set(AMDiS_LIBRARIES ${AMDiS_LIBRARIES} boost_system boost_iostreams) + set(AMDiS_LIBRARY_DIRS ${AMDiS_LIBRARY_DIRS} ${Boost_INCLUDE_DIR}) +endif(Boost_FOUND) +set(AMDiS_NEED_PARMETIS OFF) +set(AMDiS_HAS_PARALLEL_DOMAIN OFF) +set(AMDiS_NEED_UMFPACK OFF) +set(AMDiS_NEED_MKL OFF) +set(AMDiS_NEED_DUNE OFF) +set(AMDiS_USE_FILE ${AMDiS_DIR}/AMDiSUse.cmake) +message("find-components: ${AMDiS_FIND_COMPONENTS}") + +if(${AMDiS_FIND_COMPONENTS} MATCHES umfpack ) + if( ${AMDiS_NEED_UMFPACK} ) + set(AMDiS_LIBRARIES ${AMDiS_LIBRARIES} umfpack) + else() + set( AMDiS_umfpack_FOUND FALSE) + message(SEND_ERROR "the selected amdis was not compiled with umfpack") + endif() +endif() + +if( ${AMDiS_NEED_PARMETIS} ) + set(AMDiS_LIBRARIES ${AMDiS_LIBRARIES} parmetis metis) +endif() + +if(${AMDiS_FIND_COMPONENTS} MATCHES parmetis AND NOT ${AMDiS_NEED_PARMETIS}) + message(SEND_ERROR "amdis was not compiled with parmetis") +endif() diff --git a/AMDiS/AMDiSUse.cmake b/AMDiS/AMDiSUse.cmake new file mode 100644 index 00000000..0452b6b7 --- /dev/null +++ b/AMDiS/AMDiSUse.cmake @@ -0,0 +1,16 @@ +link_directories(${AMDiS_LIBRARY_DIRS}) +include_directories(${AMDiS_INCLUDE_DIR}) + +#load mpi-compiler for use with parmetis and parallel_domain +if(${AMDiS_HAS_PARALLEL_DOMAIN}) + if(NOT ${AMDiS_NEED_PARMETIS}) + message(SEND_ERROR "parallel domain needs parmetis, but AMDiS was not compiled with parmetis support. There's something really odd..") + else() + find_package(MPI REQUIRED) + if(MPI_FOUND) + INCLUDE(CMakeForceCompiler) + CMAKE_FORCE_CXX_COMPILER(mpicxx "The MPI C++ compiler") + CMAKE_FORCE_C_COMPILER(mpicc "The MPI C Compiler") + endif(MPI_FOUND) + endif(NOT ${AMDiS_NEED_PARMETIS}) +endif(${AMDiS_HAS_PARALLEL_DOMAIN}) diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt index d667542d..d334a2ab 100644 --- a/AMDiS/CMakeLists.txt +++ b/AMDiS/CMakeLists.txt @@ -1,6 +1,8 @@ project(AMDiS) -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.8) + +set(AMDiS_SOURCE_DIR "${AMDiS_SOURCE_DIR}/src") #needs: --enable-debug, enable-intel --enable-openmp --enable-parmetis --enable-parallel-domain --enable-umfpack --enable-mkl --enable-boost --enable-marmot @@ -37,7 +39,7 @@ endif(ENABLE_INTEL) #endif(ENABLE_BOOST) SET(LIB_DIR ./lib) -SET(SOURCE_DIR ./src) +SET(SOURCE_DIR ${AMDiS_SOURCE_DIR}) SET(AMDIS_SRC ${SOURCE_DIR}/DOFIndexed.cc ${SOURCE_DIR}/GNUPlotWriter.cc ${SOURCE_DIR}/VertexVector.cc @@ -205,19 +207,48 @@ include_directories(${SOURCE_DIR}) add_library(amdis SHARED ${AMDIS_SRC} ${PARALLEL_AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC}) add_library(compositeFEM SHARED ${COMPOSITE_FEM_SRC}) - +message("compileflags: ${COMPILEFLAGS}") SET_TARGET_PROPERTIES(amdis PROPERTIES COMPILE_FLAGS "${COMPILEFLAGS}") if(ENABLE_MARMOT) Message("please set marmotcc manually") endif(ENABLE_MARMOT) install(TARGETS amdis compositeFEM - LIBRARY DESTINATION lib ) + LIBRARY DESTINATION amdis/lib ) + +FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/*.h") +INSTALL(FILES ${HEADERS} DESTINATION amdis/include) +FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/*.hh") +INSTALL(FILES ${HEADERS} DESTINATION amdis/include) +FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/parallel/*.h") +INSTALL(FILES ${HEADERS} DESTINATION amdis/include/parallel/) +FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/time/*.h") +INSTALL(FILES ${HEADERS} DESTINATION amdis/include/time/) + +configure_file(${AMDiS_BINARY_DIR}/AMDiSConfig.cmake.in + ${AMDiS_BINARY_DIR}/AMDiSConfig.cmake + @ONLY + ) +INSTALL(FILES ${AMDiS_BINARY_DIR}/AMDiSConfig.cmake DESTINATION amdis/) +INSTALL(FILES ${AMDiS_BINARY_DIR}/AMDiSUse.cmake DESTINATION amdis/) +#install mtl +INSTALL(DIRECTORY ${CMAKE_BINARY_DIR}/lib/mtl4/ + DESTINATION amdis/mtl4 + FILES_MATCHING PATTERN "*.hpp" + PATTERN ".svn" EXCLUDE + PATTERN ".svn/*" EXCLUDE + ) if(ENABLE_GUI) add_subdirectory(other/tools/amdis_gui) endif(ENABLE_GUI) +set(CPACK_PACKAGE_CONTACT "Me") +set(CPACK_BINARY_DEB "on") +set(CPACK_BINARY_RPM "on") +#set(CPACK_SET_DESTDIR "true") +set(CPACK_INSTALL_PREFIX "") +include(CPack) if(ENABLE_TESTS) #ENABLE_TESTING() #add_test(demo_test run_test.sh) -- GitLab