+# Optional Dependencies
+#
+# Note that you can forcefully disable optional packages
+# using -DCMAKE_DISABLE_FIND_PACKAGE_<PkgName>=TRUE
+#####################################################################
+
+if(USE_QT5)
+ if (BUILD_GUI)
+ 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)
+ 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"
+ )
+
+ 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"
+ )
+ endif()
+ add_feature_info("WITH_WEBKIT and QtWebkit module" Qt5Webkit_FOUND "Support showing previews for URLs in chat")
+
+ endif(BUILD_GUI)
+ if (BUILD_CORE)
+ # While QCA2 seems to support Qt5, it is not actually co-installable or distinguishable from the Qt4 version...
+ # In order to avoid linking against the Qt4 version (which is probably the one installed), disable this for now
+ #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(BUILD_CORE)
+
+else(USE_QT5)
+ 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(libdbusmenu-qt QUIET)
+ 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()
+endif()
+
+# Non-Qt-based packages
+
+# zlib for compression, however we can always fall back to miniz
+find_package(ZLIB QUIET)
+set_package_properties(ZLIB PROPERTIES TYPE RECOMMENDED
+ URL "http://www.zlib.net"
+ DESCRIPTION "a popular compression library"
+ PURPOSE "Use the most common library for protocol compression, instead of the bundled miniz implementation"
+)
+
+
+if (NOT WIN32)
+ # Execinfo is needed for generating backtraces
+ find_package(ExecInfo QUIET)
+ set_package_properties(ExecInfo PROPERTIES TYPE OPTIONAL
+ DESCRIPTION "a library for inspecting backtraces"
+ PURPOSE "Used for generating backtraces in case of a crash"
+ )
+endif()