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)