Salome HOME
Copyright update 2022
[tools/configuration.git] / cmake / FindSalomeQt5.cmake
index 31168f3ad49edf68229ba33e235d7647d7c16c63..0911024f0fce94f67777cee3c994f132dc1859c3 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2013-2022  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
 
 # Qt5_FIND_COMPONENTS variable is set here to prevent ParaView to reset list of Qt5 modules,
 # just to avoid extra dependencies
-SET(Qt5_FIND_COMPONENTS Core Gui Widgets Network Xml OpenGL PrintSupport WebKit WebKitWidgets Help Test Sql Sensors Positioning Quick Qml Multimedia MultimediaWidgets WebChannel UiTools)
-
-IF(NOT WIN32)
-  LIST(APPEND Qt5_FIND_COMPONENTS X11Extras)
-ENDIF()
 
 SET(QT_INCLUDES)
 SET(QT_DEFINITIONS)
 SET(QT_LIBRARIES)
+# Find Qt5Core to get Qt version
+SET(Qt5_FIND_COMPONENTS QtCore)
+SET(Qt5_OPTIONAL_COMPONENTS)
+FIND_PACKAGE(Qt5Core)
+IF(Qt5Core_FOUND)
+  LIST(APPEND QT_INCLUDES    ${Qt5Core_INCLUDE_DIRS})
+  LIST(APPEND QT_DEFINITIONS ${Qt5Core_DEFINITIONS})
+  LIST(APPEND QT_LIBRARIES   ${Qt5Core_LIBRARIES})
+  SET(QT_VERSION "${Qt5Core_VERSION}")
+ENDIF()
+
+# Add mandatory Qt 5 components below
+SET(Qt5_FIND_COMPONENTS Gui Widgets Network Xml OpenGL PrintSupport Help Test)
+# Add optional Qt 5 components below
+SET(Qt5_OPTIONAL_COMPONENTS)
 
-FOREACH(_Qt5_COMPONENT ${Qt5_FIND_COMPONENTS})
-  SET(_Qt5_COMPONENT Qt5${_Qt5_COMPONENT})
-  SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(${_Qt5_COMPONENT} ${_Qt5_COMPONENT}_INCLUDE_DIRS 1 ENVVAR QT5_ROOT_DIR)
+IF ("${QT_VERSION}" VERSION_LESS "5.6.0")
+  # QtWebKit package is used with Qt < 5.6
+  LIST(APPEND Qt5_FIND_COMPONENTS WebKit WebKitWidgets)
+ELSE()
+  # QtWebEngine package is (optionally) used with Qt >= 5.6
+  # Anyway, not available with Python 3
+  LIST(APPEND Qt5_OPTIONAL_COMPONENTS WebEngineCore WebEngine WebEngineWidgets)
+ENDIF()
+
+IF(NOT WIN32)
+  ## QtX11Extras package is used on Linux only
+  LIST(APPEND Qt5_FIND_COMPONENTS X11Extras)
+ENDIF()
+
+FOREACH(_Qt5_COMPONENT_ ${Qt5_FIND_COMPONENTS} ${Qt5_OPTIONAL_COMPONENTS})
+  SET(_Qt5_COMPONENT Qt5${_Qt5_COMPONENT_})
+  LIST(FIND Qt5_OPTIONAL_COMPONENTS ${_Qt5_COMPONENT_} idx)
+  IF(${idx} GREATER -1)
+   SET(Salome${_Qt5_COMPONENT}_FIND_QUIETLY TRUE)
+  ENDIF()
+  FIND_PACKAGE(${_Qt5_COMPONENT})
   LIST(APPEND QT_INCLUDES    ${${_Qt5_COMPONENT}_INCLUDE_DIRS})
   LIST(APPEND QT_DEFINITIONS ${${_Qt5_COMPONENT}_DEFINITIONS})
   LIST(APPEND QT_LIBRARIES   ${${_Qt5_COMPONENT}_LIBRARIES})
@@ -51,7 +79,7 @@ MARK_AS_ADVANCED(QT_LRELEASE_EXECUTABLE)
 GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
 MARK_AS_ADVANCED(QT_BINARY_DIR)
 
-# This is only needed to correctly detect Qt help generator tool, to workaround an error 
+# This is only needed to correctly detect Qt help generator tool, to workaround an error
 # coming from ParaView detection procedure
 FIND_PROGRAM(QT_HELP_GENERATOR
     qhelpgenerator
@@ -60,11 +88,10 @@ FIND_PROGRAM(QT_HELP_GENERATOR
     DOC "qhelpgenerator used to compile Qt help project files")
 MARK_AS_ADVANCED(QT_HELP_GENERATOR)
 
-IF(Qt5Core_FOUND) 
+IF(Qt5Core_FOUND)
   SALOME_ACCUMULATE_HEADERS(QT_INCLUDES)
   SALOME_ACCUMULATE_ENVIRONMENT(PATH ${LINGUIST_PATH})
   SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH ${Qt5Core_LIBRARIES})
-  SET(QT_VERSION "${Qt5Core_VERSION}")
   GET_FILENAME_COMPONENT(Qt5_DIR ${Qt5Core_DIR} PATH)
   FILE(TO_NATIVE_PATH "${Qt5_DIR}/Qt5" Qt5_DIR)
   SET(SalomeQt5_COMPONENTS ${Qt5_FIND_COMPONENTS})