Salome HOME
Merge remote branch 'origin/hydro/imps_2015'
[modules/gui.git] / src / SALOME_PYQT / SalomePyQt / CMakeLists.txt
index 5d5ab7292f1228d071b47f82cc83bda09f397436..e77ddf6ae1bc239530fee1bbd4b728f0e2d92ee5 100755 (executable)
@@ -1,9 +1,9 @@
-# Copyright (C) 2012  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # 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
 #
 
+INCLUDE(UsePyQt4)
+IF(SALOME_USE_VTKVIEWER)
+  INCLUDE(${VTK_USE_FILE})
+ENDIF()
+
+# --- options ---
+
+# additional include directories
 INCLUDE_DIRECTORIES(
   ${CAS_INCLUDE_DIRS}
-  ${QT_INCLUDE_DIRS}
-  ${QWT_INCLUDE_DIRS}
-  ${SIP_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
+  ${QT_INCLUDES}
+  ${QWT_INCLUDE_DIR}
+  ${SIP_INCLUDE_DIR}
+  ${Boost_INCLUDE_DIRS}
   ${PYTHON_INCLUDE_DIRS}
-  ${PTHREAD_INCLUDE_DIRS}
-  ${VTK_INCLUDE_DIRS}
-  ${KERNEL_ROOT_DIR}/include/salome
-  ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${CMAKE_BINARY_DIR}/idl
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../SUIT
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../CAM
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../STD
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../Qtx
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../Event
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../LogWindow
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../VTKViewer
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../OCCViewer
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../Plot2d
-  ${CMAKE_CURRENT_SOURCE_DIR}/../SALOME_PYQT_GUILight
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../PyInterp
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../LightApp
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../ObjBrowser
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../OBJECT
+  ${PROJECT_SOURCE_DIR}/src/CAM
+  ${PROJECT_SOURCE_DIR}/src/Event
+  ${PROJECT_SOURCE_DIR}/src/LightApp
+  ${PROJECT_SOURCE_DIR}/src/LogWindow
+  ${PROJECT_SOURCE_DIR}/src/OBJECT
+  ${PROJECT_SOURCE_DIR}/src/ObjBrowser
+  ${PROJECT_SOURCE_DIR}/src/PyInterp
+  ${PROJECT_SOURCE_DIR}/src/PyConsole
+  ${PROJECT_SOURCE_DIR}/src/Qtx
+  ${PROJECT_SOURCE_DIR}/src/SALOME_PYQT/SALOME_PYQT_GUILight
+  ${PROJECT_SOURCE_DIR}/src/STD
+  ${PROJECT_SOURCE_DIR}/src/SUIT
+)
+
+IF(SALOME_USE_OCCVIEWER)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/OCCViewer)
+ENDIF(SALOME_USE_OCCVIEWER)
+IF(SALOME_USE_PVVIEWER)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/PVViewer)
+ENDIF(SALOME_USE_PVVIEWER)
+IF(SALOME_USE_PLOT2DVIEWER)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/Plot2d)
+ELSE(SALOME_USE_PLOT2DVIEWER)
+  #disable 'ENABLE_PLOT2D' feature
+  SET(PYQT_SIPFLAGS ${PYQT_SIPFLAGS} "-xENABLE_PLOT2D;")
+ENDIF(SALOME_USE_PLOT2DVIEWER)
+
+IF(SALOME_LIGHT_ONLY)
+  #disable 'ENABLE_CORBA' feature
+  SET(PYQT_SIPFLAGS ${PYQT_SIPFLAGS} "-xENABLE_CORBA;")
+ELSE(SALOME_LIGHT_ONLY)
+  INCLUDE_DIRECTORIES(
+    ${PROJECT_SOURCE_DIR}/src/SalomeApp
+  )
+ENDIF(SALOME_LIGHT_ONLY)
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(
+  ${QWT_DEFINITIONS}
+  ${QT_DEFINITIONS}
+  ${CAS_DEFINITIONS}
+  ${BOOST_DEFINITIONS}
+  ${PYTHON_DEFINITIONS}
+  ${OMNIORB_DEFINITIONS}
 )
-# -DHAVE_CONFIG_H 
-SET(COMMON_FLAGS "${QWT_DEFINITIONS} ${QT_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${VTK_DEFINITIONS} ${PYTHON_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
-SET(COMMON_LIBS 
-  ${PYTHON_LIBS}
-  ${SIP_LIBS}
-  ${PYQT_LIBS}
-  ${VTK_LIBS}
-  ${QWT_LIBS}
-  ${OGL_LIBS}
-  suit
-  CAM
-  std
-  qtx
-  Event
-  LogWindow
-  VTKViewer
+
+# libraries to link to
+SET(_link_LIBRARIES
+  ${PYTHON_LIBRARIES}
+  ${VTK_LIBRARIES}
+  ${OPENGL_LIBRARIES}
+  ${QWT_LIBRARY}
   SalomePyQtGUILight
-  OCCViewer
-  Plot2d
 ) 
 
-SET(GUI_HEADERS SalomePyQt.h)
-QT4_WRAP_CPP(GUI_HEADERS_MOC ${GUI_HEADERS})
-
-# extra source files (generated by sip)
-SET(SIP_SRC
-  sipAPISalomePyQt.h
-  sipSalomePyQtSalomePyQt.cc
-  sipSalomePyQtSALOME_Selection.cc
-  sipSalomePyQtQtxAction.cc
-  sipSalomePyQtQtxActionGroup.cc
-  sipSalomePyQtQtxActionSet.cc
-  sipSalomePyQtcmodule.cc
-)
-# Sip definition file
-SET(SIP_FILES
-  SalomePyQt.sip
-)
-FOREACH(input ${SIP_FILES})
-  SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${input})
-  SET(output)
-  FOREACH(out ${SIP_SRC})
-    SET(output ${output} ${CMAKE_CURRENT_BINARY_DIR}/${out})
-  ENDFOREACH(out ${SIP_SRC})
-  ADD_CUSTOM_COMMAND(
-    OUTPUT ${output}
-    COMMAND ${SIP_EXECUTABLE} ${PYQT_SIPFLAGS} ${input}
-    MAIN_DEPENDENCY ${input}
-  )
-ENDFOREACH(input ${SIP_FILES})
-
-SET(SalomePyQt_SOURCES SalomePyQt.cxx)
-
-ADD_LIBRARY(SalomePyQt SHARED ${SalomePyQt_SOURCES} ${GUI_HEADERS_MOC} ${SIP_SRC})
-SET_TARGET_PROPERTIES(SalomePyQt PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
-TARGET_LINK_LIBRARIES(SalomePyQt ${COMMON_LIBS})
-INSTALL(TARGETS SalomePyQt DESTINATION ${GUI_salomelib_LIBS})
-
-IF(WINDOWS)
-  IF(CMAKE_BUILD_TYPE STREQUAL Release)
-    INSTALL(FILES ${CMAKE_INSTALL_PREFIX}/${GUI_salomelib_LIBS}/SalomePyQt.dll DESTINATION ${GUI_salomelib_LIBS} RENAME SalomePyQt.pyd)
-  ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
-    INSTALL(FILES ${CMAKE_INSTALL_PREFIX}/${GUI_salomelib_LIBS}/SalomePyQt.dll DESTINATION ${GUI_salomelib_LIBS} RENAME SalomePyQt_d.pyd)
-  ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
-ELSE(WINDOWS)
-  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libSalomePyQt.so DESTINATION ${GUI_salomelib_LIBS} RENAME SalomePyQt.so)
-ENDIF(WINDOWS)
+# --- headers ---
+
+# header files / to be processed by moc
+SET(_moc_HEADERS SalomePyQt.h)
+
+# --- resources ---
+
+# sip files / to be processed by sip
+SET(_sip_files SalomePyQt.sip)
+IF(SALOME_USE_PLOT2DVIEWER)
+  LIST(APPEND _sip_files SalomePyQt_Plot2d.sip)
+ENDIF(SALOME_USE_PLOT2DVIEWER)
+
+# --- sources ---
+
+# sources / moc wrappings
+QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
+
+# sources / sip wrappings
+PYQT4_WRAP_SIP(_sip_SOURCES ${_sip_files})
+
+# sources / static
+SET(_other_SOURCES SalomePyQt.cxx)
+
+# sources / to compile
+SET(SalomePyQt_SOURCES ${_other_SOURCES} ${_moc_SOURCES} ${_sip_SOURCES})
+
+# --- rules ---
+
+ADD_LIBRARY(SalomePyQt ${SalomePyQt_SOURCES})
+TARGET_LINK_LIBRARIES(SalomePyQt ${_link_LIBRARIES})
+INSTALL(TARGETS SalomePyQt DESTINATION ${SALOME_INSTALL_LIBS})
+
+IF(WIN32)
+  SET_TARGET_PROPERTIES(SalomePyQt PROPERTIES SUFFIX ".pyd" DEBUG_OUTPUT_NAME SalomePyQt_d RELEASE_OUTPUT_NAME SalomePyQt)
+ELSE()
+  SET_TARGET_PROPERTIES(SalomePyQt PROPERTIES PREFIX "")
+ENDIF()
+
+FILE(GLOB make_clean_files ${CMAKE_CURRENT_BINARY_DIR}/sip*)
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")