diff --git a/CMakeLists.txt b/CMakeLists.txt index 0135bb1f74..702eed3c61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,380 +1,380 @@ project(KDEBASE_WORKSPACE) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) set(QT_MIN_VERSION "5.2.0") # Used e.g. in KDE4WorkspaceConfig.cmake, Alex set(KDE4WORKSPACE_VERSION_MAJOR 4) set(KDE4WORKSPACE_VERSION_MINOR 90) set(KDE4WORKSPACE_VERSION_PATCH 1) set(KDE4WORKSPACE_VERSION ${KDE4WORKSPACE_VERSION_MAJOR}.${KDE4WORKSPACE_VERSION_MINOR}.${KDE4WORKSPACE_VERSION_PATCH} ) set(GENERIC_LIB_SOVERSION ${KDE4WORKSPACE_VERSION_MAJOR}) set(GENERIC_LIB_VERSION "${KDE4WORKSPACE_VERSION_MAJOR}.${KDE4WORKSPACE_VERSION_MINOR}.${KDE4WORKSPACE_VERSION_PATCH}") # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH} ) ################# set KDE specific information ################# find_package(ECM 0.0.8 REQUIRED NO_MODULE) include(FeatureSummary) include(WriteBasicConfigVersionFile) # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(ECMMarkNonGuiExecutable) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings) include(ECMOptionalAddSubdirectory) include(ECMInstallIcons) #TODO: this was coming from KDELibs4, we need a replacement set(KDE_PLATFORM_PROFILE "Desktop") find_package(Qt5 CONFIG REQUIRED COMPONENTS Core DBus Quick Widgets Concurrent X11Extras Test UiTools) find_package(Qt5WebKitWidgets) #include(ConfigureChecks.cmake) add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) # Load the frameworks we need find_package(KF5 CONFIG REQUIRED IdleTime ItemModels WidgetsAddons WindowSystem Codecs Archive CoreAddons Solid ThreadWeaver Config Auth JS JsEmbed Wallet DBusAddons Sonnet GlobalAccel I18n GuiAddons Service ConfigWidgets ItemViews Notifications IconThemes FrameworkIntegration Completion JobWidgets TextWidgets XmlGui Crash Bookmarks UnitConversion KIO KCMUtils Parts Kross NotifyConfig Su DocTools NewStuff KHtml Declarative Init Runner Activities Plasma) find_package(KF5PlasmaQuick REQUIRED NO_MODULE) find_package(UDev) #PowerDevil upower/udev backend # needed for set_package_properties macro find_package(KF5KDE4Support REQUIRED NO_MODULE) find_package(ZLIB) set_package_properties(ZLIB PROPERTIES DESCRIPTION "Support for gzip compressed files and data streams" URL "http://www.zlib.net" TYPE REQUIRED ) find_package(DBusMenuQt5) set_package_properties(DBusMenuQt5 PROPERTIES DESCRIPTION "Support for notification area menus via the DBusMenu protocol" URL "https://launchpad.net/libdbusmenu-qt" TYPE OPTIONAL ) find_package(QImageBlitz) set_package_properties(QImageBlitz PROPERTIES DESCRIPTION "An image effects library" URL "http://sourceforge.net/projects/qimageblitz" TYPE OPTIONAL ) # find_package(KF5Declarative QUIET CONFIG) set_package_properties(KDeclarative PROPERTIES DESCRIPTION "KDE Declarative (QML) support from kdelibs" URL "http://www.kde.org" TYPE REQUIRED PURPOSE "Required for building ksmserver" ) find_package(OpenGL) set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries" URL "http://www.opengl.org" TYPE OPTIONAL ) find_package(OpenGLES) set_package_properties(OpenGLES PROPERTIES DESCRIPTION "The OpenGLES libraries" URL "http://www.khronos.org/opengles" TYPE OPTIONAL ) find_package(EGL) set_package_properties(EGL PROPERTIES TYPE OPTIONAL PURPOSE "Required to build KWin with EGL support" ) find_package(Wayland 1.2 COMPONENTS Client Egl) set_package_properties(Wayland PROPERTIES TYPE OPTIONAL PURPOSE "Required for building KWin with Wayland support" ) add_feature_info("Wayland-Client" Wayland_Client_FOUND "Required for building the Wayland backend in KWin") add_feature_info("Wayland-EGL" Wayland_Egl_FOUND "Required for building the Wayland EGL compositing backend in KWin") find_package(X11) if (X11_FOUND) set (HAVE_X11 1) else () set (HAVE_X11 0) endif () add_definitions(-DHAVE_X11=${HAVE_X11}) set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" URL "http://www.x.org" TYPE OPTIONAL PURPOSE "Required for building the X11 based workspace" ) if(HAVE_X11) find_package(XCB REQUIRED COMPONENTS XCB XFIXES DAMAGE COMPOSITE SHAPE SYNC RENDER RANDR KEYSYMS IMAGE SHM XTEST) set_package_properties(XCB PROPERTIES TYPE REQUIRED) find_package(XCB COMPONENTS ICCCM) add_feature_info("XCB-ICCCM" XCB_ICCCM_FOUND "Required for building test applications for KWin") add_feature_info("Automated testing of X clients" X11_XTest_FOUND "The X11 Testing Resource extension library is useful for automated testing of X clients") add_feature_info("libXau" X11_Xau_FOUND "The X11 Authorization Protocol library may be used by KDM") add_feature_info("LibXdmcp" X11_Xdmcp_FOUND "The X Display Manager Control Protocol library may be used by KDM") if(NOT X11_Xkbfile_FOUND) message(FATAL_ERROR "The X11 keyboard layout library was not found. Required for building keyboard modules.") endif() if(NOT X11_Xcomposite_FOUND) message(FATAL_ERROR "The X11 composite library was not found. Required for building the plasma tray and notifications widgets.") endif() if(NOT X11_Xdamage_FOUND) message(FATAL_ERROR "The X11 damaged region extension library was not found. Required for compositing support in KWin.") endif() if(NOT X11_Xrender_FOUND) message(FATAL_ERROR " The X Rendering Extension client library was not found. Required for XRender Compositing backend in KWin.") endif() if(NOT X11_Xfixes_FOUND) message(FATAL_ERROR "The X11 miscellaneous 'fixes' extension library was not found. Required for XRender Compositing backend in KWin.") endif() if(NOT X11_Xrandr_FOUND) message(FATAL_ERROR "The X11 RandR extension library was not found. Required for Multi Screen Support.") endif() if(NOT OPENGL_FOUND AND NOT OPENGLES_FOUND) message(FATAL_ERROR "Either OpenGL or OpenGL ES 2.0 are required for Compositing support in KWin.") endif() if(NOT X11_Xcursor_FOUND) message(FATAL_ERROR "The X11 cursor management library was not found. Required for desktop effects support in KWin.") endif() endif() find_package(GLIB2 2.0) set_package_properties(GLIB2 PROPERTIES DESCRIPTION "Low-level core library for data structure handling, portability wrappers, etc." URL "http://www.gtk.org" TYPE OPTIONAL PURPOSE "Needed to build the kxkb keyboard map control program and provide XMMS support in the Now Playing Plasma data engine" ) find_package(Fontconfig) set_package_properties(Fontconfig PROPERTIES DESCRIPTION "Font access configuration library" URL "http://www.freedesktop.org/wiki/Software/fontconfig" TYPE OPTIONAL PURPOSE "Needed to build font configuration and installation tools" ) #### Python support ( plasma scriptengines ) #### find_package(PythonLibrary) set_package_properties(PythonLibrary PROPERTIES DESCRIPTION "Python scripting language" URL "http://python.org" TYPE OPTIONAL PURPOSE "Needed to build plasma scriptengine for python." ) find_package(Boost 1.34.0 MODULE) set_package_properties(Boost PROPERTIES DESCRIPTION "Boost C++ Libraries" URL "http://www.boost.org" TYPE OPTIONAL PURPOSE "Required to build certain Plasma DataEngines (Akonadi, RSS, Calendar)" ) find_package(Akonadi QUIET CONFIG) set_package_properties(Akonadi PROPERTIES DESCRIPTION "An extensible cross-desktop storage service for PIM data" URL "http://pim.kde.org/akonadi" TYPE OPTIONAL PURPOSE "Required to build certain Plasma DataEngines (Akonadi, Calendar)" ) find_package(KdepimLibs 4.70.10 QUIET CONFIG) set_package_properties(KdepimLibs PROPERTIES DESCRIPTION "The KDEPIM libraries" URL "http://pim.kde.org" TYPE OPTIONAL PURPOSE "Required to build certain Plasma DataEngines (Akonadi, Calendar)" ) find_package(USB) macro_bool_to_01(LIBUSB_FOUND HAVE_LIBUSB) set_package_properties(USB PROPERTIES DESCRIPTION "User level access to USB devices" URL "http://libusb.sourceforge.net" TYPE OPTIONAL PURPOSE "Provides Logitech mouse support in KControl." ) find_package(LibBSD) include(ConfigureChecks.cmake) if(NOT WIN32) configure_file(config-unix.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-unix.h ) configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h ) if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${CMAKE_INSTALL_PREFIX}/share/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH") endif() configure_file(startkde.cmake ${CMAKE_CURRENT_BINARY_DIR}/startkde @ONLY) endif() configure_file(config-workspace.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-workspace.h ) add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DHAVE_CONFIG_H=1) add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) ################# Enable C++11 features for clang and gcc ################# if(UNIX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x") endif() include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${CMAKE_SOURCE_DIR}/libs) # libs # add_subdirectory(cmake) add_subdirectory(libs) # # system settings (kcontrol replacement) ecm_optional_add_subdirectory( systemsettings ) # # # core apps if(NOT WIN32) ecm_optional_add_subdirectory( kcheckpass ) ecm_optional_add_subdirectory( kwin ) ecm_optional_add_subdirectory( ksmserver ) ecm_optional_add_subdirectory( ksplash ) ecm_optional_add_subdirectory( powerdevil ) if(Qt5WebKitWidgets_FOUND) if (NOT CMAKE_SYSTEM_NAME MATCHES Darwin) ecm_optional_add_subdirectory( ksysguard ) endif () endif() endif() # ecm_optional_add_subdirectory(kcontrol) ecm_optional_add_subdirectory(klipper) ecm_optional_add_subdirectory(kmenuedit) # macro_optional_add_subdirectory(krunner) # macro_optional_add_subdirectory(solid) if(LIBBSD_FOUND) ecm_optional_add_subdirectory(kstartupconfig) else() message(STATUS "LibBSD was not found, kstartupconfig will not be built") endif() ecm_optional_add_subdirectory(freespacenotifier) # # data -ecm_optional_add_subdirectory(doc) +# ecm_optional_add_subdirectory(doc) # if (NOT WIN32) ecm_optional_add_subdirectory(kinfocenter) # macro_optional_add_subdirectory(ktouchpadenabler) endif () if(NOT WIN32) ecm_optional_add_subdirectory(kcminit) ecm_optional_add_subdirectory(khotkeys) # macro_optional_add_subdirectory(kwrited) # macro_optional_add_subdirectory(ksystraycmd) ecm_optional_add_subdirectory(appmenu) endif() if(NOT WIN32) # data ecm_optional_add_subdirectory(cursors) endif() # ecm_optional_add_subdirectory(plasma) ecm_optional_add_subdirectory(statusnotifierwatcher) ecm_optional_add_subdirectory(kstyles) # # ########### install files ############### if(NOT WIN32) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/startkde DESTINATION ${BIN_INSTALL_DIR}) endif() feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) # make the libraries installed from kdebase/workspace available to other projects # by creating and installing a KDE4WorkspaceConfig.cmake file, which will # be searched and found by kdelibs/cmake/modules/FindKDE4Workspace.cmake. Alex # now create the KDE4WorkspaceConfig.cmake file, which will be loaded by # kdelibs/cmake/modules/FindKDE4Workspace.cmake and which has to contain all information # about the libraries installed from kdebase/workspace/libs/ anybody would like to have. Alex # we need the absolute directories where stuff will be installed too # but since the variables which contain the destinations can be relative # or absolute paths, we need this macro to make them all absoulte, Alex macro(MAKE_INSTALL_PATH_ABSOLUTE out in) if (IS_ABSOLUTE "${in}") # IS_ABSOLUTE is new since cmake 2.4.8 set(${out} "${in}") else () set(${out} "\${KDE4WORKSPACE_INSTALL_DIR}/${in}") endif () endmacro(MAKE_INSTALL_PATH_ABSOLUTE out in) make_install_path_absolute(KDE4WORKSPACE_LIB_DIR ${LIB_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_LIBEXEC_DIR ${LIBEXEC_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_BIN_DIR ${BIN_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_SBIN_DIR ${SBIN_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_DATA_DIR ${DATA_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_HTML_DIR ${HTML_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_CONFIG_DIR ${CONFIG_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_ICON_DIR ${ICON_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_KCFG_DIR ${KCFG_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_LOCALE_DIR ${LOCALE_INSTALL_DIR}) #FIXME #make_install_path_absolute(KDE4WORKSPACE_MIME_DIR ${MIME_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_SOUND_DIR ${SOUND_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_TEMPLATES_DIR ${TEMPLATES_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_WALLPAPER_DIR ${WALLPAPER_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_KCONF_UPDATE_DIR ${KCONF_UPDATE_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_AUTOSTART_DIR ${AUTOSTART_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_XDG_APPS_DIR ${XDG_APPS_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_XDG_DIRECTORY_DIR ${XDG_DIRECTORY_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_SYSCONF_DIR ${SYSCONF_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_MAN_DIR ${MAN_INSTALL_DIR}) #FIXME #make_install_path_absolute(KDE4WORKSPACE_INFO_DIR ${INFO_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_DBUS_INTERFACES_DIR ${DBUS_INTERFACES_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_DBUS_SERVICES_DIR ${DBUS_SERVICES_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_SERVICES_DIR ${SERVICES_INSTALL_DIR}) make_install_path_absolute(KDE4WORKSPACE_SERVICETYPES_DIR ${SERVICETYPES_INSTALL_DIR}) set(KDE4WORKSPACE_TARGET_PREFIX KDE4Workspace__) # configure_file(KDE4WorkspaceConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfig.cmake" @ONLY) # this file will be installed too and will be used by cmake when searching for the Config.cmake file to check the version of kdepimlibs, Alex write_basic_config_version_file(${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfigVersion.cmake VERSION ${KDE4WORKSPACE_VERSION_MAJOR}.${KDE4WORKSPACE_VERSION_MINOR}.${KDE4WORKSPACE_VERSION_PATCH} COMPATIBILITY AnyNewerVersion) set(_KDE4WorkspaceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/KDE4Workspace/cmake) # places where find_package() looks for FooConfig.cmake files: # CMake >= 2.6.0 looks in lib/Foo*/cmake/, CMake >= 2.6.3 also looks in # lib/cmake/Foo*/, which packagers prefer. So they can set the KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR # option to have kdepimlibs install its Config file there. Alex if(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) set(_KDE4WorkspaceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/KDE4Workspace) endif() install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfigVersion.cmake DESTINATION ${_KDE4WorkspaceConfig_INSTALL_DIR}) install(EXPORT kdeworkspaceLibraryTargets NAMESPACE ${KDE4WORKSPACE_TARGET_PREFIX} DESTINATION ${_KDE4WorkspaceConfig_INSTALL_DIR} FILE KDE4WorkspaceLibraryTargets.cmake ) diff --git a/kwin/CMakeLists.txt b/kwin/CMakeLists.txt index 32a7befb82..64542f1f35 100644 --- a/kwin/CMakeLists.txt +++ b/kwin/CMakeLists.txt @@ -1,350 +1,357 @@ ########### configure tests ############### include(CMakeDependentOption) option(KWIN_BUILD_DECORATIONS "Enable building of KWin decorations." ON) option(KWIN_BUILD_OXYGEN "Enable building of default decoration Oxygen" ON) option(KWIN_BUILD_KCMS "Enable building of KWin configuration modules." ON) option(KWIN_BUILD_TABBOX "Enable building of KWin Tabbox functionality" ON) option(KWIN_BUILD_SCREENEDGES "Enable building of KWin with screen edge support" ON) option(KWIN_BUILD_KAPPMENU "Enable building of KWin with application menu support" ON) option(KWIN_BUILD_XRENDER_COMPOSITING "Enable building of KWin with XRender Compositing support" ON) option(KWIN_BUILD_OPENGL_1_COMPOSITING "Enable support for OpenGL 1.x, automatically disabled when building for OpenGL ES 2.0" ON) cmake_dependent_option(KWIN_BUILD_ACTIVITIES "Enable building of KWin with kactivities support" ON "KF5Activities_FOUND" OFF) option(KWIN_PLASMA_ACTIVE "Enable building KWin for Plasma Active." OFF) # Binary name of KWin set(KWIN_NAME "kwin") set(KWIN_VERSION ${KDE4WORKSPACE_VERSION}) if(KWIN_PLASMA_ACTIVE) set(KWIN_BUILD_DECORATIONS OFF) set(KWIN_BUILD_KCMS OFF) set(KWIN_BUILD_SCREENEDGES OFF) set(KWIN_BUILD_XRENDER_COMPOSITING OFF) set(KWIN_BUILD_WITH_OPENGLES ON) set(KWIN_NAME "kwinactive") endif() cmake_dependent_option(KWIN_BUILD_KAPPMENU "Build without appmenu support" ON "KWIN_BUILD_DECORATIONS" FALSE) set(KWIN_BUILD_OPENGL FALSE) set(KWIN_BUILD_OPENGLES FALSE) if(OPENGL_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL")) set(KWIN_BUILD_OPENGL TRUE) message("Building KWin with OpenGL support") endif() if(OPENGLES_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GLESv2")) set(KWIN_BUILD_OPENGLES TRUE) message("Building KWin with OpenGL ES 2 support") endif() if(NOT KWIN_BUILD_OPENGL AND NOT KWIN_BUILD_OPENGLES) message(FATAL_ERROR "KWin needs to be built against either OpenGL or OpenGL ES 2. Check your Qt config!") endif() # KWIN_HAVE_XRENDER_COMPOSITING - whether XRender-based compositing support is available: may be disabled if( KWIN_BUILD_XRENDER_COMPOSITING ) set( KWIN_HAVE_XRENDER_COMPOSITING 1 ) endif() if(KWIN_BUILD_OPENGL) include_directories(${OPENGL_INCLUDE_DIR}) endif() set(KWIN_HAVE_EGL ${EGL_FOUND}) if(KWIN_BUILD_OPENGLES) include_directories(${OPENGLES_INCLUDE_DIR}) endif() # for things that are also used by kwin libraries configure_file(libkwineffects/kwinconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects/kwinconfig.h ) # for kwin internal things configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h ) ########### global ############### include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/libkdecorations ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libkwineffects ${CMAKE_CURRENT_SOURCE_DIR}/libkdecorations ${CMAKE_CURRENT_SOURCE_DIR}/effects ${CMAKE_CURRENT_SOURCE_DIR}/tabbox ) add_subdirectory( libkdecorations ) add_subdirectory( libkwineffects ) add_subdirectory( killer ) if(KWIN_BUILD_KCMS) add_subdirectory( kcmkwin ) endif() if( KWIN_BUILD_DECORATIONS ) add_subdirectory( clients ) endif() add_subdirectory( data ) add_subdirectory( effects ) add_subdirectory( scripts ) add_subdirectory( tabbox ) add_subdirectory(scripting) add_definitions(-DKDE_DEFAULT_DEBUG_AREA=1212) ########### next target ############### set(kwin_KDEINIT_SRCS workspace.cpp dbusinterface.cpp client.cpp client_machine.cpp cursor.cpp tabgroup.cpp focuschain.cpp netinfo.cpp placement.cpp atoms.cpp utils.cpp layers.cpp main.cpp options.cpp outline.cpp decorations.cpp events.cpp killwindow.cpp geometrytip.cpp screens.cpp shadow.cpp sm.cpp group.cpp bridge.cpp manage.cpp overlaywindow.cpp activation.cpp useractions.cpp geometry.cpp rules.cpp composite.cpp toplevel.cpp unmanaged.cpp scene.cpp scene_xrender.cpp scene_opengl.cpp scene_qpainter.cpp glxbackend.cpp thumbnailitem.cpp lanczosfilter.cpp deleted.cpp effects.cpp compositingprefs.cpp paintredirector.cpp virtualdesktops.cpp xcbutils.cpp scripting/scripting.cpp scripting/workspace_wrapper.cpp scripting/meta.cpp scripting/scriptedeffect.cpp scripting/scriptingutils.cpp scripting/timer.cpp scripting/scripting_model.cpp scripting/dbuscall.cpp scripting/screenedgeitem.cpp ) if(KWIN_BUILD_TABBOX) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} tabbox/tabbox.cpp tabbox/clientmodel.cpp tabbox/desktopchain.cpp tabbox/desktopmodel.cpp tabbox/switcheritem.cpp tabbox/tabboxconfig.cpp tabbox/tabboxhandler.cpp ) endif() if(KWIN_BUILD_SCREENEDGES) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} screenedge.cpp ) endif() if(KWIN_BUILD_KAPPMENU) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} appmenu.cpp ) qt5_add_dbus_interface(kwin_KDEINIT_SRCS ${KDEBASE_WORKSPACE_SOURCE_DIR}/appmenu/org.kde.kappmenu.xml appmenu_interface) endif() if(KWIN_BUILD_ACTIVITIES) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} activities.cpp ) endif() if(KWIN_HAVE_EGL) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} eglonxbackend.cpp) endif() if(Wayland_Client_FOUND) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} wayland_backend.cpp) if(KWIN_HAVE_EGL AND Wayland_Egl_FOUND) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} egl_wayland_backend.cpp) endif() endif() kconfig_add_kcfg_files(kwin_KDEINIT_SRCS settings.kcfgc) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface ) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Compositing.xml composite.h KWin::Compositor ) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Effects.xml effects.h KWin::EffectsHandlerImpl ) qt5_add_dbus_interface( kwin_KDEINIT_SRCS ${KDEBASE_WORKSPACE_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml ksmserver_interface) qt5_add_dbus_interface( kwin_KDEINIT_SRCS ${KDEBASE_WORKSPACE_SOURCE_DIR}/ksmserver/screenlocker/dbus/org.freedesktop.ScreenSaver.xml screenlocker_interface) qt5_add_resources( kwin_KDEINIT_SRCS resources.qrc ) kde4_add_ui_files(kwin_KDEINIT_SRCS shortcutdialog.ui ) ########### target link libraries ############### set(kwin_OWN_LIBS kdecorations kwineffects kwin4_effect_builtins ) set(kwin_QT_LIBS Qt5::Concurrent Qt5::DBus Qt5::Quick Qt5::Script Qt5::X11Extras ) set(kwin_KDE_LIBS KF5::ConfigCore KF5::CoreAddons KF5::ConfigWidgets KF5::Crash KF5::GlobalAccel KF5::I18n KF5::Notifications KF5::Service KF5::Plasma KF5::WindowSystem ) set(kwin_XLIB_LIBS ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xcursor_LIB} ${X11_ICE_LIB} ${X11_SM_LIB} ) set(kwin_XCB_LIBS XCB::XCB XCB::XFIXES XCB::DAMAGE XCB::COMPOSITE XCB::SHAPE XCB::SYNC XCB::RENDER XCB::RANDR XCB::KEYSYMS XCB::SHM ) set(kwin_WAYLAND_LIBS Wayland::Client XCB::XTEST ) set(kwin_WAYLAND_EGL_LIBS Wayland::Egl ) set(kwin_OPENGL_LIBS ) find_library(XF86VM_LIBRARY Xxf86vm) if (XF86VM_LIBRARY) set(kwin_XLIB_LIBS ${kwin_XLIB_LIBS} ${XF86VM_LIBRARY}) else() add_definitions(-DKWIN_NO_XF86VM) endif() if(KWIN_BUILD_ACTIVITIES) set(kwin_KDE_LIBS ${kwin_KDE_LIBS} KF5::Activities) endif() if(KWIN_HAVE_EGL) set(kwin_OPENGL_LIBS ${kwin_OPENGL_LIBS} EGL::EGL) endif() set(kwinLibs ${kwin_OWN_LIBS} ${kwin_QT_LIBS} ${kwin_KDE_LIBS} ${kwin_XLIB_LIBS} ${kwin_XCB_LIBS} ${kwin_OPENGL_LIBS} ) if(Wayland_Client_FOUND) set(kwinLibs ${kwinLibs} ${kwin_WAYLAND_LIBS}) if(KWIN_HAVE_EGL AND Wayland_Egl_FOUND) set(kwinLibs ${kwinLibs} ${kwin_WAYLAND_EGL_LIBS}) endif() endif() kf5_add_kdeinit_executable( kwin ${kwin_KDEINIT_SRCS}) target_link_libraries(kdeinit_kwin ${kwinLibs}) set_target_properties(kwin PROPERTIES OUTPUT_NAME ${KWIN_NAME}) generate_export_header(kdeinit_kwin EXPORT_FILE_NAME kwin_export.h) if(KWIN_BUILD_OPENGL) if( KWIN_BUILD_OPENGL_1_COMPOSITING ) set_target_properties(kdeinit_kwin PROPERTIES COMPILE_FLAGS -DKWIN_HAVE_OPENGL_1) endif() target_link_libraries(kdeinit_kwin kwinglutils ${OPENGL_gl_LIBRARY}) # -ldl used by OpenGL code find_library(DL_LIBRARY dl) if (DL_LIBRARY) target_link_libraries(kdeinit_kwin ${DL_LIBRARY}) endif() elseif(KWIN_BUILD_OPENGLES) target_link_libraries(kdeinit_kwin ${kwinLibs} kwinglesutils ${OPENGLES_LIBRARIES}) set_target_properties(kdeinit_kwin PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES") endif() install(TARGETS kdeinit_kwin ${INSTALL_TARGETS_DEFAULT_ARGS} ) install(TARGETS kwin ${INSTALL_TARGETS_DEFAULT_ARGS} ) ########### install files ############### install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} RENAME ${KWIN_NAME}.kcfg ) install( FILES kwin.notifyrc DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME} RENAME ${KWIN_NAME}.notifyrc) -install( FILES org.kde.KWin.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR} ) +install( + FILES + org.kde.KWin.xml + org.kde.kwin.Compositing.xml + org.kde.kwin.Effects.xml + DESTINATION + ${DBUS_INTERFACES_INSTALL_DIR} +) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kwin_export.h DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel) # Install the KWin/Script service type install( FILES scripting/kwinscript.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) ecm_install_icons( ${ICON_INSTALL_DIR} ) add_subdirectory(autotests) add_subdirectory(tests)