cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR) if(POLICY CMP0048) cmake_policy(SET CMP0048 OLD) endif() project(AMDiS) # set some policies cmake_policy(SET CMP0017 OLD) if(POLICY CMP0042) cmake_policy(SET CMP0042 NEW) endif() if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() list(APPEND CMAKE_MODULE_PATH ${BASE_DIR}/cmake) # Include macros include(enable_cxx11) include(enable_mtl4) include(enable_boost) include(enable_umfpack) include(enable_petsc) include(enable_zoltan) include(enable_bddcml) include(enable_hypre) include(enable_png) # ------------------------------------------------------------------------------ include_directories(${SOURCE_DIR}) set(AMDIS_INCLUDE_DIRS "") set(COMPILEFLAGS "") enable_cxx11(ENABLE_CXX11 COMPILEFLAGS) if (ENABLE_CXX11) list(APPEND COMPILEFLAGS "-DAMDIS_HAS_CXX11=1") else () list(APPEND COMPILEFLAGS "-DAMDIS_HAS_CXX11=0") endif (ENABLE_CXX11) enable_mtl4(COMPILEFLAGS AMDIS_INCLUDE_DIRS _) enable_boost(COMPILEFLAGS AMDIS_INCLUDE_DIRS _) if (ENABLE_UMFPACK) enable_umfpack(COMPILEFLAGS AMDIS_INCLUDE_DIRS _) endif (ENABLE_UMFPACK) if (ENABLE_PNG) enable_png(COMPILEFLAGS AMDIS_INCLUDE_DIRS _) endif (ENABLE_PNG) # ------------------------------------------------------------------------------ set(AMDIS_SRC "") list(APPEND AMDIS_SRC ${SOURCE_DIR}/AdaptBase.cc ${SOURCE_DIR}/AdaptInfo.cc ${SOURCE_DIR}/AdaptInstationary.cc ${SOURCE_DIR}/AdaptStationary.cc ${SOURCE_DIR}/AMDiS.cc ${SOURCE_DIR}/Assembler.cc ${SOURCE_DIR}/BasisFunction.cc ${SOURCE_DIR}/Boundary.cc ${SOURCE_DIR}/BoundaryManager.cc ${SOURCE_DIR}/BoundaryObject.cc ${SOURCE_DIR}/Bubble.cc ${SOURCE_DIR}/Cholesky.cc ${SOURCE_DIR}/CoarseningManager.cc ${SOURCE_DIR}/CoarseningManager1d.cc ${SOURCE_DIR}/CoarseningManager2d.cc ${SOURCE_DIR}/CoarseningManager3d.cc ${SOURCE_DIR}/ComponentTraverseInfo.cc ${SOURCE_DIR}/CouplingIterationInterface.cc ${SOURCE_DIR}/CreatorMap.cc ${SOURCE_DIR}/DOFAdmin.cc ${SOURCE_DIR}/DOFIndexed.cc ${SOURCE_DIR}/DOFMatrix.cc ${SOURCE_DIR}/DOFVector.cc ${SOURCE_DIR}/DirichletBC.cc ${SOURCE_DIR}/DualTraverse.cc ${SOURCE_DIR}/ElInfo.cc ${SOURCE_DIR}/ElInfo1d.cc ${SOURCE_DIR}/ElInfo2d.cc ${SOURCE_DIR}/ElInfo3d.cc ${SOURCE_DIR}/ElInfoStack.cc ${SOURCE_DIR}/Element.cc ${SOURCE_DIR}/ElementData.cc ${SOURCE_DIR}/ElementDofIterator.cc ${SOURCE_DIR}/ElementRegion_ED.cc ${SOURCE_DIR}/FiniteElemSpace.cc ${SOURCE_DIR}/FirstOrderAssembler.cc ${SOURCE_DIR}/FirstOrderTerm.cc ${SOURCE_DIR}/FixVec.cc ${SOURCE_DIR}/Global.cc ${SOURCE_DIR}/Initfile.cc ${SOURCE_DIR}/Lagrange.cc ${SOURCE_DIR}/LeafData.cc ${SOURCE_DIR}/Line.cc ${SOURCE_DIR}/MacroElement.cc ${SOURCE_DIR}/Marker.cc ${SOURCE_DIR}/MatrixVector.cc ${SOURCE_DIR}/Mesh.cc ${SOURCE_DIR}/MeshStructure.cc ${SOURCE_DIR}/Operator.cc ${SOURCE_DIR}/OperatorTerm.cc ${SOURCE_DIR}/Parametric.cc ${SOURCE_DIR}/PeriodicBC.cc ${SOURCE_DIR}/ProblemInstat.cc ${SOURCE_DIR}/ProblemInterpol.cc ${SOURCE_DIR}/ProblemStat.cc ${SOURCE_DIR}/Projection.cc ${SOURCE_DIR}/QPInfo.cc ${SOURCE_DIR}/QPsiPhi.cc ${SOURCE_DIR}/Quadrature.cc ${SOURCE_DIR}/RCNeighbourList.cc ${SOURCE_DIR}/Recovery.cc ${SOURCE_DIR}/RefinementManager.cc ${SOURCE_DIR}/RefinementManager1d.cc ${SOURCE_DIR}/RefinementManager2d.cc ${SOURCE_DIR}/RefinementManager3d.cc ${SOURCE_DIR}/RobinBC.cc ${SOURCE_DIR}/ScalableQuadrature.cc ${SOURCE_DIR}/SecondOrderAssembler.cc ${SOURCE_DIR}/SecondOrderTerm.cc ${SOURCE_DIR}/Serializer.cc ${SOURCE_DIR}/StandardProblemIteration.cc ${SOURCE_DIR}/SubAssembler.cc ${SOURCE_DIR}/SubElInfo.cc ${SOURCE_DIR}/SubQuadrature.cc ${SOURCE_DIR}/SurfaceQuadrature.cc ${SOURCE_DIR}/SurfaceRegion_ED.cc ${SOURCE_DIR}/SystemVector.cc ${SOURCE_DIR}/Tetrahedron.cc ${SOURCE_DIR}/Timer.cc ${SOURCE_DIR}/Traverse.cc ${SOURCE_DIR}/Triangle.cc ${SOURCE_DIR}/VertexVector.cc ${SOURCE_DIR}/ZeroOrderAssembler.cc ${SOURCE_DIR}/ZeroOrderTerm.cc ${SOURCE_DIR}/est/Estimator.cc ${SOURCE_DIR}/est/RecoveryEstimator.cc ${SOURCE_DIR}/est/ResidualEstimator.cc ${SOURCE_DIR}/est/SimpleResidualEstimator.cc ${SOURCE_DIR}/io/ArhReader.cc ${SOURCE_DIR}/io/detail/ArhReader.cc ${SOURCE_DIR}/io/Arh2Reader.cc ${SOURCE_DIR}/io/Arh2Writer.cc ${SOURCE_DIR}/io/Arh3Reader.cc ${SOURCE_DIR}/io/Arh3Writer.cc ${SOURCE_DIR}/io/detail/Arh2Reader.cc ${SOURCE_DIR}/io/detail/ArhWriter.cc ${SOURCE_DIR}/io/detail/Arh2Writer.cc ${SOURCE_DIR}/io/detail/Arh3Reader.cc ${SOURCE_DIR}/io/detail/Arh3Writer.cc ${SOURCE_DIR}/io/DofWriter.cc ${SOURCE_DIR}/io/ElementFileWriter.cc ${SOURCE_DIR}/io/FileWriterInterface.cc ${SOURCE_DIR}/io/FileWriter.cc ${SOURCE_DIR}/io/GNUPlotWriter.cc ${SOURCE_DIR}/io/MacroInfo.cc ${SOURCE_DIR}/io/MacroReader.cc ${SOURCE_DIR}/io/MacroWriter.cc ${SOURCE_DIR}/io/PngReader.cc ${SOURCE_DIR}/io/PngWriter.cc ${SOURCE_DIR}/io/PovrayWriter.cc ${SOURCE_DIR}/io/Spreadsheet.cc ${SOURCE_DIR}/io/ValueReader.cc ${SOURCE_DIR}/io/ValueWriter.cc ${SOURCE_DIR}/io/VtkWriter.cc ${SOURCE_DIR}/io/VtkVectorWriter.cc ${SOURCE_DIR}/io/detail/VtkWriter.cc ${SOURCE_DIR}/nonlin/ProblemNonLin.cc ${SOURCE_DIR}/solver/SolverMatrix.cc ${SOURCE_DIR}/time/RosenbrockAdaptInstationary.cc ${SOURCE_DIR}/time/RosenbrockMethod.cc ${SOURCE_DIR}/time/RosenbrockStationary.cc # debugging files ${SOURCE_DIR}/Debug.cc ${SOURCE_DIR}/GlobalDOFNumbering.cc # not used by any other class ${SOURCE_DIR}/GlobalElementNumbering.cc # not used by any other class ${SOURCE_DIR}/ProblemStatDbg.cc ) include(amdis_parallel) include(muparser) # ------------------------------------------------------------------------------ if (ENABLE_COMPRESSION) list(APPEND COMPILEFLAGS "-DAMDIS_HAS_COMPRESSION") endif (ENABLE_COMPRESSION) if (ENABLE_EXTENSIONS) include(amdis_extensions) add_library(amdis_extensions ${EXTENSIONS_SRC}) set_target_properties(amdis_extensions PROPERTIES OUTPUT_NAME amdisextensions${POSTFIX} DEBUG_OUTPUT_NAME amdisextensions${POSTFIX}d) install(TARGETS amdis_extensions DESTINATION lib/amdis/ ) endif (ENABLE_EXTENSIONS) if (ENABLE_REINIT) include(amdis_reinit) add_library(amdis_reinit ${REINIT_SRC}) set_target_properties(amdis_reinit PROPERTIES OUTPUT_NAME amdisreinit${POSTFIX} DEBUG_OUTPUT_NAME amdisreinit${POSTFIX}d) install(TARGETS amdis_reinit DESTINATION lib/amdis/ ) endif (ENABLE_REINIT) if (ENABLE_COMPOSITE_FEM) include(amdis_compositeFEM) add_library(amdis_compositeFEM ${COMPOSITE_FEM_SRC}) set_target_properties(amdis_compositeFEM PROPERTIES OUTPUT_NAME amdiscompositefem${POSTFIX} DEBUG_OUTPUT_NAME amdiscompositefem${POSTFIX}d) install(TARGETS amdis_compositeFEM DESTINATION lib/amdis/ ) endif (ENABLE_COMPOSITE_FEM) if (ENABLE_SEQ_PETSC) include(amdis_seq_petsc) endif (ENABLE_SEQ_PETSC) # ------------------------------------------------------------------------------ include_directories(${AMDIS_INCLUDE_DIRS}) add_definitions(${COMPILEFLAGS}) add_library(amdis ${AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC}) # specify how to install this target: # ----------------------------------- set(INSTALL_SUBDIRS . config nonlin est expressions operations traits utility time solver solver/details solver/itl io io/detail) foreach (SUBDIR ${INSTALL_SUBDIRS}) file(GLOB HEADERS "${SOURCE_DIR}/${SUBDIR}/*.h*") install(FILES ${HEADERS} DESTINATION include/amdis/${SUBDIR}/) endforeach () file(GLOB CMAKE_MACROS "${BASE_DIR}/cmake/enable_*.cmake") install(FILES ${CMAKE_MACROS} DESTINATION share/amdis/) install(FILES ${BASE_DIR}/cmake3/parse_zoltan_makefile.cmake DESTINATION share/amdis/) install(DIRECTORY ${BASE_DIR}/lib/mtl4/ DESTINATION include/amdis/mtl4/ FILES_MATCHING PATTERN "*.hpp" PATTERN ".svn" EXCLUDE PATTERN ".svn/*" EXCLUDE PATTERN "mtl4/libs" EXCLUDE PATTERN "mtl4/extern" EXCLUDE) set_target_properties(amdis PROPERTIES OUTPUT_NAME amdis${POSTFIX} DEBUG_OUTPUT_NAME amdis${POSTFIX}d) install(TARGETS amdis DESTINATION lib/amdis/ ) # generate configuration file: # ---------------------------- # global configuration configure_file(${BASE_DIR}/cmake/AMDISConfig.cmake.in ${AMDiS_BINARY_DIR}/AMDISConfig.cmake @ONLY ) # component configuration configure_file(${BASE_DIR}/cmake/AMDIS.cmake.in ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake @ONLY ) install(FILES ${AMDiS_BINARY_DIR}/AMDISConfig.cmake DESTINATION share/amdis/) install(FILES ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake DESTINATION share/amdis/) install(FILES ${BASE_DIR}/cmake3/AMDISUse.cmake DESTINATION share/amdis/)