Warning, /multimedia/elisa/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0002 #
0003 # SPDX-License-Identifier: LGPL-3.0-or-later
0004 
0005 cmake_minimum_required(VERSION 3.8)
0006 
0007 # KDE Applications version, managed by release script.
0008 set(RELEASE_SERVICE_VERSION_MAJOR "24")
0009 set(RELEASE_SERVICE_VERSION_MINOR "04")
0010 set(RELEASE_SERVICE_VERSION_MICRO "70")
0011 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0012 
0013 project(elisa
0014     VERSION ${RELEASE_SERVICE_VERSION}
0015     LANGUAGES CXX)
0016 
0017 set(REQUIRED_KF_VERSION "5.240.0")
0018 set(REQUIRED_KA_VERSION "0.11.76") # KirigamiAddons Version
0019 find_package(ECM ${REQUIRED_KF_VERSION} REQUIRED NO_MODULE)
0020 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH})
0021 
0022 include(KDEInstallDirs)
0023 include(KDECMakeSettings)
0024 include(KDECompilerSettings NO_POLICY_SCOPE)
0025 include(ECMInstallIcons)
0026 include(FeatureSummary)
0027 include(ECMAddAppIcon)
0028 include(ECMAddTests)
0029 include(ECMQtDeclareLoggingCategory)
0030 include(ECMGenerateQmlTypes)
0031 
0032 set(REQUIRED_QT_VERSION "6.5.0")
0033 find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core Network Qml Quick Test Sql Multimedia Svg Gui Widgets QuickTest Concurrent QuickControls2)
0034 
0035 find_package(Qt6Core ${REQUIRED_QT_VERSION} CONFIG REQUIRED Private)
0036 
0037 
0038 
0039 if (NOT WIN32 AND NOT ANDROID)
0040     find_package(Qt6DBus ${REQUIRED_QT_VERSION} CONFIG QUIET)
0041     set_package_properties(Qt6DBus PROPERTIES
0042         DESCRIPTION "Qt6 DBus is needed to provide MPris2 interface to allow remote control by the desktop workspace."
0043         TYPE OPTIONAL)
0044 endif()
0045 
0046 if (Qt6DBus_FOUND)
0047 set(QtDBus_FOUND 1)
0048 endif()
0049 
0050 find_package(Qt6QuickWidgets ${REQUIRED_QT_VERSION} CONFIG QUIET)
0051 set_package_properties(Qt6QuickWidgets PROPERTIES
0052     DESCRIPTION "Qt6 Quick Widgets is needed at runtime to provide the interface."
0053     TYPE RUNTIME)
0054 
0055 find_package(Qt6QuickControls2 ${REQUIRED_QT_VERSION} CONFIG QUIET)
0056 set_package_properties(Qt6QuickControls2 PROPERTIES
0057     DESCRIPTION "Qt6 Quick Controls version 2 is needed at runtime to provide the interface."
0058     TYPE RUNTIME)
0059 
0060 if (ANDROID)
0061     find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS AndroidExtras)
0062     set_package_properties(Qt5AndroidExtras PROPERTIES
0063         DESCRIPTION "Qt5 AndroidExtras is needed to provide the Android integration."
0064         TYPE REQUIRED)
0065     set(QtAndroidExtras_FOUND 1)
0066 endif()
0067 
0068 find_package(KF6Kirigami ${REQUIRED_KF_VERSION} CONFIG QUIET)
0069 
0070 set_package_properties(KF6Kirigami PROPERTIES
0071     DESCRIPTION "KF Kirigami is needed to provide the mobile UI components."
0072     TYPE REQUIRED)
0073 
0074 find_package(KF6KirigamiAddons ${REQUIRED_KA_VERSION} CONFIG QUIET)
0075 
0076 set_package_properties(KF6KirigamiAddons PROPERTIES
0077     DESCRIPTION "KF KirigamiAddons is needed to provide the about KDE dialogue."
0078     TYPE REQUIRED)
0079 
0080 find_package(KF6I18n ${REQUIRED_KF_VERSION} CONFIG QUIET)
0081 set_package_properties(KF6I18n PROPERTIES
0082     DESCRIPTION "KF text internationalization library."
0083     TYPE REQUIRED)
0084 
0085 find_package(KF6CoreAddons ${REQUIRED_KF_VERSION} CONFIG QUIET)
0086 set_package_properties(KF6CoreAddons PROPERTIES
0087     DESCRIPTION "Qt addon library with a collection of non-GUI utilities."
0088     TYPE REQUIRED)
0089 
0090 find_package(KF6IconThemes ${REQUIRED_KF_VERSION} CONFIG QUIET)
0091 set_package_properties(KF6IconThemes PROPERTIES
0092     DESCRIPTION "Support for icon themes."
0093     TYPE REQUIRED)
0094 
0095 find_package(KF6FileMetaData ${REQUIRED_KF_VERSION} CONFIG QUIET)
0096 set_package_properties(KF6FileMetaData PROPERTIES
0097     DESCRIPTION "Provides a simple library for extracting metadata."
0098     TYPE RECOMMENDED)
0099 
0100 find_package(KF6DocTools ${REQUIRED_KF_VERSION} CONFIG QUIET)
0101 set_package_properties(KF6DocTools PROPERTIES
0102     DESCRIPTION "Create documentation from DocBook library."
0103     TYPE OPTIONAL)
0104 
0105 find_package(KF6XmlGui ${REQUIRED_KF_VERSION} CONFIG QUIET)
0106 set_package_properties(KF6XmlGui PROPERTIES
0107     DESCRIPTION "Framework for managing menu and toolbar actions."
0108     TYPE RECOMMENDED)
0109 
0110 find_package(KF6Config ${REQUIRED_KF_VERSION} CONFIG QUIET)
0111 set_package_properties(KF6Config PROPERTIES
0112     DESCRIPTION "Persistent platform-independent application settings."
0113     TYPE REQUIRED)
0114 
0115 find_package(KF6ColorScheme ${REQUIRED_KF_VERSION} CONFIG QUIET)
0116 set_package_properties(KF6ColorScheme PROPERTIES
0117     DESCRIPTION "Allows changing the app's color scheme."
0118     TYPE REQUIRED)
0119 
0120 find_package(KF6ConfigWidgets ${REQUIRED_KF_VERSION} CONFIG QUIET)
0121 set_package_properties(KF6ConfigWidgets PROPERTIES
0122     DESCRIPTION "Widgets for configuration dialogs."
0123     TYPE RECOMMENDED)
0124 
0125 find_package(KF6Crash ${REQUIRED_KF_VERSION} CONFIG QUIET)
0126 set_package_properties(KF6Crash PROPERTIES
0127     DESCRIPTION "Graceful handling of application crashes."
0128     TYPE OPTIONAL)
0129 
0130 if (NOT WIN32 AND NOT ANDROID)
0131     find_package(KF6DBusAddons ${REQUIRED_KF_VERSION} CONFIG QUIET)
0132     set_package_properties(KF6DBusAddons PROPERTIES
0133         DESCRIPTION "Convenience classes for D-Bus."
0134         TYPE OPTIONAL)
0135 endif()
0136 
0137 if (NOT ANDROID)
0138     find_package(KF6KIO ${REQUIRED_KF_VERSION} CONFIG QUIET)
0139     set_package_properties(KF6KIO PROPERTIES
0140         DESCRIPTION "File management libraries used for file browsing."
0141         TYPE REQUIRED)
0142     find_package(KF6QQC2DesktopStyle ${REQUIRED_KF_VERSION} CONFIG QUIET)
0143     set_package_properties(KF6QQC2DesktopStyle PROPERTIES
0144         DESCRIPTION "KDE QtQuick style for desktop"
0145         TYPE REQUIRED)
0146 endif()
0147 
0148 find_package(UPNPQT CONFIG QUIET)
0149 set_package_properties(UPNPQT PROPERTIES
0150     DESCRIPTION "UPNP layer build with Qt. UPnP support is currently broken. You should probably avoid this dependency."
0151     URL "https://gitlab.com/homeautomationqt/upnp-player-qt"
0152     TYPE OPTIONAL)
0153 
0154 if (UPNPQT_FOUND)
0155     message(WARNING "UPnP support is experimental and may not work.")
0156 endif()
0157 
0158 find_package(LIBVLC QUIET)
0159 set_package_properties(LIBVLC PROPERTIES
0160     DESCRIPTION "libvlc allows to play music in Elisa (otherwise it will use QtMultimedia)"
0161     URL "https://www.videolan.org/vlc/libvlc.html"
0162     TYPE RECOMMENDED)
0163 
0164 include(FeatureSummary)
0165 include(GenerateExportHeader)
0166 include(ECMSetupVersion)
0167 include(ECMGenerateHeaders)
0168 include(ECMGenerateDBusServiceFile)
0169 include(CMakePackageConfigHelpers)
0170 include(ECMDeprecationSettings)
0171 
0172 set(KFXmlGui_FOUND ${KF6XmlGui_FOUND})
0173 set(KFCrash_FOUND ${KF6Crash_FOUND})
0174 set(KFDBusAddons_FOUND ${KF6DBusAddons_FOUND})
0175 set(KFConfigWidgets_FOUND ${KF6ConfigWidgets_FOUND})
0176 set(KFKIO_FOUND ${KF6KIO_FOUND})
0177 set(KFFileMetaData_FOUND ${KF6FileMetaData_FOUND})
0178 
0179 configure_file(config-upnp-qt.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-upnp-qt.h)
0180 
0181 ecm_setup_version(${RELEASE_SERVICE_VERSION}
0182     VARIABLE_PREFIX ELISA
0183     VERSION_HEADER elisa-version.h)
0184 
0185 set(QML_IMPORT_PATH ${CMAKE_BINARY_DIR}/bin CACHE STRING "" FORCE)
0186 
0187 ecm_set_disabled_deprecation_versions(
0188     QT 5.15.2
0189     KF 5.101
0190 )
0191 
0192 
0193 add_subdirectory(src)
0194 add_subdirectory(icons)
0195 if (BUILD_TESTING)
0196     add_subdirectory(autotests)
0197 endif()
0198 add_subdirectory(doc)
0199 
0200 if (KF6DBusAddons_FOUND)
0201     ecm_generate_dbus_service_file(
0202         NAME org.kde.elisa
0203         EXECUTABLE ${KDE_INSTALL_FULL_BINDIR}/elisa
0204         DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
0205     )
0206     set(ELISA_DBUSACTIVATABLE "DBusActivatable=true")
0207 else()
0208     set(ELISA_DBUSACTIVATABLE)
0209 endif()
0210 
0211 configure_file(org.kde.elisa.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.elisa.desktop @ONLY)
0212 install(
0213     PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.elisa.desktop
0214     DESTINATION ${KDE_INSTALL_APPDIR}
0215 )
0216 
0217 install(
0218     FILES org.kde.elisa.appdata.xml
0219     DESTINATION ${KDE_INSTALL_METAINFODIR}
0220 )
0221 
0222 ki18n_install(po)
0223 if (KF6DocTools_FOUND)
0224     kdoctools_install(po)
0225 endif()
0226 
0227 install(FILES elisa.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
0228 
0229 if (ANDROID)
0230     file(COPY androidResources/icon.png androidResources/splash.xml androidResources/vendor_logo.png androidResources/splash_logo.png
0231         DESTINATION ${CMAKE_SOURCE_DIR}/data/res/drawable)
0232 
0233     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/data/version.gradle.in ${CMAKE_BINARY_DIR}/version.gradle)
0234 endif()
0235 
0236 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0237