-# 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})
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
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})