kwin/src/CMakeLists.txt
Vlad Zahorodnii bf48c3b80d scene: Remove dnd icon hack
Currently, kwin blits the dnd icon onto the cursor image. This doesn't
work on mobile because the cursor is usually hidden there.

As a short term solution, put the dnd icon in the Scene. In the future,
it needs to be put in its own render layer.
2022-12-15 19:19:37 +00:00

367 lines
9.8 KiB
CMake

# for things that are also used by kwin libraries
configure_file(libkwineffects/kwinconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects/kwinconfig.h)
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h)
set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml)
qt_add_dbus_interface(effects_interface_SRCS ${kwin_effects_dbus_xml} kwineffects_interface)
add_library(KWinEffectsInterface STATIC ${effects_interface_SRCS})
set_property(TARGET KWinEffectsInterface PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(KWinEffectsInterface Qt::DBus)
add_subdirectory(effects)
add_subdirectory(scripts)
add_subdirectory(tabbox)
add_subdirectory(scripting)
add_subdirectory(helpers)
add_subdirectory(qml)
add_subdirectory(libkwineffects)
if (KWIN_BUILD_KCMS)
add_subdirectory(kcmkwin)
endif()
add_library(kwin SHARED)
set_target_properties(kwin PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
target_sources(kwin PRIVATE
3rdparty/xcursor.c
activation.cpp
appmenu.cpp
atoms.cpp
client_machine.cpp
colors/colordevice.cpp
colors/colormanager.cpp
composite.cpp
core/colorlut.cpp
core/colorpipelinestage.cpp
core/colortransformation.cpp
core/inputbackend.cpp
core/inputdevice.cpp
core/output.cpp
core/outputbackend.cpp
core/outputconfiguration.cpp
core/outputlayer.cpp
core/overlaywindow.cpp
core/renderbackend.cpp
core/renderjournal.cpp
core/renderlayer.cpp
core/renderlayerdelegate.cpp
core/renderloop.cpp
core/rendertarget.cpp
core/session.cpp
core/session_consolekit.cpp
core/session_logind.cpp
core/session_noop.cpp
cursor.cpp
cursordelegate_opengl.cpp
cursordelegate_qpainter.cpp
cursorsource.cpp
dbusinterface.cpp
debug_console.cpp
decorationitem.cpp
decorations/decoratedclient.cpp
decorations/decorationbridge.cpp
decorations/decorationpalette.cpp
decorations/decorations_logging.cpp
decorations/settings.cpp
deleted.cpp
dmabuftexture.cpp
dndiconitem.cpp
dpmsinputeventfilter.cpp
effectloader.cpp
effects.cpp
events.cpp
focuschain.cpp
ftrace.cpp
gestures.cpp
globalshortcuts.cpp
group.cpp
hide_cursor_spy.cpp
idle_inhibition.cpp
idledetector.cpp
input.cpp
input_event.cpp
input_event_spy.cpp
inputmethod.cpp
inputpanelv1integration.cpp
inputpanelv1window.cpp
internalwindow.cpp
item.cpp
keyboard_input.cpp
keyboard_layout.cpp
keyboard_layout_switching.cpp
keyboard_repeat.cpp
killwindow.cpp
layers.cpp
layershellv1integration.cpp
layershellv1window.cpp
linux_dmabuf.cpp
main.cpp
modifier_only_shortcuts.cpp
mousebuttons.cpp
moving_client_x11_filter.cpp
netinfo.cpp
onscreennotification.cpp
options.cpp
osd.cpp
outline.cpp
placeholderinputeventfilter.cpp
placeholderoutput.cpp
placement.cpp
placementtracker.cpp
plugin.cpp
pluginmanager.cpp
pointer_input.cpp
popup_input_filter.cpp
rootinfo_filter.cpp
rulebooksettings.cpp
rules.cpp
scene.cpp
screenedge.cpp
scripting/dbuscall.cpp
scripting/desktopbackgrounditem.cpp
scripting/screenedgeitem.cpp
scripting/scriptedeffect.cpp
scripting/scripting.cpp
scripting/scripting_logging.cpp
scripting/scriptingutils.cpp
scripting/tilemodel.cpp
scripting/v2/clientmodel.cpp
scripting/v3/clientmodel.cpp
scripting/v3/virtualdesktopmodel.cpp
scripting/windowthumbnailitem.cpp
scripting/workspace_wrapper.cpp
shadow.cpp
shadowitem.cpp
sm.cpp
surfaceitem.cpp
surfaceitem_internal.cpp
surfaceitem_wayland.cpp
surfaceitem_x11.cpp
syncalarmx11filter.cpp
tablet_input.cpp
tabletmodemanager.cpp
tiles/customtile.cpp
tiles/quicktile.cpp
tiles/tile.cpp
tiles/tilemanager.cpp
touch_input.cpp
unmanaged.cpp
useractions.cpp
virtualdesktops.cpp
virtualdesktopsdbustypes.cpp
virtualkeyboard_dbus.cpp
was_user_interaction_x11_filter.cpp
wayland_server.cpp
waylandshellintegration.cpp
waylandwindow.cpp
window.cpp
window_property_notify_x11_filter.cpp
windowitem.cpp
workspace.cpp
x11eventfilter.cpp
x11syncmanager.cpp
x11window.cpp
xdgactivationv1.cpp
xdgshellintegration.cpp
xdgshellwindow.cpp
xkb.cpp
xwaylandwindow.cpp
)
target_link_libraries(kwin
kwineffects
kwinglutils
Qt::Concurrent
Qt::DBus
Qt::Quick
KF5::ConfigCore
KF5::ConfigWidgets
KF5::CoreAddons
KF5::Crash
KF5::GlobalAccel
KF5::GlobalAccelPrivate
KF5::I18n
KF5::Package
KF5::Service
KF5::WindowSystem
KDecoration2::KDecoration
KDecoration2::KDecoration2Private
XCB::COMPOSITE
XCB::CURSOR
XCB::DAMAGE
XCB::GLX
XCB::ICCCM
XCB::KEYSYMS
XCB::RANDR
XCB::RENDER
XCB::SHAPE
XCB::SHM
XCB::SYNC
XCB::XCB
XCB::XFIXES
XCB::XINERAMA
UDev::UDev
XKB::XKB
EGL::EGL
epoxy::epoxy
Threads::Threads
Wayland::Server
lcms2::lcms2
)
if (QT_MAJOR_VERSION EQUAL "5")
target_link_libraries(kwin Qt5::X11Extras Qt5::XkbCommonSupportPrivate)
endif()
if (KWIN_BUILD_NOTIFICATIONS)
target_link_libraries(kwin KF5::Notifications)
endif()
kconfig_add_kcfg_files(kwin
settings.kcfgc
rulesettings.kcfgc
rulebooksettingsbase.kcfgc
)
ki18n_wrap_ui(kwin
debug_console.ui
shortcutdialog.ui
)
set(kwin_dbus_SRCS)
qt_add_dbus_adaptor(kwin_dbus_SRCS scripting/org.kde.kwin.Script.xml scripting/scripting.h KWin::AbstractScript)
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface)
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.kwin.Compositing.xml dbusinterface.h KWin::CompositorDBusInterface)
qt_add_dbus_adaptor(kwin_dbus_SRCS ${kwin_effects_dbus_xml} effects.h KWin::EffectsHandlerImpl)
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.VirtualDesktopManager.xml dbusinterface.h KWin::VirtualDesktopManagerDBusInterface)
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.Session.xml sm.h KWin::SessionManager)
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.Plugins.xml dbusinterface.h KWin::PluginManagerDBusInterface)
qt_add_dbus_interface(kwin_dbus_SRCS org.freedesktop.DBus.Properties.xml dbusproperties_interface)
if (KWIN_BUILD_SCREENLOCKER)
qt_add_dbus_interface(kwin_dbus_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/kf5_org.freedesktop.ScreenSaver.xml screenlocker_interface)
qt_add_dbus_interface(kwin_dbus_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/org.kde.screensaver.xml kscreenlocker_interface)
endif()
qt_add_dbus_interface(kwin_dbus_SRCS org.kde.kappmenu.xml appmenu_interface)
target_sources(kwin PRIVATE
${kwin_dbus_SRCS}
)
add_subdirectory(backends)
add_subdirectory(scenes)
add_subdirectory(utils)
add_subdirectory(wayland)
add_subdirectory(xwayland)
if (KWIN_BUILD_ACTIVITIES)
target_sources(kwin PRIVATE activities.cpp)
target_link_libraries(kwin KF5::Activities)
endif()
if (KWIN_BUILD_SCREENLOCKER)
target_sources(kwin PRIVATE screenlockerwatcher.cpp)
target_link_libraries(kwin PW::KScreenLocker)
endif()
if (KWIN_BUILD_TABBOX)
target_sources(kwin PRIVATE
tabbox/clientmodel.cpp
tabbox/desktopchain.cpp
tabbox/desktopmodel.cpp
tabbox/switcheritem.cpp
tabbox/tabbox.cpp
tabbox/tabbox_logging.cpp
tabbox/tabboxconfig.cpp
tabbox/tabboxhandler.cpp
tabbox/x11_filter.cpp
)
target_link_libraries(kwin Qt::GuiPrivate)
endif()
qt_generate_dbus_interface(virtualkeyboard_dbus.h org.kde.kwin.VirtualKeyboard.xml OPTIONS -A)
qt_generate_dbus_interface(tabletmodemanager.h org.kde.KWin.TabletModeManager.xml OPTIONS -A)
generate_export_header(kwin EXPORT_FILE_NAME kwin_export.h)
add_executable(kwin_x11 main_x11.cpp)
target_link_libraries(kwin_x11
KWinX11Platform
kwin
)
kcoreaddons_target_static_plugins(kwin_x11 "kwin/effects/plugins")
install(TARGETS kwin ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
install(TARGETS kwin_x11 ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
add_executable(kwin_wayland main_wayland.cpp)
target_link_libraries(kwin_wayland
kwin
KWinXwaylandServerModule
)
kcoreaddons_target_static_plugins(kwin_wayland "kwin/effects/plugins")
install(TARGETS kwin_wayland ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
if (HAVE_LIBCAP)
install(
CODE "execute_process(
COMMAND
${SETCAP_EXECUTABLE}
CAP_SYS_NICE=+ep
\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/kwin_wayland)"
)
endif()
add_subdirectory(platformsupport)
add_subdirectory(plugins)
target_link_libraries(kwin_wayland
KWinQpaPlugin
KF5GlobalAccelKWinPlugin
KF5WindowSystemKWinPlugin
KF5IdleTimeKWinPlugin
)
add_custom_target(
KWinDBusInterfaces
ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kwin.VirtualKeyboard.xml
${CMAKE_CURRENT_BINARY_DIR}/org.kde.KWin.TabletModeManager.xml
)
if (PipeWire_FOUND)
target_link_libraries(kwin_wayland KWinScreencastPlugin)
endif()
install(FILES kwin.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
if (KWIN_BUILD_NOTIFICATIONS)
install(FILES kwin.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
endif()
install(
FILES
org.kde.KWin.VirtualDesktopManager.xml
org.kde.KWin.xml
org.kde.kwin.Compositing.xml
org.kde.kwin.Effects.xml
org.kde.KWin.Plugins.xml
${CMAKE_CURRENT_BINARY_DIR}/org.kde.kwin.VirtualKeyboard.xml
${CMAKE_CURRENT_BINARY_DIR}/org.kde.KWin.TabletModeManager.xml
DESTINATION
${KDE_INSTALL_DBUSINTERFACEDIR}
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kwin_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR} COMPONENT Devel)
# Install the KWin/Script service type
install(FILES scripting/kwinscript.desktop DESTINATION ${KDE_INSTALL_KSERVICETYPESDIR})