kasts/src/kmediasession/CMakeLists.txt

159 lines
4.7 KiB
CMake

# SPDX-License-Identifier: BSD-2-Clause
# SPDX-FileCopyrightText: 2022-2023 Bart De Vries <bart@mogwai.be>
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH})
option(BUILD_EXAMPLE_PLAYER "Build and install example audio backend player" OFF)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Qml Multimedia)
find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons I18n)
if (NOT ANDROID)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS DBus Widgets)
endif()
find_package(LIBVLC)
set_package_properties(LIBVLC PROPERTIES
DESCRIPTION "Allows to play audio using libVLC as backend"
URL "https://www.videolan.org/vlc/libvlc.html"
TYPE RECOMMENDED)
option(BUILD_GSTREAMER_BACKEND "Build gstreamer audio backend" ON)
if (BUILD_GSTREAMER_BACKEND)
find_package(PkgConfig REQUIRED) #finding pkg-config is a helper tool
#using pkg-config to getting Gstreamer
pkg_check_modules(GSTREAMER IMPORTED_TARGET gstreamer-1.0)
endif()
#########################################
add_subdirectory(qml)
set(kmediasession_srcs
kmediasession.cpp
metadata.cpp
mediabackends/abstractmediabackend.h
mediabackends/qtmediabackend.cpp
powermanagement/powermanagementinterface.cpp
mpris2/mpris2.cpp
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "kmediasessionlogging.h"
IDENTIFIER "KMediaSessionLog"
CATEGORY_NAME "org.kde.kmediasession.kmediasession"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "powermanagementinterfacelogging.h"
IDENTIFIER "KMediaSessionPowerManagementInterface"
CATEGORY_NAME "org.kde.kmediasession.powermanagementinterface"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "qtmediabackendlogging.h"
IDENTIFIER "QtMediaBackendLog"
CATEGORY_NAME "org.kde.kmediasession.qtmediabackend"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "mpris2logging.h"
IDENTIFIER "Mpris2Log"
CATEGORY_NAME "org.kde.kmediasession.mpris2"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "metadatalogging.h"
IDENTIFIER "MetaDataLog"
CATEGORY_NAME "org.kde.kmediasession.metadata"
DEFAULT_SEVERITY Info
)
if(ANDROID)
list(APPEND kmediasession_srcs
androidlogging.h
)
else()
list(APPEND kmediasession_srcs
mpris2/mediaplayer2.cpp
mpris2/mediaplayer2player.cpp
)
qt_add_dbus_interface(kmediasession_srcs dbus-interfaces/org.freedesktop.PowerManagement.Inhibit.xml inhibitinterface)
qt_add_dbus_interface(kmediasession_srcs dbus-interfaces/org.gnome.SessionManager.xml gnomesessioninterface)
endif()
if (LIBVLC_FOUND)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "vlcmediabackendlogging.h"
IDENTIFIER "VlcMediaBackendLog"
CATEGORY_NAME "org.kde.kmediasession.vlcmediabackend"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "vlcsignalslogging.h"
IDENTIFIER "VlcSignalsLog"
CATEGORY_NAME "org.kde.kmediasession.vlcsignals"
DEFAULT_SEVERITY Info
)
list(APPEND kmediasession_srcs
mediabackends/vlcmediabackend.cpp
)
set(HAVE_LIBVLC ON)
endif()
if (GSTREAMER_FOUND)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "gstmediabackendlogging.h"
IDENTIFIER "GstMediaBackendLog"
CATEGORY_NAME "org.kde.kmediasession.gstmediabackend"
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(kmediasession_srcs
HEADER "gstsignalslogging.h"
IDENTIFIER "GstSignalsLog"
CATEGORY_NAME "org.kde.kmediasession.gstsignals"
DEFAULT_SEVERITY Info
)
list(APPEND kmediasession_srcs
mediabackends/gstmediabackend.cpp
)
set(HAVE_GST ON)
endif()
configure_file(config-kmediasession.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kmediasession.h)
add_library(KMediaSession ${kmediasession_srcs})
generate_export_header(KMediaSession BASE_NAME KMediaSession)
target_include_directories(KMediaSession PUBLIC ${CMAKE_BINARY_DIR})
target_link_libraries(KMediaSession PUBLIC Qt::Core)
target_link_libraries(KMediaSession PRIVATE
Qt::Multimedia
KF6::CoreAddons
KF6::I18n
)
if (LIBVLC_FOUND)
target_link_libraries(KMediaSession PRIVATE LIBVLC::LIBVLC)
endif()
if (GSTREAMER_FOUND)
target_link_libraries(KMediaSession PRIVATE PkgConfig::GSTREAMER)
endif()
if (ANDROID)
else()
target_link_libraries(KMediaSession PRIVATE Qt::DBus)
endif()
install(TARGETS KMediaSession ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
if (BUILD_EXAMPLE_PLAYER)
add_subdirectory(example-app)
endif()