1 # Copyright (C) 2012 CEA/DEN, EDF R&D, OPEN CASCADE
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.
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.
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
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 PROJECT(SALOME_KERNEL)
21 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
23 IF(COMMAND cmake_policy)
24 cmake_policy(SET CMP0003 NEW)
25 ENDIF(COMMAND cmake_policy)
27 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
30 SET(CMAKE_C_COMPILER gcc)
31 SET(CMAKE_CXX_COMPILER g++)
32 # because default is clang(llvm) with mountain lion at least
36 # Temporary step instead Find Calcium.cmake
37 SET(CALCIUM_IDL_INT_F77 long)
38 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
41 # Temporary definitions
53 SET(BUILD_SHARED_LIBS true)
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)
64 SET(CMAKE_THREAD_PREFER_PTHREAD)
65 find_package(Threads REQUIRED)
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)
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)
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")
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)
111 set(HDF5_DEFINITIONS "-DH5_USE_16_API ${HDF5_DEFINITIONS}" )
113 set(HDF5_DEFINITIONS "-D_HDF5USEDLL_ ${HDF5_DEFINITIONS}" )
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)
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)
134 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
135 endif(SALOME_USE_CORBA)
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)
149 set(BOOST_DEFINITIONS -DBOOST_DISABLE_ASSERTS)
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)
163 # Doxygen and graphviz
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)
180 if(SALOME_USE_LIBBATCH)
181 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
182 endif(SALOME_USE_LIBBATCH)
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)
193 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/SalomeMacros.cmake)
195 SET(CALCIUM_IDL_INT_F77 long)
196 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
200 SET(KERNEL_salomebin_BINS bin/salome)
202 SET(KERNEL_salomelib_LIBS lib/salome)
204 SET(KERNEL_salomeidl_IDLS idl/salome)
206 SET(KERNEL_salomeinclude_HEADERS include/salome)
208 SET(KERNEL_salomeres_DATA share/salome/resources/kernel)
210 SET(KERNEL_salomeres_SCRIPTS share/salome/resources/kernel)
212 SET(KERNEL_salomescript_SCRIPTS bin/salome)
214 SET(KERNEL_salomescript_DATA bin/salome)
216 SET(KERNEL_salomescript_PYTHON bin/salome)
218 SET(KERNEL_appliskel_SCRIPTS bin/salome/appliskel)
220 SET(KERNEL_appliskel_PYTHON bin/salome/appliskel)
222 SET(KERNEL_pythondir lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
224 SET(KERNEL_salomepythondir ${KERNEL_pythondir}/salome)
226 SET(KERNEL_sharedpkgpython_PYTHON ${KERNEL_salomepythondir}/shared_modules)
228 SET(KERNEL_salomeadmcmake salome_adm/cmake_files)
231 ADD_SUBDIRECTORY(idl)
232 ENDIF(SALOME_USE_CORBA)
234 ADD_SUBDIRECTORY(src)
235 ADD_SUBDIRECTORY(resources)
237 IF(NOT WITHONLYLAUNCHER)
238 ADD_SUBDIRECTORY(bin)
239 ADD_SUBDIRECTORY(salome_adm)
240 ENDIF(NOT WITHONLYLAUNCHER)
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})
249 ADD_SUBDIRECTORY(doc)
250 ENDIF(SALOME_USE_DOC)