Salome HOME
45eea7d1d1f9d5321e2487ffdc1d1c1d8252ae67
[modules/paravis.git] / src / PVGUI / 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 SET(VERSION_INFO ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MAINTENANCE})
21 SET(SOVERSION_INFO ${VERSION_MAJOR}.${VERSION_MINOR})
22
23 ADD_DEFINITIONS(-DHAVE_SALOME_CONFIG ${CAS_DEFINITIONS})
24
25 INCLUDE_DIRECTORIES(${OMNIORB_INCLUDE_DIR} 
26     ${KERNEL_ROOT_DIR}/include/salome
27     ${GUI_ROOT_DIR}/include/salome 
28     ${CMAKE_CURRENT_SOURCE_DIR}/../ParaView 
29     ${PROJECT_BINARY_DIR}/idl 
30     ${PROJECT_BINARY_DIR} 
31     ${CMAKE_CURRENT_SOURCE_DIR}
32     ${CAS_INCLUDE_DIRS} 
33     ${Boost_INCLUDE_DIRS})
34
35 INCLUDE(${QT_USE_FILE})
36
37 #IF(WITH_VISU)
38 #  SET(VISU_PARAVIS_LIBS
39 #    ${SalomeIDLVISU}
40 #    )
41 #  
42 #  ADD_DEFINITIONS(-DWITH_VISU)
43 #ENDIF(WITH_VISU)
44
45 #Executable
46 SET(bin_PROGRAMS
47   vtkWrapIDL_HH
48   vtkWrapIDL_CC
49   )
50
51 SET(vtkWrapIDL_HH_CPPFLAGS
52   -DIDL_I_HH
53   )
54
55 SET(vtkWrapIDL_CC_CPPFLAGS
56   -DIDL_I_CC
57   )
58 #VTN TODO: vtkParseData supports two types of structures for wrapping.
59 #We use old structures currently, but is is not influent for results of wrapping.
60 #It may be necessary to port vtkWrapIDL to new approach in future.
61 #IF(VTK_LEGACY_REMOVE)
62 #  ADD_DEFINITIONS(-DVTK_PARSE_LEGACY_REMOVE)
63 #ENDIF()
64
65 INCLUDE(wrap.cmake)
66
67 INCLUDE(${ParaView_CMAKE_DIR}/vtkWrapClientServer.cmake)
68 VTK_WRAP_ClientServer(vtkEDFCutterCS vtkEDFCutter_SRCS ${GUI_ROOT_DIR}/include/salome/vtkEDFCutter.h)
69
70 # Library sources
71 SET(dist_libPARAVIS_la_SOURCES
72   PVGUI_Module.h
73   PVGUI_Module.cxx
74   PVGUI_Module_actions.cxx
75   PVGUI_Module_widgets.cxx
76   PVGUI_ViewManager.h
77   PVGUI_ViewManager.cxx
78   PVGUI_ViewModel.h
79   PVGUI_ViewModel.cxx
80   PVGUI_ViewWindow.h
81   PVGUI_ViewWindow.cxx
82   PVGUI_OutputWindowAdapter.h
83   PVGUI_OutputWindowAdapter.cxx
84   PVGUI_Tools.h
85   PVGUI_Tools.cxx
86   PVGUI_ParaViewSettingsPane.h
87   PVGUI_ParaViewSettingsPane.cxx
88   PVGUI_MatplotlibMathTextUtilities.h
89   PVGUI_MatplotlibMathTextUtilities.cxx
90   PV_I.h
91   PARAVIS_Gen_i.hh
92   PV_Events.h
93   PV_Tools.h
94   PARAVIS_Gen_i.cc
95   PV_Tools.cxx
96   ${WRAP_IDL_I_HH}
97   ${WRAP_IDL_I_CC}
98   PARAVIS_CreateClass.cxx
99   ${vtkEDFCutter_SRCS}
100   )
101
102 # Check ParaView documentation file existence
103 # if it exists add it to the resources (compile into binary form)
104 # otherwise print warning message
105 SET(PV_DOC_FILE ${VTK_INSTALL_PREFIX}/share/doc/paraview-${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}/paraview.qch)
106 IF (EXISTS ${PV_DOC_FILE})
107   SET(RC_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/PVGUI.qrc.in)
108   SET(RC_GENERATED ${CMAKE_CURRENT_BINARY_DIR}/PVGUI.qrc)
109   MESSAGE(STATUS "Creation of ${RC_GENERATED}")
110   CONFIGURE_FILE(${RC_SOURCE} ${RC_GENERATED})
111   QT4_ADD_RESOURCES(RCS_SOURCES ${RC_GENERATED})
112   SET(dist_libPARAVIS_la_SOURCES ${dist_libPARAVIS_la_SOURCES} ${RCS_SOURCES})
113   ADD_DEFINITIONS(-DHAS_PV_DOC)
114 ELSE (EXISTS ${PV_DOC_FILE})
115   MESSAGE(WARNING "Help file for ParaView has not been found! ParaView documentation will not be available.")
116 ENDIF (EXISTS ${PV_DOC_FILE})
117
118 # MOC pre-processing
119 SET(MOC_FILES
120   PVGUI_Module_moc.cxx
121   PVGUI_ViewManager_moc.cxx
122   PVGUI_ViewModel_moc.cxx
123   PVGUI_ViewWindow_moc.cxx
124   PVGUI_ParaViewSettingsPane_moc.cxx
125   )
126
127 # additionnal compilation flags
128 # Note that ParaView uses HDF5
129 SET(libPARAVIS_la_CPPFLAGS
130   -ftemplate-depth-32
131   ${QT_INCLUDES}
132   ${QT_ASSISTANT_INCLUDES}
133   ${PYTHON_INCLUDES}
134   ${CAS_CPPFLAGS}
135   ${CAS_CXXFLAGS}
136   ${KERNEL_CXXFLAGS}
137   ${OMNIORB_DEFINITIONS}
138   ${BOOST_CPPFLAGS}
139   ${GUI_CXXFLAGS}
140   ${MED_CXXFLAGS}
141   ${VISU_CXXFLAGS}
142   ${VISU_PARAVIS_DEFINES}
143   )
144
145 # remove deprecation warnings from Paraview
146 IF(WINDOWS)
147 ELSE(WINDOWS)
148   SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
149 ENDIF(WINDOWS)
150
151 # resources files
152 SET(nodist_salomeres_DATA
153   PARAVIS_images.qm
154   PARAVIS_msg_en.qm
155   PARAVIS_msg_fr.qm
156   )
157
158 SET(srcs)
159 FOREACH(src ${dist_libPARAVIS_la_SOURCES})
160   SET(srcs ${srcs} ${src})
161 ENDFOREACH(src ${dist_libPARAVIS_la_SOURCES})
162
163 FOREACH(f ${MOC_FILES})
164   SET(srcs ${srcs} ${CMAKE_CURRENT_BINARY_DIR}/${f})
165 ENDFOREACH(f ${MOC_FILES})
166
167 ADD_LIBRARY(PARAVIS SHARED ${srcs})
168
169 SET(flags)
170 FOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${libPARAVIS_la_CPPFLAGS})
171   SET(flags "${flags} ${f}")
172 ENDFOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${libPARAVIS_la_CPPFLAGS})
173
174 SET_TARGET_PROPERTIES(PARAVIS PROPERTIES COMPILE_FLAGS "${flags}")
175 SET_TARGET_PROPERTIES(PARAVIS PROPERTIES VERSION ${VERSION_INFO} SOVERSION ${SOVERSION_INFO})
176
177 #FIND_PACKAGE(VTK 6.0 COMPONENTS vtkPVClientServerCoreCore vtkPVServerImplementationCore NO_MODULE)
178 #SET(VTK_LIBS vtkPVClientServerCoreCore vtkPVServerImplementationCore)
179 SET(VTK_LIBS)
180 FIND_PACKAGE(ParaView COMPONENTS pqApplicationComponents NO_MODULE)
181 SET(PARAVIEW_LIBS pqApplicationComponents)
182
183 TARGET_LINK_LIBRARIES(PARAVIS 
184   ${PLATFORM_LIBADD} ${PLATFORM_LDFLAGS}
185   ${OMNIORB_LIBRARIES}
186   ${QT_LIBS}
187   ${CAS_KERNEL}
188   ${VTK_LIBS}
189   ${PYTHON_LIBS}
190   ${KERNEL_LDFLAGS} ${KERNEL_SalomeDS} ${KERNEL_SALOMELocalTrace} ${KERNEL_SalomeIDLKernel} 
191                     ${KERNEL_SalomeNS} ${KERNEL_SalomeLifeCycleCORBA} ${KERNEL_SalomeContainer} ${KERNEL_TOOLSDS}
192   ${GUI_LDFLAGS} ${GUI_SalomeApp} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit} ${GUI_Event} ${GUI_PyInterp} 
193                  ${GUI_SalomeObject} ${GUI_vtkTools}
194   ${MED_LDFLAGS} ${MED_SalomeIDLMED}
195   ${VISU_LDFLAGS}
196   ${VISU_PARAVIS_LIBS}
197   ${PARAVIEW_LIBS}
198   SalomeIDLPARAVIS
199 )
200 INSTALL(TARGETS PARAVIS DESTINATION lib/salome)
201
202 FOREACH(name ${bin_PROGRAMS})
203   ADD_EXECUTABLE(${name} 
204     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParse.tab.c 
205     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParsePreprocess.c
206     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseHierarchy.c
207     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseExtras.c
208     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseMain.c
209     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseData.c
210     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseString.c
211     ${PROJECT_SOURCE_DIR}/src/ParaView/vtkWrap.c
212 #    ${PROJECT_SOURCE_DIR}/src/ParaView/vtkWrapText.c
213     ${PROJECT_SOURCE_DIR}/idl/vtkWrapIDL.c)
214   ADD_DEPENDENCIES(${name} generate_txt)
215   
216   set_property(SOURCE ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseMain.c PROPERTY COMPILE_DEFINITIONS
217     VTK_PARSE_VERSION="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}")
218
219   SET(flags)
220   FOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${${name}_CPPFLAGS})
221     SET(flags "${flags} ${f}")
222   ENDFOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${${name}_CPPFLAGS})
223   
224   SET_TARGET_PROPERTIES(${name} PROPERTIES COMPILE_FLAGS "${flags}")
225   TARGET_LINK_LIBRARIES(${name} ${PLATFORM_LIBADD})
226   
227   SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${name})
228   IF(WINDOWS)
229     IF(CMAKE_BUILD_TOOL STREQUAL nmake)
230       SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${name}.exe)
231     ELSE(CMAKE_BUILD_TOOL STREQUAL nmake)
232       SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${name}.exe)
233     ENDIF(CMAKE_BUILD_TOOL STREQUAL nmake)
234   ENDIF(WINDOWS)
235   INSTALL(FILES ${${name}_EXEFILE} DESTINATION bin/salome PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
236 ENDFOREACH(name ${bin_PROGRAMS})
237
238 FOREACH(output ${MOC_FILES})
239   STRING(REGEX REPLACE _moc.cxx .h input ${output})
240   
241   SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${input})
242   SET(output ${CMAKE_CURRENT_BINARY_DIR}/${output})
243   ADD_CUSTOM_COMMAND(
244     OUTPUT ${output}
245     COMMAND ${QT_MOC_EXECUTABLE} ${MOC_FLAGS} ${input} -o ${output}
246     MAIN_DEPENDENCY ${input}
247     )
248 ENDFOREACH(output ${MOC_FILES})
249             
250 FOREACH(f ${nodist_salomeres_DATA})
251   STRING(REGEX REPLACE .qm .ts input ${f})
252   SET(input ${CMAKE_CURRENT_SOURCE_DIR}/resources/${input})
253   SET(output ${CMAKE_CURRENT_BINARY_DIR}/${f})
254   EXECUTE_PROCESS(COMMAND ${QT_LRELEASE_EXECUTABLE} ${input} -qm ${output})
255   INSTALL(FILES ${output} DESTINATION share/salome/resources/paravis)
256 ENDFOREACH(f ${nodist_salomeres_DATA})