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