Salome HOME
Do not use option() in cmake sub project
[tools/solverlab.git] / CoreFlows / CMakeLists.txt
1 cmake_minimum_required (VERSION 3.1)
2 set(CMAKE_CXX_STANDARD 11)
3 set(CMAKE_CXX_STANDARD_REQUIRED ON)
4
5 # Project name
6 project (CoreFlows C CXX)
7 set (COREFLOWS_VERSION_MAJOR 9)
8 set (COREFLOWS_VERSION_MINOR 8)
9
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")
16
17 # Debug mode activates testing and profiling --------------------------------------------------------------#
18 if   (CMAKE_BUILD_TYPE STREQUAL Debug)                                                                     #
19                                                                                                            #
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")                              #
23                                                                                                            #
24 endif(CMAKE_BUILD_TYPE STREQUAL Debug)                                                                                             #
25                                                                                                            #
26 #----------------------------------------------------------------------------------------------------------#
27
28 # Swig interface -------------------------------------------------------------------------------------------#
29                                                                                                             #
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)                                                                                                    #
35                                                                                                             #
36 #-----------------------------------------------------------------------------------------------------------#
37
38 # Base directories
39 set (CoreFlows_MODELS ${CoreFlows_SOURCE_DIR}/Models ) 
40 set (CoreFlows_EXAMPLES ${CoreFlows_SOURCE_DIR}/examples)
41
42 set( CoreFlows_INCLUDES 
43   ${CDMATH_INCLUDES}                                                                                        #
44   ${PETSC_INCLUDES}                                                                                         #
45   ${CoreFlows_MODELS}/inc                                                                                           #    
46   ${CoreFlows_MODELS}/inc/EOS                                                                                       #    
47   )                                                                                                         #
48
49 add_subdirectory (${CoreFlows_MODELS})
50
51 # Tests
52 if   (COREFLOWS_WITH_TESTS)
53   enable_testing ()
54   add_subdirectory (${CoreFlows_EXAMPLES})#contains c++ and python tests
55 endif(COREFLOWS_WITH_TESTS)
56
57 if   (COREFLOWS_WITH_PYTHON)                                                                                  #
58    add_subdirectory (${CoreFlows_SWIG_DIR})                                                                 #
59 endif(COREFLOWS_WITH_PYTHON)                                                                                                    #
60
61 # Documentation --------------------------------------------------------------------------------------------#
62                                                                                                             #
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}                                                                              #
70       )                                                                                                     #
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)                                                                                                    #
74                                                                                                             #
75 # ------------- --------------------------------------------------------------------------------------------#
76
77 # Standalone graphic interface-----------------------------------------------------------------------------------------#
78                                                                                                             #
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)                                                                                                    #
83                                                                                                             #
84 # ------------- --------------------------------------------------------------------------------------------#
85
86 #--------------------- COMPILATION MAIN --------------------------------------------------------------------#
87                                                                                                             #
88 INCLUDE_DIRECTORIES(                                                                                        #
89   ${CoreFlows_INCLUDES}                                                                                     #
90   ${PETSC_INCLUDES}
91   ${SLEPC_INCLUDES}
92   )                                                                                                         #
93                                                                                                             #
94 SET(MAIN_SOURCES                                                                                            #
95   mainCoreFlows.cxx                                                                                                 #
96   )                                                                                                         #
97
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)                                                   #
102                                                                                                             #
103 configure_file(
104     ${PROJECT_SOURCE_DIR}/env_CoreFlows.sh
105     @ONLY
106 )
107                                                                                                             
108                                                                                                             
109 # ------------- --------------------------------------------------------------------------------------------#
110
111
112 # Packaging
113 if   (COREFLOWS_WITH_PACKAGE)
114   include (${CoreFlows_SOURCE_DIR}/CPackLists.txt)
115 endif(COREFLOWS_WITH_PACKAGE)