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