Salome HOME
Allow setting / getting QByteArray preference item in Python modules.
[modules/gui.git] / adm_local / cmake_files / FindSalomeGUI.cmake
index f8a4253674ce4175a3f6d50c0249bbbfdfcfd9c0..66d5b9f543987a764503469c8d1c69cc93e62152 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2016  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
@@ -39,4 +39,71 @@ ENDIF()
 
 FOREACH(_res ${SalomeGUI_EXTRA_ENV})
   SALOME_ACCUMULATE_ENVIRONMENT(${_res} "${SalomeGUI_EXTRA_ENV_${_res}}")
-ENDFOREACH()
\ No newline at end of file
+ENDFOREACH()
+
+#----------------------------------------------------------------------------
+# SALOME_GUI_WITH_CORBA is a macro useful for determining whether a SALOME GUI module 
+# is built in not light mode (with CORBA)
+#----------------------------------------------------------------------------
+MACRO(SALOME_GUI_WITH_CORBA)
+  IF(SALOME_GUI_LIGHT_ONLY)
+    MESSAGE(FATAL_ERROR "\nWe absolutely need a Salome GUI module with CORBA.\nPlease set option SALOME_LIGHT_ONLY to OFF when building GUI module.")
+  ENDIF()
+ENDMACRO(SALOME_GUI_WITH_CORBA)
+
+
+#----------------------------------------------------------------------------
+# SALOME_GUI_MODE is a macro useful for determining whether a GUI module
+# builded in particular mode 
+#----------------------------------------------------------------------------
+#########################################################################
+# SALOME_GUI_MODE()
+# 
+# USAGE: SALOME_GUI_MODE(_options)
+#
+# ARGUMENTS:
+#   _options [input] List - The list of CMake options given to SALOME GUI
+#
+# Notes:
+# - The arguments list can include "OPTIONAL" keywords:
+#   * All arguments preceded by "OPTIONAL" keyword are mandatory for current module.
+#     If GUI module was compiled without this functionality, further installation 
+#     of the current module becomes impossible.
+#   * All arguments following "OPTIONAL" keyword are optional for current module, which
+#     uses this functionality, but can be installed without it.
+#
+# - At present there are next options in the GUI module:
+#   SALOME_USE_OCCVIEWER, SALOME_USE_VTKVIEWER, SALOME_USE_GLVIEWER, SALOME_USE_PLOT2DVIEWER,
+#   SALOME_USE_GRAPHICSVIEW, SALOME_USE_QXGRAPHVIEWER, SALOME_USE_PVVIEWER, SALOME_USE_PYVIEWER,
+#   SALOME_USE_PYCONSOLE, SALOME_USE_SALOMEOBJECT
+#
+# Example of usage:
+#   SALOME_GUI_MODE(SALOME_USE_OCCVIEWER SALOME_USE_SALOMEOBJECT OPTIONAL SALOME_USE_PYCONSOLE)
+#
+MACRO(SALOME_GUI_MODE)
+  MESSAGE(STATUS "")
+  MESSAGE(STATUS "  Checking status of GUI options")
+  MESSAGE(STATUS "  ==================================== ")
+  MESSAGE(STATUS "")
+  SET(_message)
+  SET(_length 25)   
+  SET(_is_optional OFF)
+  FOREACH(_option ${ARGN})
+    IF(${_option} STREQUAL "OPTIONAL")
+      SET(_is_optional ON)
+      MESSAGE(STATUS "  Optional:")
+    ELSE()
+      SALOME_JUSTIFY_STRING(${_option} ${_length} _option_name)
+      MESSAGE(STATUS "  * ${_option_name}  ->  ${${_option}}")
+      IF(NOT ${_option} AND NOT ${_is_optional})
+        LIST(APPEND _message ${_option})
+      ENDIF()
+    ENDIF()
+  ENDFOREACH()
+  MESSAGE(STATUS "")
+  
+  IF(_message)
+    SET(_message "We absolutely need a Salome GUI module in special mode. The following options should be set to ON when building GUI module: \n${_message}\n")
+    MESSAGE(FATAL_ERROR "${_message}")
+  ENDIF()
+ENDMACRO(SALOME_GUI_MODE)