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