Salome HOME
CMake: generating a fatal error if the wrapping Python script cannot run
[modules/paravis.git] / CMakeLists.txt
1 # Copyright (C) 2010-2013  CEA/DEN, EDF R&D
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
20 PROJECT(PARAVIS C CXX)
21
22 IF(WINDOWS)
23   STRING( REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} )
24   SET( CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replacementFlags}" )
25 ENDIF(WINDOWS)
26
27 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7 FATAL_ERROR)
28 IF(COMMAND cmake_policy)
29   cmake_policy(SET CMP0003 NEW)
30 ENDIF(COMMAND cmake_policy)            
31
32 SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR} CACHE PATH "KERNEL_ROOT_DIR")
33 SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "GUI_ROOT_DIR")
34 SET(MODULE PARAVIS)
35
36 SET(CMAKE_MODULE_PATH 
37     "${KERNEL_ROOT_DIR}/salome_adm/cmake_files" 
38     "${GUI_ROOT_DIR}/adm_local/cmake_files"
39     "${PROJECT_SOURCE_DIR}/adm_local/cmake_files")
40
41 INCLUDE(SalomeMacros)
42 INCLUDE(SalomeSetupPlatform)
43
44 FIND_PACKAGE(SalomeKERNEL REQUIRED)
45
46 # From KERNEL:
47 FIND_PACKAGE(SalomePython REQUIRED)
48 FIND_PACKAGE(SalomeOmniORB REQUIRED)
49 FIND_PACKAGE(SalomeOmniORBPy REQUIRED)
50 SET(OMNIORB_IDL_PYTHON ${OMNIORB_IDL_COMPILER}) 
51 FIND_PACKAGE(SalomePThread REQUIRED)
52 FIND_PACKAGE(SalomeHDF5 REQUIRED)
53 FIND_PACKAGE(SalomeBoost REQUIRED)
54 FIND_PACKAGE(SalomeLibXml2 REQUIRED)
55 FIND_PACKAGE(SalomeSWIG REQUIRED)
56 FIND_PACKAGE(SalomeCppUnit REQUIRED)
57 FIND_PACKAGE(SalomeDoxygen REQUIRED)
58
59 # Specific to ParaVis:
60 FIND_PACKAGE(SalomeParaView)
61
62 # GUI has to be loaded AFTER ParaView: the ParaView config doesn't mix
63 # well with the VTK one (GUI loads VTK):
64 FIND_PACKAGE(SalomeGUI REQUIRED)
65
66 # From GUI:
67 FIND_PACKAGE(SalomeCAS REQUIRED)
68 FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui QtXml QtHelp)
69 message("QT_INCLUDES ${QT_INCLUDES}")
70 SET(_new_inc)
71 FOREACH(_inc ${QT_INCLUDES})
72   SET(_new_inc "${_new_inc} -I${_inc}")
73 ENDFOREACH()
74 SET(QT_INCLUDES "${_new_inc}")
75 message("QT_INCLUDES ${QT_INCLUDES}")
76
77 FIND_PACKAGE(SalomeOpenGL REQUIRED)
78 FIND_PACKAGE(SalomeVTK REQUIRED)
79 FIND_PACKAGE(SalomeQwt REQUIRED)
80 FIND_PACKAGE(SalomeSIP REQUIRED)
81 FIND_PACKAGE(SalomePyQt4 REQUIRED)
82
83 SET(VERSION_MAJOR 7)
84 SET(VERSION_MINOR 2)
85 SET(VERSION_MAINTENANCE 0)
86 SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MAINTENANCE}")
87 SET(XVERSION 0x0${VERSION_MAJOR}0${VERSION_MINOR}0${VERSION_MAINTENANCE})
88 SET(VERSION_DEV 0)
89
90 SET(BUILD_PLUGINS 1)
91
92 #SET(VISU_ROOT_DIR $ENV{VISU_ROOT_DIR} CACHE PATH "VISU_ROOT_DIR")
93 #IF(EXISTS ${VISU_ROOT_DIR}/adm_local/cmake_files/FindVISU.cmake)
94   #INCLUDE(${VISU_ROOT_DIR}/adm_local/cmake_files/FindVISU.cmake)
95   #SET(WITH_VISU 1)
96 #ENDIF(EXISTS ${VISU_ROOT_DIR}/adm_local/cmake_files/FindVISU.cmake)
97
98 SET(MED_ROOT_DIR $ENV{MED_ROOT_DIR} CACHE PATH "MED_ROOT_DIR")
99 INCLUDE(${MED_ROOT_DIR}/adm_local/cmake_files/FindMED.cmake)
100
101 # TODO: the below requires ParaView in the PYTHONPATH ... not so nice:
102 MESSAGE(STATUS "Generating wrapped class list (??) ...")
103 LIST(GET PARAVIEW_INCLUDE_DIRS 0 PARAVIEW_INCLUDE_DIR0)
104 EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/getwrapclasses.py ${PARAVIEW_INCLUDE_DIR0}
105     RESULT_VARIABLE _res)
106 IF(NOT _res EQUAL 0)
107   MESSAGE(FATAL_ERROR "Unable to run the Python script retrieving the list of VTK classes.")
108 ENDIF()
109
110 SET(SUBDIRS
111   idl
112   adm_local
113   resources
114   src
115   doc
116   bin
117   )
118
119 SET(DISTCLEANFILES
120   wrapfiles.txt
121   )
122
123 INCLUDE(wrapfiles.cmake)
124
125 SET(input ${CMAKE_CURRENT_SOURCE_DIR}/PARAVIS_version.h.in)
126 SET(output ${CMAKE_CURRENT_BINARY_DIR}/PARAVIS_version.h)
127
128 MESSAGE(STATUS "Creation of ${output}")
129 CONFIGURE_FILE(${input} ${output})
130
131 FOREACH(dir ${SUBDIRS})
132   ADD_SUBDIRECTORY(${dir})
133 ENDFOREACH(dir ${SUBDIRS})
134
135 # Reset CMAKE_CONFIGURATION_TYPES to the good value defined by CMAKE_BUILD_TYPE
136 IF(CMAKE_BUILD_TYPE)
137   IF(WINDOWS)
138     MARK_AS_ADVANCED(CLEAR CMAKE_CONFIGURATION_TYPES)
139     SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "compilation types" FORCE)
140   ENDIF(WINDOWS)
141 ENDIF(CMAKE_BUILD_TYPE)
142
143 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/PARAVIS_version.h DESTINATION include/salome)
144
145 # Configure Testing
146 SET(PARAVIS_TEST_OUTPUT_DIR /tmp/pic CACHE PATH "Directory for saving test pictures.")
147 OPTION(BUILD_TESTING "Build ParaVis Testing" ON)
148 IF(BUILD_TESTING)
149    SET(PARAVIS_TEST_DIR ${ParaVis_BINARY_DIR}/Test/Temporary)
150    MAKE_DIRECTORY(${PARAVIS_TEST_DIR})
151    ENABLE_TESTING()
152    INCLUDE (CTest)
153    ADD_SUBDIRECTORY(test)
154 ENDIF(BUILD_TESTING)