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=\"kpipewire6\")
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                             DEFAULT_SEVERITY Warning
0015                             DESCRIPTION "PipeWire components for KDE"
0016                             EXPORT KPipeWire)
0017 ecm_qt_declare_logging_category(kpipewiredmabuf_SRCS
0018                             HEADER logging_dmabuf.h
0019                             IDENTIFIER PIPEWIREDMABUF_LOGGING
0020                             CATEGORY_NAME kpipewire_dmabuf_logging
0021                             DEFAULT_SEVERITY Warning
0022                             DESCRIPTION "PipeWire and DMABuf components for KDE"
0023                             EXPORT KPipeWireDmaBuf)
0024 ecm_qt_declare_logging_category(kpipewirerecord_SRCS
0025                             HEADER logging_record.h
0026                             IDENTIFIER PIPEWIRERECORD_LOGGING
0027                             CATEGORY_NAME kpipewire_record_logging
0028                             DEFAULT_SEVERITY Warning
0029                             DESCRIPTION "PipeWire and FFmpeg components for KDE"
0030                             EXPORT KPipeWireRecord)
0031 ecm_qt_declare_logging_category(kpipewirerecord_SRCS
0032                             HEADER logging_libav.h
0033                             IDENTIFIER PIPEWIRELIBAV_LOGGING
0034                             CATEGORY_NAME kpipewire_libav_logging
0035                             DEFAULT_SEVERITY Warning
0036                             DESCRIPTION "PipeWire components for KDE - libav log output"
0037                             DEFAULT_SEVERITY Info)
0038 
0039 ecm_qt_install_logging_categories(
0040     EXPORT KPipeWire
0041     FILE kpipewire.categories
0042     DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0043 )
0044 
0045 ecm_qt_install_logging_categories(
0046     EXPORT KPipeWireRecord
0047     FILE kpipewirerecord.categories
0048     DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0049 )
0050 
0051 target_sources(KPipeWire PRIVATE
0052     pipewirecore.cpp
0053     pipewiresourceitem.cpp
0054     pipewiresourcestream.cpp
0055     glhelpers.cpp
0056     pwhelpers.cpp
0057     ${kpipewire_SRCS}
0058 )
0059 
0060 # these are features pipewire use extensively and make it hard to look at compile logs
0061 target_compile_options(KPipeWire PUBLIC -Wno-gnu-statement-expression-from-macro-expansion -Wno-zero-as-null-pointer-constant -Wno-c99-extensions -Wno-cast-align)
0062 
0063 target_link_libraries(KPipeWire PRIVATE Qt::Quick Qt::GuiPrivate KF6::I18n
0064     KF6::CoreAddons PkgConfig::PipeWire epoxy::epoxy PkgConfig::GBM Libdrm::Libdrm)
0065 
0066 target_link_libraries(KPipeWire PRIVATE EGL::EGL)
0067 
0068 target_include_directories(KPipeWire PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
0069                                      PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>" ${PipeWire_INCLUDE_DIRS}
0070                                      INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPipeWire>")
0071 set_target_properties(KPipeWire PROPERTIES
0072                              VERSION ${PROJECT_VERSION}
0073                              SOVERSION ${PROJECT_VERSION_MAJOR}
0074                       )
0075 
0076 ecm_generate_export_header(KPipeWire
0077     BASE_NAME KPipeWire
0078     VERSION ${PROJECT_VERSION}
0079 )
0080 
0081 ecm_generate_headers(KPipeWire_HEADERS
0082   HEADER_NAMES
0083   PipeWireSourceStream
0084   PipeWireSourceItem
0085   REQUIRED_HEADERS KPipeWire_HEADERS
0086 )
0087 
0088 install(FILES
0089   ${KPipeWire_HEADERS}
0090   ${CMAKE_CURRENT_BINARY_DIR}/kpipewire_export.h
0091   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0092 )
0093 
0094 add_library(KPipeWireDmaBuf dmabufhandler.cpp ${kpipewiredmabuf_SRCS})
0095 target_link_libraries(KPipeWireDmaBuf PUBLIC KPipeWire
0096     PRIVATE Qt::Core Qt::Gui PkgConfig::GBM
0097     epoxy::epoxy Libdrm::Libdrm Qt::GuiPrivate
0098 )
0099 
0100 set_target_properties(KPipeWireDmaBuf PROPERTIES
0101                              VERSION ${PROJECT_VERSION}
0102                              SOVERSION ${PROJECT_VERSION_MAJOR}
0103                       )
0104 
0105 ecm_generate_export_header(KPipeWireDmaBuf
0106     BASE_NAME KPipeWireDmaBuf
0107     VERSION ${PROJECT_VERSION}
0108 )
0109 
0110 ecm_generate_headers(KPipeWireDmaBuf_HEADERS
0111   HEADER_NAMES
0112     DmaBufHandler
0113   REQUIRED_HEADERS KPipeWireDmaBuf_HEADERS
0114 )
0115 
0116 install(FILES
0117   ${KPipeWireDmaBuf_HEADERS}
0118   ${CMAKE_CURRENT_BINARY_DIR}/kpipewiredmabuf_export.h
0119   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0120 )
0121 
0122 add_library(KPipeWireRecord ${kpipewirerecord_SRCS}
0123                             pipewirebaseencodedstream.cpp
0124                             pipewireencodedstream.cpp
0125                             pipewirerecord.cpp
0126                             pipewireproduce.cpp
0127                             vaapiutils.cpp
0128                             encoder.cpp
0129                             h264vaapiencoder.cpp
0130                             libx264encoder.cpp
0131                             libvpxencoder.cpp
0132                             libvpxvp9encoder.cpp
0133 )
0134 target_link_libraries(KPipeWireRecord PUBLIC KPipeWire
0135     PRIVATE Qt::Core Qt::Gui KF6::CoreAddons KPipeWireDmaBuf
0136     PkgConfig::AVCodec PkgConfig::AVUtil PkgConfig::AVFormat PkgConfig::AVFilter PkgConfig::GBM PkgConfig::SWScale
0137     epoxy::epoxy Libdrm::Libdrm Qt::GuiPrivate PkgConfig::LIBVA PkgConfig::LIBVA-drm
0138 )
0139 
0140 ecm_generate_headers(KPipeWireRecord_HEADERS
0141   HEADER_NAMES
0142   PipeWireRecord
0143   PipeWireEncodedStream
0144   PipeWireBaseEncodedStream
0145   REQUIRED_HEADERS KPipeWireRecord_HEADERS
0146 )
0147 set_target_properties(KPipeWireRecord PROPERTIES
0148                              VERSION ${PROJECT_VERSION}
0149                              SOVERSION ${PROJECT_VERSION_MAJOR}
0150                       )
0151 
0152 install(FILES
0153   ${KPipeWireRecord_HEADERS}
0154   ${CMAKE_CURRENT_BINARY_DIR}/kpipewire_version.h
0155   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPipeWire COMPONENT Devel
0156 )
0157 
0158 install(TARGETS KPipeWire KPipeWireRecord KPipeWireDmaBuf EXPORT KPipeWireTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0159 
0160 
0161 ecm_setup_version(PROJECT VARIABLE_PREFIX KPIPEWIRE
0162                         VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kpipewire_version.h"
0163                         PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfigVersion.cmake"
0164                         SOVERSION ${PROJECT_VERSION_MAJOR})
0165 
0166 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPipeWire")
0167 install(EXPORT KPipeWireTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KPipeWireTargets.cmake NAMESPACE K::)
0168 
0169 configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KPipeWireConfig.cmake.in"
0170                               "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfig.cmake"
0171                               INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0172                               )
0173 install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfig.cmake"
0174                "${CMAKE_CURRENT_BINARY_DIR}/KPipeWireConfigVersion.cmake"
0175         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0176         COMPONENT Devel )
0177 
0178 
0179 #################
0180 # Declarative
0181 
0182 ecm_add_qml_module(KPipeWireDeclarative URI "org.kde.pipewire" VERSION 1.0)
0183 target_sources(KPipeWireDeclarative PRIVATE kpipewiredeclarativeplugin.cpp)
0184 target_link_libraries(KPipeWireDeclarative PRIVATE KPipeWire Qt::Quick)
0185 ecm_finalize_qml_module(KPipeWireDeclarative DESTINATION ${KDE_INSTALL_QMLDIR})
0186 
0187 ecm_add_qml_module(KPipeWireRecordDeclarative URI "org.kde.pipewire.record" VERSION 1.0)
0188 target_sources(KPipeWireRecordDeclarative PRIVATE kpipewirerecorddeclarativeplugin.cpp)
0189 target_link_libraries(KPipeWireRecordDeclarative PRIVATE KPipeWire KPipeWireRecord Qt::Quick)
0190 ecm_finalize_qml_module(KPipeWireRecordDeclarative DESTINATION ${KDE_INSTALL_QMLDIR})
0191 
0192 add_subdirectory(monitors)