+ if (BUILD_GUI)
+ find_package(Qt5Gui QUIET)
+ set_package_properties(Qt5Gui PROPERTIES TYPE REQUIRED
+ DESCRIPTION "the GUI module for Qt5"
+ )
+ find_package(Qt5Widgets QUIET)
+ set_package_properties(Qt5Widgets PROPERTIES TYPE REQUIRED
+ DESCRIPTION "the widgets module for Qt5"
+ )
+
+ find_package(Qt5DBus QUIET)
+ set_package_properties(Qt5DBus PROPERTIES TYPE RECOMMENDED
+ URL "http://qt.digia.com"
+ DESCRIPTION "D-Bus support for Qt5"
+ PURPOSE "Needed for supporting D-Bus-based notifications and tray icon, used by most modern desktop environments"
+ )
+ if (Qt5DBus_FOUND)
+ find_package(dbusmenu-qt5 QUIET CONFIG)
+ set_package_properties(dbusmenu-qt5 PROPERTIES TYPE RECOMMENDED
+ URL "https://launchpad.net/libdbusmenu-qt"
+ DESCRIPTION "a library implementing the DBusMenu specification"
+ PURPOSE "Required for having a context menu for the D-Bus-based tray icon"
+ )
+ endif()
+
+ find_package(Phonon4Qt5 QUIET)
+ set_package_properties(Phonon4Qt5 PROPERTIES TYPE RECOMMENDED
+ URL "https://projects.kde.org/projects/kdesupport/phonon"
+ DESCRIPTION "a multimedia abstraction library"
+ PURPOSE "Required for audio notifications"
+ )
+
+ find_package(LibsnoreQt5 QUIET)
+ set_package_properties(LibsnoreQt5 PROPERTIES TYPE OPTIONAL
+ URL "https://github.com/TheOneRing/Snorenotify"
+ DESCRIPTION "a cross-platform notification framework"
+ PURPOSE "Enable support for the snorenotify framework"
+ )
+
+ if (WITH_WEBKIT)
+ find_package(Qt5WebKit QUIET)
+ set_package_properties(Qt5WebKit PROPERTIES TYPE RECOMMENDED
+ URL "http://qt.digia.com"
+ DESCRIPTION "a WebKit implementation for Qt"
+ PURPOSE "Needed for displaying previews for URLs in chat"
+ )
+ if (Qt5WebKit_FOUND)
+ find_package(Qt5WebKitWidgets QUIET)
+ set_package_properties(Qt5WebKitWidgets PROPERTIES TYPE RECOMMENDED
+ URL "http://qt.digia.com"
+ DESCRIPTION "widgets for Qt's WebKit implementation"
+ PURPOSE "Needed for displaying previews for URLs in chat"
+ )
+ endif()
+ endif()
+ add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" Qt5WebKitWidgets_FOUND "Support showing previews for URLs in chat")
+
+ # KDE Frameworks
+ ################
+
+ if (WITH_KDE)
+ set(ecm_find_type "REQUIRED")
+ else()
+ # Even with KDE integration disabled, we optionally use tier1 frameworks if we find them
+ set(ecm_find_type "RECOMMENDED")
+ endif()
+
+ # extra-cmake-modules
+ find_package(ECM NO_MODULE QUIET)
+ set_package_properties(ECM PROPERTIES TYPE ${ecm_find_type}
+ URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules"
+ DESCRIPTION "extra modules for CMake, maintained by the KDE project"
+ PURPOSE "Required to find KDE Frameworks components"
+ )
+
+ if (ECM_FOUND)
+ list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+ endif()
+
+ if (WITH_KDE)
+ find_package(KF5CoreAddons QUIET)
+ set_package_properties(KF5CoreAddons PROPERTIES TYPE REQUIRED
+ URL "http://inqlude.org/libraries/kcoreaddons.html"
+ DESCRIPTION "framework for solving common problems such as caching, randomization, and more"
+ PURPOSE "Required for KDE Frameworks integration"
+ )
+
+ find_package(KF5TextWidgets QUIET)
+ set_package_properties(KF5TextWidgets PROPERTIES TYPE REQUIRED
+ URL "http://inqlude.org/libraries/ktextwidgets.html"
+ DESCRIPTION "framework providing an assortment of widgets for displaying and editing text"
+ PURPOSE "Allows to use extra features provided by KDE Frameworks in input widgets"
+ )
+
+ endif()
+
+ endif(BUILD_GUI)
+ if (BUILD_CORE)
+ find_package(Qt5Script QUIET)
+ set_package_properties(Qt5Script PROPERTIES TYPE REQUIRED
+ DESCRIPTION "provides scripting support for Qt5"
+ )
+ find_package(Qt5Sql QUIET)
+ set_package_properties(Qt5Sql PROPERTIES TYPE REQUIRED
+ DESCRIPTION "the database support module for Qt5"
+ )
+
+ find_package(QCA2-QT5)
+ set_package_properties(QCA2-QT5 PROPERTIES TYPE RECOMMENDED
+ URL "https://projects.kde.org/projects/kdesupport/qca"
+ DESCRIPTION "Qt Cryptographic Architecture"
+ PURPOSE "Required for encryption support"
+ )
+
+ endif(BUILD_CORE)
+
+ find_package(Qt5LinguistTools QUIET)
+ set_package_properties(Qt5LinguistTools PROPERTIES TYPE RECOMMENDED
+ DESCRIPTION "contains tools for handling translation files"
+ PURPOSE "Required for having translations"
+ )
+ # Some Qt5 versions do not define a target for lconvert, so we need to find it ourselves
+ if (Qt5LinguistTools_FOUND)
+ if (NOT TARGET Qt5::lconvert AND TARGET Qt5::lrelease)
+ get_target_property(_lrelease_location Qt5::lrelease LOCATION)
+ get_filename_component(_lrelease_path ${_lrelease_location} PATH)
+ find_program(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt5 lconvert PATHS ${_lrelease_path} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+ elseif(TARGET Qt5::lconvert AND NOT Qt5_LCONVERT_EXECUTABLE)
+ # Newer Qt5 versions define the target, but not the Qt5_LCONVERT_EXECUTABLE variable for some reason
+ get_target_property(QT_LCONVERT_EXECUTABLE Qt5::lconvert LOCATION)
+ endif()
+
+ # Compatibility with the Qt4 variables
+ set(QT_LRELEASE_EXECUTABLE ${Qt5_LRELEASE_EXECUTABLE})
+ set(QT_LUPDATE_EXECUTABLE ${Qt5_LUPDATE_EXECUTABLE})
+ if (Qt5_LCONVERT_EXECUTABLE)
+ set(QT_LCONVERT_EXECUTABLE ${Qt5_LCONVERT_EXECUTABLE})
+ endif()
+ endif()
+
+else(USE_QT5)
+ find_package(Qt4 ${QT_MIN_VERSION} QUIET REQUIRED)
+
+ if (BUILD_GUI)
+ add_feature_info("QtDBus module" QT_QTDBUS_FOUND "Needed for supporting D-Bus-based notifications and tray icon, used by most modern desktop environments")
+ if (QT_QTDBUS_FOUND)
+ find_package(dbusmenu-qt QUIET CONFIG)
+ set_package_properties(dbusmenu-qt PROPERTIES TYPE RECOMMENDED
+ URL "https://launchpad.net/libdbusmenu-qt"
+ DESCRIPTION "a library implementing the DBusMenu specification"
+ PURPOSE "Required for having a context menu for the D-Bus-based tray icon"
+ )
+ endif()
+
+ if (WITH_WEBKIT AND QT_QTWEBKIT_FOUND)
+ set(HAVE_WEBKIT true)
+ endif()
+ add_feature_info("WITH_WEBKIT and QtWebKit module" HAVE_WEBKIT "Support showing previews for URLs in chat")
+
+ if (WITH_KDE)
+ # KDE has overzealous CFLAGS making miniz not compile, so save our old flags
+ set(_cflags ${CMAKE_C_FLAGS})
+ find_package(KDE4 4.4 QUIET)
+ set_package_properties(KDE4 PROPERTIES TYPE REQUIRED
+ URL "http://www.kde.org"
+ DESCRIPTION "a world-class desktop environment"
+ PURPOSE "Enables various bits for improving integration with KDE"
+ )
+ set(CMAKE_C_FLAGS ${_cflags})
+
+ else(WITH_KDE)
+ find_package(Phonon QUIET)
+ set_package_properties(Phonon PROPERTIES TYPE RECOMMENDED
+ URL "https://projects.kde.org/projects/kdesupport/phonon"
+ DESCRIPTION "a multimedia abstraction library"
+ PURPOSE "Required for audio notifications"
+ )
+
+ find_package(Libsnore QUIET)
+ set_package_properties(Libsnore PROPERTIES TYPE OPTIONAL
+ URL "https://github.com/TheOneRing/Snorenotify"
+ DESCRIPTION "a cross-platform notification framework"
+ PURPOSE "Enable support for the snorenotify framework"
+ )
+ endif(WITH_KDE)
+
+ find_package(IndicateQt QUIET)
+ set_package_properties(IndicateQt PROPERTIES TYPE OPTIONAL
+ URL "https://launchpad.net/libindicate-qt/"
+ DESCRIPTION "a library to raise flags on DBus for other components of the desktop to pick up and visualize"
+ PURPOSE "Provides integration into the Ayatana notification system used by e.g. Ubuntu"
+ )
+
+ endif(BUILD_GUI)
+
+ if (BUILD_CORE)
+
+ find_package(QCA2 QUIET)
+ set_package_properties(QCA2 PROPERTIES TYPE RECOMMENDED
+ URL "https://projects.kde.org/projects/kdesupport/qca"
+ DESCRIPTION "Qt Cryptographic Architecture"
+ PURPOSE "Required for encryption support"
+ )
+
+
+ endif()
+
+ # Qt4 does not consider lconvert relevant, so they don't support finding it...
+ # Rather than shipping hacked buildsys files, let's just infer the path from lrelease
+ if (QT_LRELEASE_EXECUTABLE)
+ get_filename_component(_lrelease_path ${QT_LRELEASE_EXECUTABLE} PATH)
+ find_program(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt4 lconvert PATHS ${_lrelease_path} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+ endif()
+endif()