-# Copyright (C) 2010-2013 CEA/DEN, EDF R&D
+# Copyright (C) 2010-2014 CEA/DEN, EDF R&D
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
+# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-SET(VERSION_INFO ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MAINTENANCE})
-SET(SOVERSION_INFO ${VERSION_MAJOR}.${VERSION_MINOR})
+INCLUDE(UseQt4Ext)
-ADD_DEFINITIONS(-DHAVE_SALOME_CONFIG ${CAS_DEFINITIONS})
+# --- options ---
INCLUDE_DIRECTORIES(${OMNIORB_INCLUDE_DIR}
- ${KERNEL_ROOT_DIR}/include/salome
- ${GUI_ROOT_DIR}/include/salome
- ${CMAKE_CURRENT_SOURCE_DIR}/../ParaView
+ ${KERNEL_INCLUDE_DIRS}
+ ${GUI_INCLUDE_DIRS}
${PROJECT_BINARY_DIR}/idl
${PROJECT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
${CAS_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS})
-
-INCLUDE(${QT_USE_FILE})
-
-#IF(WITH_VISU)
-# SET(VISU_PARAVIS_LIBS
-# ${SalomeIDLVISU}
-# )
-#
-# ADD_DEFINITIONS(-DWITH_VISU)
-#ENDIF(WITH_VISU)
-
-#Executable
-SET(bin_PROGRAMS
- vtkWrapIDL_HH
- vtkWrapIDL_CC
- )
+ ${Boost_INCLUDE_DIRS}
+ ${QT_INCLUDES}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ )
-SET(vtkWrapIDL_HH_CPPFLAGS
- -DIDL_I_HH
- )
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(${CAS_DEFINITIONS})
+ADD_DEFINITIONS(${KERNEL_DEFINITIONS})
+ADD_DEFINITIONS(${OMNIORB_DEFINITIONS})
-SET(vtkWrapIDL_CC_CPPFLAGS
- -DIDL_I_CC
+# libraries to link to
+SET(_PARAVIEW_APP_COMPO_LIB
+ pqApplicationComponents
)
-#VTN TODO: vtkParseData supports two types of structures for wrapping.
-#We use old structures currently, but is is not influent for results of wrapping.
-#It may be necessary to port vtkWrapIDL to new approach in future.
-#IF(VTK_LEGACY_REMOVE)
-# ADD_DEFINITIONS(-DVTK_PARSE_LEGACY_REMOVE)
-#ENDIF()
-INCLUDE(wrap.cmake)
+SET(_link_LIBRARIES
+ ${OMNIORB_LIBRARIES}
+ ${QT_LIBRARIES}
+ ${CAS_KERNEL}
+ ${PYTHON_LIBS}
+ ${KERNEL_LDFLAGS} ${KERNEL_SalomeDS} ${KERNEL_SALOMELocalTrace} ${KERNEL_SalomeIDLKernel}
+ ${KERNEL_SalomeNS} ${KERNEL_SalomeLifeCycleCORBA} ${KERNEL_SalomeContainer} ${KERNEL_TOOLSDS}
+ ${GUI_LDFLAGS} ${GUI_SalomeApp} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit} ${GUI_Event} ${GUI_PyInterp}
+ ${GUI_SalomeObject} ${GUI_vtkTools}
+ ${MED_SalomeIDLMED}
+ ${_PARAVIEW_APP_COMPO_LIB}
+ SalomeIDLPARAVIS
+)
-INCLUDE(${ParaView_CMAKE_DIR}/vtkWrapClientServer.cmake)
-VTK_WRAP_ClientServer(vtkEDFCutterCS vtkEDFCutter_SRCS ${GUI_ROOT_DIR}/include/salome/vtkEDFCutter.h)
+# --- headers ---
-# Library sources
-SET(dist_libPARAVIS_la_SOURCES
+# header files / to be processed by moc
+SET(_moc_HEADERS
PVGUI_Module.h
- PVGUI_Module.cxx
- PVGUI_Module_actions.cxx
- PVGUI_Module_widgets.cxx
PVGUI_ViewManager.h
- PVGUI_ViewManager.cxx
PVGUI_ViewModel.h
- PVGUI_ViewModel.cxx
PVGUI_ViewWindow.h
- PVGUI_ViewWindow.cxx
+ PVGUI_ParaViewSettingsPane.h
+)
+
+# header files / no moc processing
+SET(_other_HEADERS
PVGUI_OutputWindowAdapter.h
- PVGUI_OutputWindowAdapter.cxx
PVGUI_Tools.h
- PVGUI_Tools.cxx
- PVGUI_ParaViewSettingsPane.h
- PVGUI_ParaViewSettingsPane.cxx
- PVGUI_MatplotlibMathTextUtilities.h
- PVGUI_MatplotlibMathTextUtilities.cxx
+ #PVGUI_MatplotlibMathTextUtilities.h
PV_I.h
PARAVIS_Gen_i.hh
PV_Events.h
PV_Tools.h
+)
+
+# header files / to install
+SET(PVGUI_HEADERS ${_moc_HEADERS} ${_other_HEADERS})
+
+# --- resources ---
+
+# resource files / to be processed by lrelease
+SET(_ts_RESOURCES
+ resources/PARAVIS_images.ts
+ resources/PARAVIS_msg_en.ts
+ resources/PARAVIS_msg_fr.ts
+ resources/PARAVIS_msg_ja.ts
+)
+
+# resource files / static
+SET(_other_RESOURCES
+ # sampleservers.pvsc ???
+)
+
+IF(SALOME_BUILD_DOC)
+ # --- ParaView documentation is built as a resource ---
+ # Check ParaView documentation file existence
+ # if it exists add it to the resources (compile into binary form)
+ # otherwise print warning message
+ SET(PV_DOC_FILE ${VTK_INSTALL_PREFIX}/share/doc/paraview-${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}/paraview.qch)
+ IF (EXISTS ${PV_DOC_FILE})
+ SET(RC_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/PVGUI.qrc.in)
+ SET(RC_GENERATED ${CMAKE_CURRENT_BINARY_DIR}/PVGUI.qrc)
+ MESSAGE(STATUS "Creation of ${RC_GENERATED}")
+ CONFIGURE_FILE(${RC_SOURCE} ${RC_GENERATED})
+ SET(_rcc_RESOURCES ${RC_GENERATED})
+ ADD_DEFINITIONS(-DHAS_PV_DOC)
+ ELSE ()
+ MESSAGE(WARNING "Help file for ParaView has not been found! ParaView documentation will not be available.")
+ ENDIF ()
+ENDIF()
+
+# --- sources ---
+
+# sources / rcc wrappings
+QT4_ADD_RESOURCES(_rcc_SOURCES ${_rcc_RESOURCES})
+
+# sources / moc wrappings
+QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
+
+# sources / EDF specific stuff
+INCLUDE(vtkWrapClientServer)
+VTK_WRAP_ClientServer(vtkEDFCutterCS vtkEDFCutter_SRCS ${GUI_ROOT_DIR}/include/salome/vtkEDFCutter.h)
+
+# sources / static
+SET(_other_SOURCES
+ PVGUI_Module.cxx
+ PVGUI_Module_actions.cxx
+ PVGUI_Module_widgets.cxx
+ PVGUI_ViewManager.cxx
+ PVGUI_ViewModel.cxx
+ PVGUI_ViewWindow.cxx
+ PVGUI_OutputWindowAdapter.cxx
+ PVGUI_Tools.cxx
+ PVGUI_ParaViewSettingsPane.cxx
+ #PVGUI_MatplotlibMathTextUtilities.cxx
PARAVIS_Gen_i.cc
PV_Tools.cxx
- ${WRAP_IDL_I_HH}
- ${WRAP_IDL_I_CC}
- PARAVIS_CreateClass.cxx
- ${vtkEDFCutter_SRCS}
)
-# Check ParaView documentation file existence
-# if it exists add it to the resources (compile into binary form)
-# otherwise print warning message
-SET(PV_DOC_FILE ${VTK_INSTALL_PREFIX}/share/doc/paraview-${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}/paraview.qch)
-IF (EXISTS ${PV_DOC_FILE})
- SET(RC_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/PVGUI.qrc.in)
- SET(RC_GENERATED ${CMAKE_CURRENT_BINARY_DIR}/PVGUI.qrc)
- MESSAGE(STATUS "Creation of ${RC_GENERATED}")
- CONFIGURE_FILE(${RC_SOURCE} ${RC_GENERATED})
- QT4_ADD_RESOURCES(RCS_SOURCES ${RC_GENERATED})
- SET(dist_libPARAVIS_la_SOURCES ${dist_libPARAVIS_la_SOURCES} ${RCS_SOURCES})
- ADD_DEFINITIONS(-DHAS_PV_DOC)
-ELSE (EXISTS ${PV_DOC_FILE})
- MESSAGE(WARNING "Help file for ParaView has not been found! ParaView documentation will not be available.")
-ENDIF (EXISTS ${PV_DOC_FILE})
-
-# MOC pre-processing
-SET(MOC_FILES
- PVGUI_Module_moc.cxx
- PVGUI_ViewManager_moc.cxx
- PVGUI_ViewModel_moc.cxx
- PVGUI_ViewWindow_moc.cxx
- PVGUI_ParaViewSettingsPane_moc.cxx
- )
+IF(NOT SALOME_PARAVIS_MINIMAL_CORBA)
+ # Generate headers and sources corresponding to the IDL implementations:
+ INCLUDE(${PROJECT_SOURCE_DIR}/src/VTKWrapping/wrap.cmake)
-# additionnal compilation flags
-# Note that ParaView uses HDF5
-SET(libPARAVIS_la_CPPFLAGS
- -ftemplate-depth-32
- ${QT_INCLUDES}
- ${QT_ASSISTANT_INCLUDES}
- ${PYTHON_INCLUDES}
- ${CAS_CPPFLAGS}
- ${CAS_CXXFLAGS}
- ${KERNEL_CXXFLAGS}
- ${OMNIORB_DEFINITIONS}
- ${BOOST_CPPFLAGS}
- ${GUI_CXXFLAGS}
- ${MED_CXXFLAGS}
- ${VISU_CXXFLAGS}
- ${VISU_PARAVIS_DEFINES}
- )
+ ## From 2.8.10, we should use:
+ ## SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+
+ # Make the list of wrapped files visible from the top directory (will be used in idl):
+ SET(WRAP_IDL_I_HH "${WRAP_IDL_I_HH}" PARENT_SCOPE)
+ SET(WRAP_IDL_I_CC "${WRAP_IDL_I_CC}" PARENT_SCOPE)
-# remove deprecation warnings from Paraview
-IF(WINDOWS)
-ELSE(WINDOWS)
- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
-ENDIF(WINDOWS)
-
-# resources files
-SET(nodist_salomeres_DATA
- PARAVIS_images.qm
- PARAVIS_msg_en.qm
- PARAVIS_msg_fr.qm
+ SET(_VTK_wrap_SOURCES
+ PARAVIS_CreateClass.cxx
+ ${WRAP_IDL_I_CC}
+ )
+ENDIF()
+
+# sources / to compile
+SET(PVGUI_SOURCES
+ ${_other_SOURCES}
+ ${_moc_SOURCES}
+ ${_rcc_SOURCES}
+ ${vtkEDFCutter_SRCS}
+ ${_VTK_wrap_SOURCES}
)
-SET(srcs)
-FOREACH(src ${dist_libPARAVIS_la_SOURCES})
- SET(srcs ${srcs} ${src})
-ENDFOREACH(src ${dist_libPARAVIS_la_SOURCES})
+# --- rules ---
-FOREACH(f ${MOC_FILES})
- SET(srcs ${srcs} ${CMAKE_CURRENT_BINARY_DIR}/${f})
-ENDFOREACH(f ${MOC_FILES})
+IF(NOT SALOME_PARAVIS_MINIMAL_CORBA)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT PARAVIS_CreateClass.cxx
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/VTKWrapping/create_class.py ${CMAKE_BINARY_DIR}
+ DEPENDS ${CMAKE_BINARY_DIR}/wrapfiles.txt
+ ${PROJECT_BINARY_DIR}/idl/PARAVIS_Gen.hh
+ ${PROJECT_BINARY_DIR}/idl/PARAVIS_Gen_Types.hh
+ SalomeIDLPARAVIS
+ generate_implements
+ )
-ADD_LIBRARY(PARAVIS SHARED ${srcs})
+ # All wrapping tools have to be build before generating the above module - NEEDED?
+ ###ADD_DEPENDENCIES(SalomeIDLPARAVIS vtkWrapIDL_HH vtkWrapIDL_CC vtkWrapIDL)
-SET(flags)
-FOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${libPARAVIS_la_CPPFLAGS})
- SET(flags "${flags} ${f}")
-ENDFOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${libPARAVIS_la_CPPFLAGS})
+ # Intermediate target used in PVGUI directory (we can not cross reference
+ # a generated source file across directories, hence this trick):
+ INCLUDE_DIRECTORIES(
+ ${PROJECT_BINARY_DIR}/idl
+ ${PROJECT_BINARY_DIR}/src/VTKWrapping
+ )
+ENDIF()
-SET_TARGET_PROPERTIES(PARAVIS PROPERTIES COMPILE_FLAGS "${flags}")
-SET_TARGET_PROPERTIES(PARAVIS PROPERTIES VERSION ${VERSION_INFO} SOVERSION ${SOVERSION_INFO})
+ADD_LIBRARY(PARAVIS ${PVGUI_SOURCES})
+IF(NOT SALOME_PARAVIS_MINIMAL_CORBA)
+ # Make sure the generation of the VTK wrapping get executed first:
+ ADD_DEPENDENCIES(PARAVIS PARAVIS_CreateClass.cxx)
+ENDIF()
-#FIND_PACKAGE(VTK 6.0 COMPONENTS vtkPVClientServerCoreCore vtkPVServerImplementationCore NO_MODULE)
-#SET(VTK_LIBS vtkPVClientServerCoreCore vtkPVServerImplementationCore)
-SET(VTK_LIBS)
-FIND_PACKAGE(ParaView COMPONENTS pqApplicationComponents NO_MODULE)
-SET(PARAVIEW_LIBS pqApplicationComponents)
+IF(NOT SALOME_PARAVIS_MINIMAL_CORBA)
+ # Ensure .hh files corresponding to IDL have been generated first:
+ ADD_DEPENDENCIES(PARAVIS omniorb_module_SalomeIDLPARAVIS)
+ENDIF()
-TARGET_LINK_LIBRARIES(PARAVIS
- ${PLATFORM_LIBADD} ${PLATFORM_LDFLAGS}
- ${OMNIORB_LIBRARIES}
- ${QT_LIBS}
- ${CAS_KERNEL}
- ${VTK_LIBS}
- ${PYTHON_LIBS}
- ${KERNEL_LDFLAGS} ${KERNEL_SalomeDS} ${KERNEL_SALOMELocalTrace} ${KERNEL_SalomeIDLKernel}
- ${KERNEL_SalomeNS} ${KERNEL_SalomeLifeCycleCORBA} ${KERNEL_SalomeContainer} ${KERNEL_TOOLSDS}
- ${GUI_LDFLAGS} ${GUI_SalomeApp} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit} ${GUI_Event} ${GUI_PyInterp}
- ${GUI_SalomeObject} ${GUI_vtkTools}
- ${MED_LDFLAGS} ${MED_SalomeIDLMED}
- ${VISU_LDFLAGS}
- ${VISU_PARAVIS_LIBS}
- ${PARAVIEW_LIBS}
- SalomeIDLPARAVIS
-)
-INSTALL(TARGETS PARAVIS DESTINATION lib/salome)
-
-FOREACH(name ${bin_PROGRAMS})
- ADD_EXECUTABLE(${name}
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParse.tab.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParsePreprocess.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseHierarchy.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseExtras.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseMain.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseData.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseString.c
- ${PROJECT_SOURCE_DIR}/src/ParaView/vtkWrap.c
-# ${PROJECT_SOURCE_DIR}/src/ParaView/vtkWrapText.c
- ${PROJECT_SOURCE_DIR}/idl/vtkWrapIDL.c)
- ADD_DEPENDENCIES(${name} generate_txt)
-
- set_property(SOURCE ${PROJECT_SOURCE_DIR}/src/ParaView/vtkParseMain.c PROPERTY COMPILE_DEFINITIONS
- VTK_PARSE_VERSION="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}")
+TARGET_LINK_LIBRARIES(PARAVIS ${_link_LIBRARIES})
+INSTALL(TARGETS PARAVIS EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
- SET(flags)
- FOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${${name}_CPPFLAGS})
- SET(flags "${flags} ${f}")
- ENDFOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${${name}_CPPFLAGS})
-
- SET_TARGET_PROPERTIES(${name} PROPERTIES COMPILE_FLAGS "${flags}")
- TARGET_LINK_LIBRARIES(${name} ${PLATFORM_LIBADD})
-
- SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${name})
- IF(WINDOWS)
- IF(CMAKE_BUILD_TOOL STREQUAL nmake)
- SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${name}.exe)
- ELSE(CMAKE_BUILD_TOOL STREQUAL nmake)
- SET(${name}_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${name}.exe)
- ENDIF(CMAKE_BUILD_TOOL STREQUAL nmake)
- ENDIF(WINDOWS)
- INSTALL(FILES ${${name}_EXEFILE} DESTINATION bin/salome PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-ENDFOREACH(name ${bin_PROGRAMS})
-
-FOREACH(output ${MOC_FILES})
- STRING(REGEX REPLACE _moc.cxx .h input ${output})
-
- SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${input})
- SET(output ${CMAKE_CURRENT_BINARY_DIR}/${output})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${output}
- COMMAND ${QT_MOC_EXECUTABLE} ${MOC_FLAGS} ${input} -o ${output}
- MAIN_DEPENDENCY ${input}
- )
-ENDFOREACH(output ${MOC_FILES})
-
-FOREACH(f ${nodist_salomeres_DATA})
- STRING(REGEX REPLACE .qm .ts input ${f})
- SET(input ${CMAKE_CURRENT_SOURCE_DIR}/resources/${input})
- SET(output ${CMAKE_CURRENT_BINARY_DIR}/${f})
- EXECUTE_PROCESS(COMMAND ${QT_LRELEASE_EXECUTABLE} ${input} -qm ${output})
- INSTALL(FILES ${output} DESTINATION share/salome/resources/paravis)
-ENDFOREACH(f ${nodist_salomeres_DATA})
+
+# --- header and resources installation ---
+INSTALL(FILES ${PVGUI_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+QT4_INSTALL_TS_RESOURCES("${_ts_RESOURCES}" "${SALOME_PARAVIS_INSTALL_RES_DATA}")
+INSTALL(FILES ${_other_RESOURCES} DESTINATION ${SALOME_PARAVIS_INSTALL_RES_DATA})