mirror of https://github.com/KDE/kasts.git
159 lines
4.7 KiB
CMake
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()
|