kdeconnect-kde/interfaces/CMakeLists.txt
David Redondo e58c1a1415 Add shareinptudevices plugin
This plugin provides synergy-like behavior of sharing input devices
between machines by moving the cursor seamlessly between them.
To this end this uses the InputCapture Portal to be notified when
the cursor moves 'out of the screen'. For forwarding input
the existing mousepad infrastructure is used.
On the other side a tiny hidden plugin listens to mouse events to
track when input should pass back to source machine.
2024-07-03 12:08:03 +02:00

116 lines
6 KiB
CMake

add_definitions(-DTRANSLATION_DOMAIN=\"kdeconnect-interfaces\")
# geninterface generates a Qt class that is an interface to DBus
# source_file can a DBus XML definition or QObject class header that is exposed through DBus
# output_basename is the path and filename that will be generated (.h and .cpp will be appended to this)
# The new targets are appended to the ${interfaces_SRC} variable in the parent scope.
function(geninterface source_file output_basename)
if(${source_file} MATCHES ".*\.xml$")
set(xml_file ${source_file})
else()
set(xml_file ${CMAKE_CURRENT_BINARY_DIR}/${output_basename}.xml)
qt_generate_dbus_interface(${source_file} ${xml_file})
endif()
# Fixes "redefinition of 'MediaPlayer2' as different kind of symbol"
set_source_files_properties(${xml_file} PROPERTIES NO_NAMESPACE true)
qt_add_dbus_interface(generated_sources ${xml_file} ${output_basename})
# Hack to append clazy:skip to generated files
set(fake_file ${output_basename}_replaced)
add_custom_command(OUTPUT ${fake_file}
COMMAND ${CMAKE_COMMAND} -E echo "// clazy:skip" >> ${output_basename}.h
COMMAND ${CMAKE_COMMAND} -E touch ${fake_file}
DEPENDS ${output_basename}.h
)
set(interfaces_SRC ${interfaces_SRC} ${generated_sources} ${fake_file} PARENT_SCOPE)
endfunction()
set(interfaces_SRC
dbusinterfaces.cpp
devicesmodel.cpp
notificationsmodel.cpp
devicessortproxymodel.cpp
conversationmessage.cpp
remotecommandsmodel.cpp
remotesinksmodel.cpp
devicespluginfilterproxymodel.cpp
pluginmodel.cpp
commandsmodel.cpp
)
# KDE Connect interfaces
geninterface(${PROJECT_SOURCE_DIR}/core/daemon.h generated/daemoninterface)
geninterface(${PROJECT_SOURCE_DIR}/core/device.h generated/deviceinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/battery/batteryplugin.h generated/batteryinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/connectivity-report/connectivity_reportplugin.h generated/connectivityinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/sftp/sftpplugin.h generated/devicesftpinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/notifications/notificationsplugin.h generated/devicenotificationsinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/findmyphone/findmyphoneplugin.h generated/devicefindmyphoneinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/notifications/notification.h generated/notificationinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/mprisremote/mprisremoteplugin.h generated/mprisremoteinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/remotecontrol/remotecontrolplugin.h generated/remotecontrolinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/lockdevice/lockdeviceplugin.h generated/lockdeviceinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/remotecommands/remotecommandsplugin.h generated/remotecommandsinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/remotekeyboard/remotekeyboardplugin.h generated/remotekeyboardinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/sms/smsplugin.h generated/smsinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/sms/conversationsdbusinterface.h generated/conversationsinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/share/shareplugin.h generated/shareinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/remotesystemvolume/remotesystemvolumeplugin.h generated/remotesystemvolumeinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/bigscreen/bigscreenplugin.h generated/bigscreeninterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/virtualmonitor/virtualmonitorplugin.h generated/virtualmonitorinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/clipboard/clipboardplugin.h generated/deviceclipboardinterface)
# System dbus interfaces
if (UNIX AND NOT APPLE)
geninterface(systeminterfaces/org.freedesktop.login1.xml generated/systeminterfaces/login1)
geninterface(systeminterfaces/org.freedesktop.ScreenSaver.xml generated/systeminterfaces/screensaver)
geninterface(systeminterfaces/org.freedesktop.DBus.Properties.xml generated/systeminterfaces/dbusproperties)
geninterface(systeminterfaces/org.mpris.MediaPlayer2.Player.xml generated/systeminterfaces/mprisplayer)
geninterface(systeminterfaces/org.mpris.MediaPlayer2.xml generated/systeminterfaces/mprisroot)
geninterface(systeminterfaces/org.freedesktop.portal.RemoteDesktop.xml generated/systeminterfaces/remotedesktop)
geninterface(systeminterfaces/org.freedesktop.portal.InputCapture.xml generated/systeminterfaces/inputcapture)
geninterface(systeminterfaces/org.freedesktop.portal.Request.xml generated/systeminterfaces/request)
geninterface(systeminterfaces/org.freedesktop.portal.Session.xml generated/systeminterfaces/session)
endif()
add_library(kdeconnectinterfaces STATIC)
set_property(TARGET kdeconnectinterfaces PROPERTY POSITION_INDEPENDENT_CODE ON)
target_sources(kdeconnectinterfaces PRIVATE ${interfaces_SRC})
ecm_qt_declare_logging_category(kdeconnectinterfaces
HEADER interfaces_conversation_message_debug.h
IDENTIFIER CONVERSATION_MESSAGE_LOGGING_CATEGORY CATEGORY_NAME kdeconnect.interfaces.conversationmessage
DEFAULT_SEVERITY Warning
EXPORT kdeconnect-kde DESCRIPTION "kdeconnect (conversation message)")
ecm_qt_declare_logging_category(kdeconnectinterfaces
HEADER interfaces_debug.h
IDENTIFIER KDECONNECT_INTERFACES CATEGORY_NAME kdeconnect.interfaces
DEFAULT_SEVERITY Warning
EXPORT kdeconnect-kde DESCRIPTION "kdeconnect (interfaces)")
set_target_properties(kdeconnectinterfaces PROPERTIES
VERSION ${KDECONNECT_VERSION}
SOVERSION ${KDECONNECT_VERSION_MAJOR}
)
generate_export_header(kdeconnectinterfaces EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectinterfaces_export.h BASE_NAME KDEConnectInterfaces)
target_link_libraries(kdeconnectinterfaces
LINK_PUBLIC
Qt::Gui
Qt::DBus
KF6::ConfigCore
LINK_PRIVATE
kdeconnectcore
KF6::I18n
kdeconnectcore
KF6::CoreAddons
)
install(TARGETS kdeconnectinterfaces EXPORT kdeconnectLibraryTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)