1 cmake_minimum_required (VERSION 3.1)
2 set(CMAKE_CXX_STANDARD 11)
3 set(CMAKE_CXX_STANDARD_REQUIRED ON)
6 project (CoreFlows C CXX)
7 set (COREFLOWS_VERSION_MAJOR 9)
8 set (COREFLOWS_VERSION_MINOR 8)
10 # CDMATH project options (deprecated, see SOLVERLAB options)
11 set (COREFLOWS_WITH_DOCUMENTATION ON CACHE STRING "Generate documentation for CoreFlows use")
12 set (COREFLOWS_WITH_PYTHON ON CACHE STRING "Compile Python interface for COREFLOWS")
13 set (COREFLOWS_WITH_GUI OFF CACHE STRING "Compile Graphic user Interface for COREFLOWS")
14 set (COREFLOWS_WITH_PACKAGE OFF CACHE STRING "Generate RPM, Debian and tarball packages")
15 set (COREFLOWS_WITH_TESTS ON CACHE STRING "Compile with testing and examples")
17 # Debug mode activates testing and profiling --------------------------------------------------------------#
18 if (CMAKE_BUILD_TYPE STREQUAL Debug) #
20 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg --coverage") #
21 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg --coverage") #
22 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg --coverage") #
24 endif(CMAKE_BUILD_TYPE STREQUAL Debug) #
26 #----------------------------------------------------------------------------------------------------------#
28 # Swig interface -------------------------------------------------------------------------------------------#
30 if (COREFLOWS_WITH_PYTHON) #
31 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, python-dev, python-numpy, swig") #
32 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, python-devel, numpy, swig") #
33 set (CoreFlows_SWIG_DIR ${CoreFlows_SOURCE_DIR}/swig) #
34 endif(COREFLOWS_WITH_PYTHON) #
36 #-----------------------------------------------------------------------------------------------------------#
39 set (CoreFlows_MODELS ${CoreFlows_SOURCE_DIR}/Models )
40 set (CoreFlows_EXAMPLES ${CoreFlows_SOURCE_DIR}/examples)
42 set( CoreFlows_INCLUDES
45 ${CoreFlows_MODELS}/inc #
46 ${CoreFlows_MODELS}/inc/EOS #
49 add_subdirectory (${CoreFlows_MODELS})
52 if (COREFLOWS_WITH_TESTS)
54 add_subdirectory (${CoreFlows_EXAMPLES})#contains c++ and python tests
55 endif(COREFLOWS_WITH_TESTS)
57 if (COREFLOWS_WITH_PYTHON) #
58 add_subdirectory (${CoreFlows_SWIG_DIR}) #
59 endif(COREFLOWS_WITH_PYTHON) #
61 # Documentation --------------------------------------------------------------------------------------------#
63 if (COREFLOWS_WITH_DOCUMENTATION) #
64 configure_file (Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE) #
65 add_custom_target (docCoreFlows COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile SOURCES ${PROJECT_BINARY_DIR}/Doxyfile) #
66 FILE(GLOB_RECURSE CoreFlows_Documentation ${CoreFlows_SOURCE_DIR}/Documentation *.dox) #
67 SET(Documentation_SRC #
68 ${PROJECT_BINARY_DIR}/Doxyfile #
69 ${CoreFlows_Documentation} #
71 install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION share/doc/coreflows-dev-doc OPTIONAL) #
72 INSTALL(FILES ${CoreFlows_SOURCE_DIR}/Documentation/CoreFlows.pdf DESTINATION share/doc OPTIONAL) #
73 endif(COREFLOWS_WITH_DOCUMENTATION) #
75 # ------------- --------------------------------------------------------------------------------------------#
77 # Standalone graphic interface-----------------------------------------------------------------------------------------#
79 if (COREFLOWS_WITH_GUI) #
80 set (CoreFlows_GUI_DIR ${CoreFlows_SOURCE_DIR}/gui) #
81 add_subdirectory(${CoreFlows_GUI_DIR})
82 endif(COREFLOWS_WITH_GUI) #
84 # ------------- --------------------------------------------------------------------------------------------#
86 #--------------------- COMPILATION MAIN --------------------------------------------------------------------#
88 INCLUDE_DIRECTORIES( #
89 ${CoreFlows_INCLUDES} #
98 ADD_EXECUTABLE(CoreFlowsMainExe ${MAIN_SOURCES}) #
99 SET_TARGET_PROPERTIES(CoreFlowsMainExe PROPERTIES COMPILE_FLAGS "") #
100 TARGET_LINK_LIBRARIES(CoreFlowsMainExe CoreFlowsLibs ${CDMATH_LIBRARIES} ${PETSC_LIBRARIES} ${SLEPC_LIBRARIES} ) #
101 INSTALL(TARGETS CoreFlowsMainExe DESTINATION bin) #
104 ${PROJECT_SOURCE_DIR}/env_CoreFlows.sh
109 # ------------- --------------------------------------------------------------------------------------------#
113 if (COREFLOWS_WITH_PACKAGE)
114 include (${CoreFlows_SOURCE_DIR}/CPackLists.txt)
115 endif(COREFLOWS_WITH_PACKAGE)