Salome HOME
Copyright update 2022
[modules/paravis.git] / src / PVGUI / CMakeLists.txt
index 514e768635de924eeb5f0565a98494aa269a9508..a248fc05fb029afa185b995d497dbd8c5d9f0574 100644 (file)
@@ -1,9 +1,9 @@
-# Copyright (C) 2010-2012  CEA/DEN, EDF R&D
+# Copyright (C) 2010-2022  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(UseQtExt)
 
-ADD_DEFINITIONS(-DHAVE_SALOME_CONFIG)
-INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome ${CMAKE_CURRENT_SOURCE_DIR}/../ParaView ${CMAKE_BINARY_DIR}/idl ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+# --- options ---
 
-IF(WITH_VISU)
-  SET(VISU_PARAVIS_LIBS
-    ${SalomeIDLVISU}
+INCLUDE_DIRECTORIES(
+    ${KERNEL_INCLUDE_DIRS}
+    ${GUI_INCLUDE_DIRS}  
+    ${PROJECT_BINARY_DIR} 
+    ${Boost_INCLUDE_DIRS}
+    ${QT_INCLUDES}
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}
     )
-  
-  ADD_DEFINITIONS(-DWITH_VISU)
-ENDIF(WITH_VISU)
-
-#Executable
-SET(bin_PROGRAMS
-  vtkWrapIDL_HH
-  vtkWrapIDL_CC
-  )
 
-SET(vtkWrapIDL_HH_CPPFLAGS
-  -DIDL_I_HH
-  )
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(${KERNEL_DEFINITIONS})
 
-SET(vtkWrapIDL_CC_CPPFLAGS
-  -DIDL_I_CC
-  )
+# libraries to link to
+
+SET(_link_LIBRARIES 
+  ${QT_LIBRARIES}
+  ${PYTHON_LIBS}
+  ${KERNEL_LDFLAGS}
+  ${GUI_LDFLAGS} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit}
+                 ${GUI_SalomeObject}
+  ParaView::pqApplicationComponents             
+  ${GUI_PVViewer}
+)
 
-INCLUDE(wrap.cmake)
+# --- headers ---
+
+SET(_ui_files
+    resources/pqCustomSettingsWidget.ui
+    )
 
-INCLUDE(${ParaView_CMAKE_DIR}/vtkClientServer.cmake)
-VTK_WRAP_ClientServer(vtkEDFCutterCS vtkEDFCutter_SRCS ${GUI_ROOT_DIR}/include/salome/vtkEDFCutter.h)
+QT_WRAP_UIC(_ui_FORMS_HEADERS ${_ui_files})
 
-# 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_OutputWindowAdapter.h
-  PVGUI_OutputWindowAdapter.cxx
-  PVGUI_Tools.h
-  PVGUI_Tools.cxx
+  PVGUI_DataModel.h
   PVGUI_ParaViewSettingsPane.h
-  PVGUI_ParaViewSettingsPane.cxx
-  PV_I.h
-  PARAVIS_Gen_i.hh
-  PV_Events.h
-  PV_Tools.h
-  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 ${ParaView_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
-  )
+)
 
-# 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}
-  ${CORBA_CXXFLAGS}
-  ${CORBA_INCLUDES}
-  ${BOOST_CPPFLAGS}
-  ${GUI_CXXFLAGS}
-  ${MED_CXXFLAGS}
-  ${VISU_CXXFLAGS}
-  ${VISU_PARAVIS_DEFINES}
-  )
+# header files / to install
+SET(PVGUI_HEADERS ${_moc_HEADERS} ${_ui_FORMS_HEADERS})
 
-# 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
-  )
+# --- resources ---
 
-SET(srcs)
-FOREACH(src ${dist_libPARAVIS_la_SOURCES})
-  SET(srcs ${srcs} ${src})
-ENDFOREACH(src ${dist_libPARAVIS_la_SOURCES})
+# 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
+)
 
-FOREACH(f ${MOC_FILES})
-  SET(srcs ${srcs} ${CMAKE_CURRENT_BINARY_DIR}/${f})
-ENDFOREACH(f ${MOC_FILES})
+# resource files / static
+SET(_other_RESOURCES
+  # sampleservers.pvsc ???
+)
 
-ADD_LIBRARY(PARAVIS SHARED ${srcs})
+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 ${ParaView_PREFIX_PATH}/share/doc/ParaView/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
+QT_ADD_RESOURCES(_rcc_SOURCES ${_rcc_RESOURCES})
+
+# sources / moc wrappings
+QT_WRAP_MOC(_moc_SOURCES ${_moc_HEADERS})
+
+# sources / static
+SET(_other_SOURCES
+  PVGUI_Module.cxx
+  PVGUI_Module_actions.cxx
+  PVGUI_Module_widgets.cxx
+  PVGUI_ParaViewSettingsPane.cxx
+  PVGUI_DataModel.cxx
+  )
 
-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})
+# sources / to compile
+SET(PVGUI_SOURCES 
+  ${_other_SOURCES} 
+  ${_moc_SOURCES} 
+  ${_rcc_SOURCES} 
+  ${_VTK_wrap_SOURCES}
+  ${_ui_FORMS_HEADERS}
+  )
 
-SET_TARGET_PROPERTIES(PARAVIS PROPERTIES COMPILE_FLAGS "${flags}")
-SET_TARGET_PROPERTIES(PARAVIS PROPERTIES VERSION ${VERSION_INFO} SOVERSION ${SOVERSION_INFO})
+# --- rules ---
+ADD_LIBRARY(PARAVIS ${PVGUI_SOURCES})
+TARGET_LINK_LIBRARIES(PARAVIS ${_link_LIBRARIES})
+INSTALL(TARGETS PARAVIS EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
 
-TARGET_LINK_LIBRARIES(PARAVIS 
-  ${PLATFORM_LIBADD} ${PLATFORM_LDFLAGS}
-  ${CORBA_LIBS}
-  ${QT_LIBS}
-  ${CAS_KERNEL}
-  ${VTK_LIBS}
-  ${PYTHON_LIBS}
-  ${KERNEL_LDFLAGS} ${SalomeDS} ${SALOMELocalTrace} ${SalomeIDLKernel} ${SalomeNS} ${SalomeLifeCycleCORBA} ${SalomeContainer} ${TOOLSDS}
-  ${GUI_LDFLAGS} ${SalomeApp} ${LightApp} ${CAM} ${qtx} ${suit} ${Event} ${PyInterp} ${SalomeObject} ${vtkTools}
-  ${MED_LDFLAGS} ${SalomeIDLMED}
-  ${VISU_LDFLAGS}
-  ${VISU_PARAVIS_LIBS}
-  ${PARAVIEW_LIBS}
-  SalomeIDLPARAVIS
-)
-INSTALL(TARGETS PARAVIS DESTINATION lib/salome)
-
-FOREACH(name ${bin_PROGRAMS})
-  ADD_EXECUTABLE(${name} 
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParse.tab.c 
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParsePreprocess.c
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseHierarchy.c
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseExtras.c
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrap.c
-    ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrapText.c
-    ${CMAKE_SOURCE_DIR}/idl/vtkWrapIDL.c)
-  ADD_DEPENDENCIES(${name} generate_txt)
-  
-  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})
+QT_INSTALL_TS_RESOURCES("${_ts_RESOURCES}" "${SALOME_PARAVIS_INSTALL_RES_DATA}")
+INSTALL(FILES ${_other_RESOURCES} DESTINATION ${SALOME_PARAVIS_INSTALL_RES_DATA})