Salome HOME
unlink needs this include
[modules/kernel.git] / CMakeLists.txt
1 # Copyright (C) 2012  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19 PROJECT(SALOME_KERNEL)
20
21 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
22
23 IF(COMMAND cmake_policy)
24   cmake_policy(SET CMP0003 NEW)
25 ENDIF(COMMAND cmake_policy)
26
27 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
28
29 IF(APPLE)
30   SET(CMAKE_C_COMPILER gcc)
31   SET(CMAKE_CXX_COMPILER g++)
32   # because default is clang(llvm) with mountain lion at least
33 ENDIF(APPLE)
34
35
36 # Temporary step instead Find Calcium.cmake
37 SET(CALCIUM_IDL_INT_F77 long)
38 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
39 SET(LONG_OR_INT int)
40
41 # Temporary definitions
42 SET(DOXYGEN_IS_OK 0)
43 IF(WINDOWS)
44  SET(CPPUNIT_IS_OK 0)
45 ENDIF(WINDOWS)
46 SET(WITH_LOCAL 1)
47 SET(WITH_BATCH 1)
48
49 ENABLE_TESTING()
50 SET(VERSION "7.0.0")
51 SET(VERSION_DEV "1")
52
53 SET(BUILD_SHARED_LIBS true)
54
55 #Defining all options first
56 option(SALOME_USE_MPI "Use MPI containers" OFF)
57 option(SALOME_USE_CORBA "Use distribute application with components" ON)
58 option(SALOME_USE_DOC "Generate documentation" ON)
59 option(SALOME_USE_TEST "Generate test" OFF)
60 option(SALOME_USE_LIBBATCH "Generate Launcher" OFF)
61
62
63 # Threads
64 SET(CMAKE_THREAD_PREFER_PTHREAD)
65 find_package(Threads REQUIRED)
66
67
68 # Python
69 set(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR} CACHE PATH "Path to Python directory")
70 if(EXISTS ${PYTHON_ROOT_DIR})
71   set(CMAKE_INCLUDE_PATH ${PYTHON_ROOT_DIR}/include)
72   set(CMAKE_LIBRARY_PATH ${PYTHON_ROOT_DIR}/lib)
73   set(CMAKE_PROGRAM_PATH ${PYTHON_ROOT_DIR}/bin)
74 endif(EXISTS ${PYTHON_ROOT_DIR})
75 find_package(PythonInterp REQUIRED)
76 # Set PythonLibs_FIND_VERSION To avoid problems when several versions are in the system
77 SET(PythonLibs_FIND_VERSION ${PYTHON_VERSION_STRING})
78 find_package(PythonLibs REQUIRED)
79 set(PYLOGLEVEL WARNING)
80
81 # Swig
82 set(SWIG_ROOT_DIR $ENV{SWIG_ROOT_DIR} CACHE PATH "Path to Swig directory")
83 if(EXISTS ${SWIG_ROOT_DIR})
84   set(CMAKE_INCLUDE_PATH ${SWIG_ROOT_DIR}/include)
85   set(CMAKE_LIBRARY_PATH ${SWIG_ROOT_DIR}/lib)
86   set(CMAKE_PROGRAM_PATH ${SWIG_ROOT_DIR}/bin)
87 endif(EXISTS ${SWIG_ROOT_DIR})
88 find_package(SWIG REQUIRED)
89
90 # LIBXML2
91 set(LIBXML2_ROOT_DIR $ENV{LIBXML2_ROOT_DIR} CACHE PATH "Path to LibXml2 directory")
92 if(EXISTS ${LIBXML2_ROOT_DIR})
93   set(CMAKE_INCLUDE_PATH ${LIBXML2_ROOT_DIR}/include)
94   set(CMAKE_LIBRARY_PATH ${LIBXML2_ROOT_DIR}/lib)
95   set(CMAKE_PROGRAM_PATH ${LIBXML2_ROOT_DIR}/bin)
96 endif(EXISTS ${LIBXML2_ROOT_DIR})
97 find_package(LibXml2 REQUIRED)
98 if(${LIBXML2_VERSION_STRING} VERSION_LESS "2.7.8")
99   message(FATAL_ERROR "LIbXml2 required version is 2.7.8, version is ${LIBXML2_VERSION_STRING} , please defined LIBXML2_ROOT_DIR as environment or cmake variable")
100 endif(${LIBXML2_VERSION_STRING} VERSION_LESS "2.7.8")
101
102 # HDF5
103 set(HDF5_ROOT_DIR $ENV{HDF5_ROOT_DIR} CACHE PATH "Path to Hdf5 directory")
104 if(EXISTS ${HDF5_ROOT_DIR})
105   set(CMAKE_INCLUDE_PATH ${HDF5_ROOT_DIR}/include)
106   set(CMAKE_LIBRARY_PATH ${HDF5_ROOT_DIR}/lib)
107   set(CMAKE_PROGRAM_PATH ${HDF5_ROOT_DIR}/bin)
108 endif(EXISTS ${HDF5_ROOT_DIR})
109 find_package(HDF5 COMPONENTS C REQUIRED)
110 if (HDF5_FOUND)
111   set(HDF5_DEFINITIONS "-DH5_USE_16_API ${HDF5_DEFINITIONS}" )
112   if(WINDOWS)
113     set(HDF5_DEFINITIONS "-D_HDF5USEDLL_ ${HDF5_DEFINITIONS}" )
114   endif(WINDOWS)
115 endif(HDF5_FOUND)
116
117 # MPI
118 if(SALOME_USE_MPI OR HDF5_IS_PARALLEL)
119   set(MPI_ROOT_DIR $ENV{MPI_ROOT_DIR} CACHE PATH "Path to Mpi directory")
120   if(EXISTS ${MPI_ROOT_DIR})
121     set(CMAKE_INCLUDE_PATH ${MPI_ROOT_DIR}/include)
122     set(CMAKE_LIBRARY_PATH ${MPI_ROOT_DIR}/lib)
123     set(CMAKE_PROGRAM_PATH ${MPI_ROOT_DIR}/bin)
124   endif(EXISTS ${MPI_ROOT_DIR})
125   find_package(MPI REQUIRED)
126   if(HDF5_IS_PARALLEL)
127     set(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} ${MPI_C_INCLUDE_PATH} ${MPI_CXX_INCLUDE_PATH} )
128     set(HDF5_LIBRARIES ${HDF5_LIBRARIES} ${MPI_C_LIBRARIES} ${MPI_CXX_LIBRARIES})
129   endif(HDF5_IS_PARALLEL)
130 endif(SALOME_USE_MPI OR HDF5_IS_PARALLEL)
131
132 # Omniorb
133 if(SALOME_USE_CORBA)
134   INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
135 endif(SALOME_USE_CORBA)
136
137 # Boost
138 set(Boost_ROOT_DIR $ENV{Boost_ROOT_DIR} CACHE PATH "Path to Boost directory")
139 if(EXISTS ${Boost_ROOT_DIR})
140   set(CMAKE_INCLUDE_PATH ${Boost_ROOT_DIR}/include)
141   set(CMAKE_LIBRARY_PATH ${Boost_ROOT_DIR}/lib)
142 endif(EXISTS ${Boost_ROOT_DIR})
143 set(Boost_USE_STATIC_LIBS       OFF)
144 set(Boost_USE_MULTITHREADED      ON)
145 set(Boost_USE_STATIC_RUNTIME    OFF)
146 #find_package( Boost 1.49 REQUIRED  )#COMPONENTS thread date_time signals filesystem system)
147 find_package( Boost REQUIRED  )#COMPONENTS thread date_time signals filesystem system)
148 if(WINDOWS)
149   set(BOOST_DEFINITIONS -DBOOST_DISABLE_ASSERTS)
150 endif(WINDOWS)
151
152 # CPPUNIT
153 if(SALOME_USE_TEST)
154   set(CPPUNIT_ROOT_DIR $ENV{CPPUNIT_ROOT_DIR} CACHE PATH "Path to Cppunit directory")
155   if(EXISTS ${CPPUNIT_ROOT_DIR})
156     set(CMAKE_INCLUDE_PATH ${CPPUNIT_ROOT_DIR}/include)
157     set(CMAKE_LIBRARY_PATH ${CPPUNIT_ROOT_DIR}/lib)
158     set(CMAKE_PROGRAM_PATH ${CPPUNIT_ROOT_DIR}/bin)
159   endif(EXISTS ${CPPUNIT_ROOT_DIR})
160   INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
161 endif(SALOME_USE_TEST)
162
163 # Doxygen and graphviz
164 if(SALOME_USE_DOC)
165   set(DOXYGEN_ROOT_DIR $ENV{DOXYGEN_ROOT_DIR} CACHE PATH "Path to Doxygen directory")
166   set(GRAPHVIZ_ROOT_DIR $ENV{GRAPHVIZ_ROOT_DIR} CACHE PATH "Path to Graphviz directory")
167   if(EXISTS ${DOXYGEN_ROOT_DIR})
168     set(CMAKE_PROGRAM_PATH ${DOXYGEN_ROOT_DIR}/bin)
169   endif(EXISTS ${DOXYGEN_ROOT_DIR})
170   if(EXISTS ${GRAPHVIZ_ROOT_DIR})
171     set(CMAKE_PROGRAM_PATH ${GRAPHVIZ_ROOT_DIR}/bin)
172     if(EXISTS ${DOXYGEN_ROOT_DIR})
173       set(CMAKE_PROGRAM_PATH ${GRAPHVIZ_ROOT_DIR}/bin ${DOXYGEN_ROOT_DIR}/bin)
174     endif(EXISTS ${DOXYGEN_ROOT_DIR})
175   endif(EXISTS ${GRAPHVIZ_ROOT_DIR})
176   find_package(Doxygen)
177 endif(SALOME_USE_DOC)
178
179 # Libbatch
180 if(SALOME_USE_LIBBATCH)
181   INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
182 endif(SALOME_USE_LIBBATCH)
183
184 # Sphinx
185 if(SALOME_USE_DOC)
186   set(SPHINX_ROOT_DIR $ENV{SPHINX_ROOT_DIR} CACHE PATH "Path to Sphinx directory")
187   if(EXISTS ${SPHINX_ROOT_DIR})
188     set(CMAKE_PROGRAM_PATH ${SPHINX_ROOT_DIR}/bin)
189   endif(EXISTS ${SPHINX_ROOT_DIR})
190   INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindSPHINX.cmake)
191 endif(SALOME_USE_DOC)
192
193 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/SalomeMacros.cmake)
194
195 SET(CALCIUM_IDL_INT_F77 long)
196 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
197 SET(LONG_OR_INT int)
198
199
200 SET(KERNEL_salomebin_BINS bin/salome)
201
202 SET(KERNEL_salomelib_LIBS lib/salome)
203
204 SET(KERNEL_salomeidl_IDLS idl/salome)
205
206 SET(KERNEL_salomeinclude_HEADERS include/salome)
207
208 SET(KERNEL_salomeres_DATA share/salome/resources/kernel)
209
210 SET(KERNEL_salomeres_SCRIPTS share/salome/resources/kernel)
211
212 SET(KERNEL_salomescript_SCRIPTS bin/salome)
213
214 SET(KERNEL_salomescript_DATA bin/salome)
215
216 SET(KERNEL_salomescript_PYTHON bin/salome)
217
218 SET(KERNEL_appliskel_SCRIPTS bin/salome/appliskel)
219
220 SET(KERNEL_appliskel_PYTHON bin/salome/appliskel)
221
222 SET(KERNEL_pythondir lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
223
224 SET(KERNEL_salomepythondir ${KERNEL_pythondir}/salome)
225
226 SET(KERNEL_sharedpkgpython_PYTHON ${KERNEL_salomepythondir}/shared_modules)
227
228 SET(KERNEL_salomeadmcmake salome_adm/cmake_files)
229
230 IF(SALOME_USE_CORBA)
231   ADD_SUBDIRECTORY(idl)
232 ENDIF(SALOME_USE_CORBA)
233
234 ADD_SUBDIRECTORY(src)
235 ADD_SUBDIRECTORY(resources)
236
237 IF(NOT WITHONLYLAUNCHER)
238   ADD_SUBDIRECTORY(bin)
239   ADD_SUBDIRECTORY(salome_adm)
240 ENDIF(NOT WITHONLYLAUNCHER)
241
242 SET(input ${CMAKE_CURRENT_SOURCE_DIR}/KERNEL_version.h.in)
243 SET(output ${CMAKE_CURRENT_BINARY_DIR}/KERNEL_version.h)
244 MESSAGE(STATUS "Creation of ${output}")
245 CONFIGURE_FILE(${input} ${output} @ONLY)
246 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/KERNEL_version.h DESTINATION ${KERNEL_salomeinclude_HEADERS})
247
248 IF(SALOME_USE_DOC)
249   ADD_SUBDIRECTORY(doc)
250 ENDIF(SALOME_USE_DOC)