Warning, /plasma/kpipewire/src/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 include(ECMGenerateExportHeader)
0002 include(ECMQmlModule)
0003 include(ECMGenerateHeaders)
0004 include(ECMSetupVersion)
0005 
0006 add_definitions(-DTRANSLATION_DOMAIN=\"kpipewire5\")
0007 
0008 add_library(KPipeWire)
0009 
0010 ecm_qt_declare_logging_category(kpipewire_SRCS
0011                             HEADER logging.h
0012                             IDENTIFIER PIPEWIRE_LOGGING
0013                             CATEGORY_NAME kpipewire_logging
0014                             DESCRIPTION "PipeWire components for KDE"
0015                             EXPORT KPipeWire)
0016 ecm_qt_declare_logging_category(kpipewiredmabuf_SRCS
0017                             HEADER logging_dmabuf.h
0018                             IDENTIFIER PIPEWIREDMABUF_LOGGING
0019                             CATEGORY_NAME kpipewire_dmabuf_logging
0020                             DESCRIPTION "PipeWire and DMABuf components for KDE"
0021                             EXPORT KPipeWireDmaBuf)
0022 ecm_qt_declare_logging_category(kpipewirerecord_SRCS
0023                             HEADER logging_record.h
0024                             IDENTIFIER PIPEWIRERECORD_LOGGING
0025                             CATEGORY_NAME kpipewire_record_logging
0026                             DESCRIPTION "PipeWire and FFmpeg components for KDE"
0027                             EXPORT KPipeWireRecord)
0028 ecm_qt_install_logging_categories(
0029     EXPORT KPipeWire
0030     FILE kpipewire.categories
0031     DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0032 )
0033 
0034 ecm_qt_install_logging_categories(
0035     EXPORT KPipeWireRecord
0036     FILE kpipewirerecord.categories
0037     DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0038 )
0039 
0040 target_sources(KPipeWire PRIVATE
0041     pipewirecore.cpp
0042     pipewiresourceitem.cpp
0043     pipewiresourcestream.cpp
0044     glhelpers.cpp
0045     pwhelpers.cpp
0046     ${kpipewire_SRCS}
0047 )
0048 
0049 target_link_libraries(KPipeWire PRIVATE Qt::Quick Qt::GuiPrivate KF5::I18n
0050     KF5::CoreAddons PkgConfig::PipeWire epoxy::epoxy PkgConfig::GBM)
0051 
0052 target_compile_definitions(KPipeWire INTERFACE -DKPW_WITH_SOURCESIZE=1)
0053 
0054 if (QT_MAJOR_VERSION EQUAL "5")
0055     target_link_libraries(KPipeWire PRIVATE Qt5::Gui_EGL)
0056     if (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GLESv2")
0057         target_link_libraries(KPipeWire PRIVATE Qt5::Gui_GLESv2)
0058     else()
0059         target_link_libraries(KPipeWire PRIVATE Qt5::Gui_GL)
0060     endif()
0061 else()
0062     target_link_libraries(KPipeWire PRIVATE EGL::EGL)
0063 endif()
0064 
0065 target_include_directories(KPipeWire PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
0066                                      PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>" ${PipeWire_INCLUDE_DIRS}
0067                                      INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPipeWire>")
0068 set_target_properties(KPipeWire PROPERTIES
0069                              VERSION ${PROJECT_VERSION}
0070                              SOVERSION ${PROJECT_VERSION_MAJOR}
0071                       )
0072 
0073 ecm_generate_export_header(KPipeWire
0074     BASE_NAME KPipeWire
0075     VERSION ${PROJECT_VERSION}
0076 )
0077 
0078 ecm_generate_headers(KPipeWire_HEADERS
0079   HEADER_NAMES
0080   PipeWireSourceStream
0081   PipeWireSourceItem
0082   REQUIRED_HEADERS KPipeWire_HEADERS
0083 )
0084 
0085 install(FILES
0086   ${KPipeWire_HEADERS}
0087   ${CMAKE_CURRENT_BINARY_DIR}/kpipewire_export.h
0088   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0089 )
0090 
0091 add_library(KPipeWireDmaBuf dmabufhandler.cpp ${kpipewiredmabuf_SRCS})
0092 target_link_libraries(KPipeWireDmaBuf PUBLIC KPipeWire
0093     PRIVATE Qt::Core Qt::Gui PkgConfig::GBM
0094     epoxy::epoxy Libdrm::Libdrm Qt::GuiPrivate
0095 )
0096 
0097 set_target_properties(KPipeWireDmaBuf PROPERTIES
0098                              VERSION ${PROJECT_VERSION}
0099                              SOVERSION ${PROJECT_VERSION_MAJOR}
0100                       )
0101 
0102 ecm_generate_export_header(KPipeWireDmaBuf
0103     BASE_NAME KPipeWireDmaBuf
0104     VERSION ${PROJECT_VERSION}
0105 )
0106 
0107 ecm_generate_headers(KPipeWireDmaBuf_HEADERS
0108   HEADER_NAMES
0109     DmaBufHandler
0110   REQUIRED_HEADERS KPipeWireDmaBuf_HEADERS
0111 )
0112 
0113 install(FILES
0114   ${KPipeWireDmaBuf_HEADERS}
0115   ${CMAKE_CURRENT_BINARY_DIR}/kpipewiredmabuf_export.h
0116   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0117 )
0118 
0119 add_library(KPipeWireRecord pipewirerecord.cpp ${kpipewirerecord_SRCS})
0120 target_link_libraries(KPipeWireRecord PUBLIC KPipeWire
0121     PRIVATE Qt::Core Qt::Gui KF5::CoreAddons KPipeWireDmaBuf
0122     PkgConfig::AVCodec PkgConfig::AVUtil PkgConfig::AVFormat PkgConfig::GBM PkgConfig::SWScale
0123     epoxy::epoxy Libdrm::Libdrm Qt::GuiPrivate
0124 )
0125 
0126 target_compile_definitions(KPipeWireRecord INTERFACE -DKPW_WITH_SUGGESTED=1)
0127 
0128 ecm_generate_headers(KPipeWireRecord_HEADERS
0129   HEADER_NAMES
0130   PipeWireRecord
0131   REQUIRED_HEADERS KPipeWireRecord_HEADERS
0132 )
0133 set_target_properties(KPipeWireRecord PROPERTIES
0134                              VERSION ${PROJECT_VERSION}
0135                              SOVERSION ${PROJECT_VERSION_MAJOR}
0136                       )
0137 
0138 install(FILES
0139   ${KPipeWireRecord_HEADERS}
0140   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0141 )
0142 
0143 install(TARGETS KPipeWire KPipeWireRecord KPipeWireDmaBuf EXPORT KPipeWireTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0144 
0145 
0146 ecm_setup_version(PROJECT VARIABLE_PREFIX KPIPEWIRE
0147                         VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kpipewire_version.h"
0148                         PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfigVersion.cmake"
0149                         SOVERSION 5)
0150 
0151 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPipeWire")
0152 install(EXPORT KPipeWireTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KPipeWireTargets.cmake NAMESPACE K::)
0153 
0154 configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KPipeWireConfig.cmake.in"
0155                               "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfig.cmake"
0156                               INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0157                               )
0158 install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfig.cmake"
0159                "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfigVersion.cmake"
0160         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0161         COMPONENT Devel )
0162 
0163 
0164 #################
0165 # Declarative
0166 
0167 ecm_add_qml_module(KPipeWireDeclarative URI "org.kde.pipewire" VERSION 1.0)
0168 target_sources(KPipeWireDeclarative PRIVATE kpipewiredeclarativeplugin.cpp)
0169 target_link_libraries(KPipeWireDeclarative PRIVATE KPipeWire Qt::Quick)
0170 ecm_finalize_qml_module(KPipeWireDeclarative DESTINATION ${KDE_INSTALL_QMLDIR})
0171 
0172 ecm_add_qml_module(KPipeWireRecordDeclarative URI "org.kde.pipewire.record" VERSION 1.0)
0173 target_sources(KPipeWireRecordDeclarative PRIVATE kpipewirerecorddeclarativeplugin.cpp)
0174 target_link_libraries(KPipeWireRecordDeclarative PRIVATE KPipeWire KPipeWireRecord Qt::Quick)
0175 ecm_finalize_qml_module(KPipeWireRecordDeclarative DESTINATION ${KDE_INSTALL_QMLDIR})
0176