2014-03-18 13:39:42 +00:00
project(KWIN)
2015-08-06 14:04:04 +00:00
set(PROJECT_VERSION "5.4.90")
2014-08-20 13:43:27 +00:00
set(PROJECT_VERSION_MAJOR 5)
2014-03-18 13:39:42 +00:00
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
2015-02-18 09:04:06 +00:00
set(QT_MIN_VERSION "5.4.0")
2015-06-26 11:47:08 +00:00
set(KF5_MIN_VERSION "5.12.0")
2014-03-18 13:39:42 +00:00
2014-03-26 16:47:15 +00:00
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH} )
2014-03-18 13:39:42 +00:00
find_package(ECM 0.0.11 REQUIRED NO_MODULE)
include(FeatureSummary)
include(WriteBasicConfigVersionFile)
2014-04-03 08:15:57 +00:00
include(GenerateExportHeader)
2014-03-18 13:39:42 +00:00
# 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})
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
Concurrent
Core
DBus
Quick
2014-10-31 06:53:04 +00:00
QuickWidgets
2014-03-18 13:39:42 +00:00
Script
UiTools
Widgets
X11Extras
)
2014-04-16 20:26:01 +00:00
find_package(Qt5Test ${QT_MIN_VERSION} CONFIG QUIET)
set_package_properties(Qt5Test PROPERTIES
PURPOSE "Required for tests"
TYPE OPTIONAL
)
add_feature_info("Qt5Test" Qt5Test_FOUND "Required for building tests")
if (NOT Qt5Test_FOUND)
set(BUILD_TESTING OFF CACHE BOOL "Build the testing tree.")
endif()
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
include(ECMInstallIcons)
2015-02-19 16:12:18 +00:00
include(ECMOptionalAddSubdirectory)
2014-04-16 20:26:01 +00:00
2014-03-18 13:39:42 +00:00
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0)
2014-05-14 08:13:23 +00:00
# require at least gcc 4.8
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if ("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.8")
message(SEND_ERROR "Version ${CMAKE_CXX_COMPILER_VERSION} of the ${CMAKE_CXX_COMPILER_ID} C++ compiler is not supported. Please use version 4.8 or later.")
endif()
endif()
2014-04-02 10:02:36 +00:00
find_package(Qt5Multimedia QUIET)
set_package_properties(Qt5Multimedia PROPERTIES
PURPOSE "Runtime-only dependency for effect video playback"
TYPE RUNTIME
)
2014-03-18 13:39:42 +00:00
# required frameworks by Core
2014-09-19 05:44:42 +00:00
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
2014-03-18 13:39:42 +00:00
Config
ConfigWidgets
CoreAddons
Crash
GlobalAccel
I18n
2014-04-03 08:15:57 +00:00
Init
2014-03-18 13:39:42 +00:00
Notifications
2015-07-06 14:50:33 +00:00
Package
2014-03-18 13:39:42 +00:00
Plasma
WidgetsAddons
WindowSystem
2015-03-19 00:15:22 +00:00
IconThemes
2014-03-18 13:39:42 +00:00
)
# required frameworks by config modules
2014-09-19 05:44:42 +00:00
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
2014-03-18 13:39:42 +00:00
Completion
2014-04-02 10:02:36 +00:00
Declarative
2014-03-18 13:39:42 +00:00
KCMUtils
KIO
NewStuff
2015-07-07 15:35:57 +00:00
Service
2014-03-18 13:39:42 +00:00
XmlGui
)
2015-03-31 07:30:19 +00:00
find_package(Threads)
set_package_properties(Threads PROPERTIES
PURPOSE "Needed for VirtualTerminal support in KWin Wayland"
TYPE REQUIRED
)
2014-03-18 13:39:42 +00:00
# optional frameworks
2014-09-19 05:44:42 +00:00
find_package(KF5Activities ${KF5_MIN_VERSION} CONFIG)
2014-04-23 18:28:30 +00:00
set_package_properties(KF5Activities PROPERTIES
PURPOSE "Enable building of KWin with kactivities support"
TYPE OPTIONAL
)
add_feature_info("KF5Activities" KF5Activities_FOUND "Enable building of KWin with kactivities support")
2014-09-19 05:44:42 +00:00
find_package(KF5DocTools ${KF5_MIN_VERSION} CONFIG)
2014-04-23 18:28:30 +00:00
set_package_properties(KF5DocTools PROPERTIES
PURPOSE "Enable building documentation"
TYPE OPTIONAL
)
add_feature_info("KF5DocTools" KF5DocTools_FOUND "Enable building documentation")
2014-03-18 13:39:42 +00:00
2014-07-22 11:11:19 +00:00
find_package(KDecoration2 CONFIG REQUIRED)
2014-09-19 11:59:51 +00:00
find_package(KF5Wayland CONFIG)
set_package_properties(KF5Wayland PROPERTIES
TYPE OPTIONAL
)
add_feature_info("KF5Wayland" KF5Wayland_FOUND "Required for Wayland Compositor Information Module")
2014-03-18 13:39:42 +00:00
find_package(EGL)
set_package_properties(EGL PROPERTIES
2014-02-10 16:34:09 +00:00
TYPE RUNTIME
2014-03-18 13:39:42 +00:00
PURPOSE "Required to build KWin with EGL support"
)
2014-02-10 16:34:09 +00:00
find_package(epoxy)
set_package_properties(epoxy PROPERTIES DESCRIPTION "libepoxy"
URL "http://github.com/anholt/libepoxy"
TYPE REQUIRED
PURPOSE "OpenGL dispatch library"
)
2015-03-23 09:11:57 +00:00
find_package(Wayland 1.2 COMPONENTS Egl Cursor)
2014-03-18 13:39:42 +00:00
set_package_properties(Wayland PROPERTIES
TYPE OPTIONAL
PURPOSE "Required for building KWin with Wayland support"
)
2015-03-23 09:07:59 +00:00
add_feature_info("Wayland-Cursor" Wayland_Cursor_FOUND "Required for cursor support in Wayland backend of kwin_wayland")
2014-03-18 13:39:42 +00:00
add_feature_info("Wayland-EGL" Wayland_Egl_FOUND "Required for building the Wayland EGL compositing backend in KWin")
2014-08-19 07:31:31 +00:00
2014-04-28 10:07:28 +00:00
find_package(XKB 0.4.1)
2014-03-18 13:39:42 +00:00
set_package_properties(XKB PROPERTIES
TYPE OPTIONAL
PURPOSE "Required for building KWin with Wayland support"
)
2015-03-20 11:42:57 +00:00
find_package(Libinput 0.10)
2014-08-14 12:43:57 +00:00
set_package_properties(Libinput PROPERTIES TYPE OPTIONAL PURPOSE "Required for input handling on Wayland.")
find_package(UDev)
set_package_properties(UDev PROPERTIES URL "http://www.freedesktop.org/software/systemd/libudev/"
DESCRIPTION "Linux device library."
TYPE OPTIONAL
PURPOSE "Required for input handling on Wayland."
)
set(HAVE_INPUT FALSE)
2015-03-20 11:42:57 +00:00
if (Libinput_FOUND AND UDEV_FOUND)
2014-08-14 12:43:57 +00:00
set(HAVE_INPUT TRUE)
endif()
2015-04-09 12:49:32 +00:00
find_package(Libdrm)
set_package_properties(Libdrm PROPERTIES TYPE OPTIONAL PURPOSE "Required for drm output on Wayland.")
set(HAVE_DRM FALSE)
if(Libdrm_FOUND AND UDEV_FOUND)
set(HAVE_DRM TRUE)
endif()
2015-04-10 08:44:07 +00:00
find_package(gbm)
set_package_properties(gbm PROPERTIES TYPE OPTIONAL PURPOSE "Required for egl ouput of drm backend.")
set(HAVE_GBM FALSE)
if(HAVE_DRM AND gbm_FOUND)
set(HAVE_GBM TRUE)
endif()
2015-05-06 15:47:07 +00:00
find_package(libhybris)
set_package_properties(libhybris PROPERTIES TYPE OPTIONAL PURPOSE "Required for libhybris backend")
2015-05-08 11:19:04 +00:00
set(HAVE_LIBHYBRIS ${libhybris_FOUND})
2015-05-06 15:47:07 +00:00
2014-03-18 13:39:42 +00:00
find_package(X11)
set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
URL "http://www.x.org"
TYPE REQUIRED
)
# All the required XCB components
2015-06-04 16:39:04 +00:00
find_package(XCB 1.10
2014-06-11 05:51:07 +00:00
REQUIRED COMPONENTS
XCB
XFIXES
DAMAGE
COMPOSITE
SHAPE
SYNC
RENDER
RANDR
KEYSYMS
IMAGE
SHM
2014-09-18 15:09:16 +00:00
GLX
2015-06-04 15:50:29 +00:00
CURSOR
2014-06-11 05:51:07 +00:00
OPTIONAL_COMPONENTS
ICCCM
2014-03-18 13:39:42 +00:00
)
set_package_properties(XCB PROPERTIES TYPE REQUIRED)
# and the optional XCB dependencies
2014-06-11 05:51:07 +00:00
if (XCB_ICCCM_VERSION VERSION_LESS "0.4")
set(XCB_ICCCM_FOUND FALSE)
endif()
2014-03-18 13:39:42 +00:00
add_feature_info("XCB-ICCCM" XCB_ICCCM_FOUND "Required for building test applications for KWin")
2015-03-19 10:07:49 +00:00
find_package(X11_XCB)
set_package_properties(X11_XCB PROPERTIES
PURPOSE "Required for OpenGL support in X11 windowed backend of kwin_wayland"
TYPE OPTIONAL)
2008-01-03 15:22:19 +00:00
########### configure tests ###############
2013-11-15 12:37:47 +00:00
include(CMakeDependentOption)
option(KWIN_BUILD_DECORATIONS "Enable building of KWin decorations." 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_XRENDER_COMPOSITING "Enable building of KWin with XRender Compositing support" ON)
2014-02-13 19:06:33 +00:00
cmake_dependent_option(KWIN_BUILD_ACTIVITIES "Enable building of KWin with kactivities support" ON "KF5Activities_FOUND" OFF)
2011-07-06 15:42:24 +00:00
2014-04-04 11:24:35 +00:00
option(KWIN_BUILD_COVERAGE "Build KWin with gcov support" OFF)
if(KWIN_BUILD_COVERAGE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
endif()
2012-03-16 07:37:09 +00:00
# Binary name of KWin
set(KWIN_NAME "kwin")
2014-06-10 10:05:54 +00:00
set(KWIN_INTERNAL_NAME_X11 "kwin_x11")
set(KWIN_INTERNAL_NAME_WAYLAND "kwin_wayland")
2014-03-18 11:08:14 +00:00
set(KWIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
2012-03-16 07:37:09 +00:00
2013-10-14 07:04:03 +00:00
set(KWIN_BUILD_OPENGL FALSE)
set(KWIN_BUILD_OPENGLES FALSE)
2014-10-21 06:33:51 +00:00
if(${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL")
2013-10-14 07:04:03 +00:00
set(KWIN_BUILD_OPENGL TRUE)
message("Building KWin with OpenGL support")
endif()
2014-10-21 06:33:51 +00:00
if(${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GLESv2")
2013-10-14 07:04:03 +00:00
set(KWIN_BUILD_OPENGLES TRUE)
message("Building KWin with OpenGL ES 2 support")
2015-05-07 12:11:30 +00:00
add_definitions(-DKWIN_HAVE_OPENGLES)
2013-10-14 07:04:03 +00:00
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()
2011-08-13 08:36:50 +00:00
# KWIN_HAVE_XRENDER_COMPOSITING - whether XRender-based compositing support is available: may be disabled
if( KWIN_BUILD_XRENDER_COMPOSITING )
2008-01-03 15:22:19 +00:00
set( KWIN_HAVE_XRENDER_COMPOSITING 1 )
2013-02-25 10:14:56 +00:00
endif()
2008-01-03 15:22:19 +00:00
2014-03-29 08:30:45 +00:00
if (XKB_FOUND)
include_directories(${XKB_INCLUDE_DIR})
endif()
2014-10-24 19:58:59 +00:00
include_directories(${epoxy_INCLUDE_DIR})
2008-01-03 15:22:19 +00:00
# for things that are also used by kwin libraries
2011-02-19 08:58:44 +00:00
configure_file(libkwineffects/kwinconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects/kwinconfig.h )
2008-01-03 15:22:19 +00:00
# for kwin internal things
2015-03-23 09:11:57 +00:00
if(XKB_FOUND AND KF5Wayland_FOUND)
set(HAVE_WAYLAND TRUE)
2013-07-02 09:44:18 +00:00
set(HAVE_XKB ${XKB_FOUND})
2015-08-11 08:27:18 +00:00
set(HAVE_WAYLAND_EGL ${Wayland_Egl_FOUND})
2015-03-23 09:07:59 +00:00
set(HAVE_WAYLAND_CURSOR ${Wayland_Cursor_FOUND})
2015-03-20 15:01:04 +00:00
set(HAVE_X11_XCB ${X11_XCB_FOUND})
2013-07-02 09:44:18 +00:00
else()
2014-03-20 11:54:24 +00:00
set(HAVE_WAYLAND FALSE)
2013-07-02 09:44:18 +00:00
set(HAVE_XKB FALSE)
2014-03-19 10:02:39 +00:00
set(HAVE_WAYLAND_EGL FALSE)
2015-03-23 09:07:59 +00:00
set(HAVE_WAYLAND_CURSOR FALSE)
2015-03-20 15:01:04 +00:00
set(HAVE_X11_XCB FALSE)
2015-04-09 12:49:32 +00:00
set(HAVE_DRM FALSE)
2015-05-12 08:03:00 +00:00
set(HAVE_GBM FALSE)
endif()
2014-03-18 13:39:42 +00:00
include(CheckIncludeFiles)
2014-03-18 08:30:40 +00:00
check_include_files(unistd.h HAVE_UNISTD_H)
check_include_files(malloc.h HAVE_MALLOC_H)
2008-01-03 15:22:19 +00:00
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h )
########### global ###############
2014-03-19 07:10:45 +00:00
set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml)
2007-04-29 17:35:43 +00:00
2011-08-11 16:03:01 +00:00
include_directories(BEFORE
2011-02-19 08:58:44 +00:00
${CMAKE_CURRENT_BINARY_DIR}/libkwineffects
2007-06-22 16:32:06 +00:00
${CMAKE_CURRENT_BINARY_DIR}
2011-02-19 08:58:44 +00:00
${CMAKE_CURRENT_SOURCE_DIR}/libkwineffects
2007-04-29 17:35:43 +00:00
${CMAKE_CURRENT_SOURCE_DIR}/effects
2009-09-13 11:36:45 +00:00
${CMAKE_CURRENT_SOURCE_DIR}/tabbox
2007-04-29 17:35:43 +00:00
)
2011-02-19 08:58:44 +00:00
add_subdirectory( libkwineffects )
2007-06-22 16:32:06 +00:00
add_subdirectory( killer )
2011-05-01 11:27:13 +00:00
if(KWIN_BUILD_KCMS)
add_subdirectory( kcmkwin )
2013-02-25 10:14:56 +00:00
endif()
2011-04-28 14:18:15 +00:00
if( KWIN_BUILD_DECORATIONS )
add_subdirectory( clients )
2013-02-25 10:14:56 +00:00
endif()
2014-01-16 18:18:54 +00:00
add_subdirectory( data )
2007-06-22 16:32:06 +00:00
2008-06-06 11:07:15 +00:00
add_subdirectory( effects )
2012-02-18 11:42:36 +00:00
add_subdirectory( scripts )
2012-02-12 14:15:54 +00:00
add_subdirectory( tabbox )
2014-03-04 07:17:44 +00:00
add_subdirectory(scripting)
2013-02-15 15:47:09 +00:00
2013-09-02 08:34:00 +00:00
add_definitions(-DKDE_DEFAULT_DEBUG_AREA=1212)
2007-04-29 17:35:43 +00:00
########### next target ###############
set(kwin_KDEINIT_SRCS
workspace.cpp
2012-08-30 06:20:26 +00:00
dbusinterface.cpp
2015-03-05 09:21:03 +00:00
abstract_client.cpp
2007-04-29 17:35:43 +00:00
client.cpp
2013-01-07 07:07:27 +00:00
client_machine.cpp
2013-02-19 10:25:46 +00:00
cursor.cpp
2012-01-12 06:42:55 +00:00
tabgroup.cpp
2012-11-20 16:26:50 +00:00
focuschain.cpp
2013-07-10 09:41:16 +00:00
globalshortcuts.cpp
2013-06-26 08:15:20 +00:00
input.cpp
2013-04-26 08:41:24 +00:00
netinfo.cpp
2007-04-29 17:35:43 +00:00
placement.cpp
atoms.cpp
utils.cpp
layers.cpp
main.cpp
options.cpp
2011-04-28 09:16:27 +00:00
outline.cpp
2007-04-29 17:35:43 +00:00
events.cpp
killwindow.cpp
geometrytip.cpp
2013-04-03 10:19:27 +00:00
screens.cpp
2014-04-17 15:33:11 +00:00
screens_xrandr.cpp
2011-03-27 10:33:07 +00:00
shadow.cpp
2007-04-29 17:35:43 +00:00
sm.cpp
group.cpp
manage.cpp
2011-07-06 09:58:23 +00:00
overlaywindow.cpp
2007-04-29 17:35:43 +00:00
activation.cpp
useractions.cpp
geometry.cpp
rules.cpp
composite.cpp
toplevel.cpp
unmanaged.cpp
scene.cpp
scene_xrender.cpp
scene_opengl.cpp
2013-06-21 08:03:31 +00:00
scene_qpainter.cpp
2012-08-26 15:14:23 +00:00
glxbackend.cpp
2011-11-10 13:28:06 +00:00
thumbnailitem.cpp
2010-06-02 20:04:54 +00:00
lanczosfilter.cpp
2007-04-29 17:35:43 +00:00
deleted.cpp
effects.cpp
2014-03-22 08:48:07 +00:00
effectloader.cpp
2007-09-18 13:59:06 +00:00
compositingprefs.cpp
2012-11-16 07:23:47 +00:00
virtualdesktops.cpp
2012-12-21 14:11:31 +00:00
xcbutils.cpp
2014-09-02 16:46:07 +00:00
x11eventfilter.cpp
2014-08-15 07:30:08 +00:00
logind.cpp
2014-11-21 16:12:50 +00:00
screenedge.cpp
2014-03-04 07:17:44 +00:00
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
2015-07-31 11:24:56 +00:00
scripting/scripting_logging.cpp
2014-07-22 11:11:19 +00:00
decorations/decoratedclient.cpp
decorations/decorationbridge.cpp
2015-03-31 13:26:42 +00:00
decorations/decorationpalette.cpp
2014-07-22 11:11:19 +00:00
decorations/settings.cpp
decorations/decorationrenderer.cpp
2015-07-31 11:12:43 +00:00
decorations/decorations_logging.cpp
2015-08-11 08:27:18 +00:00
abstract_egl_backend.cpp
eglonxbackend.cpp
2007-04-29 17:35:43 +00:00
)
2011-06-30 11:02:30 +00:00
if(KWIN_BUILD_TABBOX)
set(
kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS}
2011-07-15 15:22:41 +00:00
tabbox/tabbox.cpp
2011-06-30 11:02:30 +00:00
tabbox/clientmodel.cpp
2012-11-17 10:50:59 +00:00
tabbox/desktopchain.cpp
2011-06-30 11:02:30 +00:00
tabbox/desktopmodel.cpp
2013-12-10 06:14:44 +00:00
tabbox/switcheritem.cpp
2011-06-30 11:02:30 +00:00
tabbox/tabboxconfig.cpp
tabbox/tabboxhandler.cpp
2015-07-31 11:03:35 +00:00
tabbox/tabbox_logging.cpp
2011-06-30 11:02:30 +00:00
)
2013-02-25 10:14:56 +00:00
endif()
2011-06-30 11:02:30 +00:00
2013-04-04 14:14:12 +00:00
if(KWIN_BUILD_ACTIVITIES)
set(
kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS}
activities.cpp
)
endif()
2014-09-19 11:59:51 +00:00
if(HAVE_WAYLAND)
2014-08-13 10:54:02 +00:00
set(kwin_KDEINIT_SRCS
${kwin_KDEINIT_SRCS}
2015-03-20 13:41:03 +00:00
abstract_backend.cpp
2015-03-31 07:30:19 +00:00
virtual_terminal.cpp
2015-03-04 08:21:10 +00:00
shell_client.cpp
2015-02-09 12:28:37 +00:00
wayland_server.cpp
2014-08-18 12:05:35 +00:00
)
2015-05-05 11:02:16 +00:00
if(HAVE_WAYLAND_CURSOR)
set(kwin_KDEINIT_SRCS
${kwin_KDEINIT_SRCS}
wayland_cursor_theme.cpp
)
endif()
2013-05-15 11:47:27 +00:00
endif()
2015-04-08 08:25:51 +00:00
if(UDEV_FOUND)
set(kwin_KDEINIT_SRCS
${kwin_KDEINIT_SRCS}
udev.cpp
)
endif()
2014-08-14 12:43:57 +00:00
if(HAVE_INPUT)
set(kwin_KDEINIT_SRCS
${kwin_KDEINIT_SRCS}
libinput/context.cpp
libinput/connection.cpp
libinput/events.cpp
2015-07-31 10:43:06 +00:00
libinput/libinput_logging.cpp
2014-08-14 12:43:57 +00:00
)
endif()
2013-11-26 18:51:13 +00:00
kconfig_add_kcfg_files(kwin_KDEINIT_SRCS settings.kcfgc)
2013-01-24 14:25:34 +00:00
2013-11-26 18:51:13 +00:00
qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface )
2014-06-02 06:51:28 +00:00
qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Compositing.xml dbusinterface.h KWin::CompositorDBusInterface )
2014-03-18 15:09:20 +00:00
qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS ${kwin_effects_dbus_xml} effects.h KWin::EffectsHandlerImpl )
2007-04-29 17:35:43 +00:00
2014-03-24 15:30:22 +00:00
qt5_add_dbus_interface( kwin_KDEINIT_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.ScreenSaver.xml screenlocker_interface)
2010-06-11 14:26:41 +00:00
2013-11-15 12:37:47 +00:00
qt5_add_resources( kwin_KDEINIT_SRCS resources.qrc )
2007-04-29 17:35:43 +00:00
2015-02-19 13:38:09 +00:00
ki18n_wrap_ui(kwin_KDEINIT_SRCS
2013-12-12 13:17:26 +00:00
shortcutdialog.ui
)
2013-02-25 11:05:36 +00:00
########### target link libraries ###############
set(kwin_OWN_LIBS
kwineffects
2014-03-16 14:31:23 +00:00
kwinxrenderutils
2014-01-17 12:46:04 +00:00
kwin4_effect_builtins
2013-02-25 11:05:36 +00:00
)
set(kwin_QT_LIBS
2013-10-02 13:23:56 +00:00
Qt5::Concurrent
2013-08-20 06:47:47 +00:00
Qt5::DBus
2013-08-20 07:10:18 +00:00
Qt5::Quick
2014-03-04 07:17:44 +00:00
Qt5::Script
2013-08-20 07:10:18 +00:00
Qt5::X11Extras
2013-02-25 11:05:36 +00:00
)
set(kwin_KDE_LIBS
2013-12-11 20:41:47 +00:00
KF5::ConfigCore
KF5::CoreAddons
2013-12-12 13:17:26 +00:00
KF5::ConfigWidgets
2013-12-11 20:41:47 +00:00
KF5::Crash
2013-12-09 08:33:58 +00:00
KF5::GlobalAccel
2015-06-26 08:51:11 +00:00
KF5::GlobalAccelPrivate
2013-12-11 20:41:47 +00:00
KF5::I18n
KF5::Notifications
2015-07-06 14:50:33 +00:00
KF5::Package
2013-10-15 23:36:24 +00:00
KF5::Plasma
2013-12-11 20:41:47 +00:00
KF5::WindowSystem
2014-07-22 11:11:19 +00:00
KDecoration2::KDecoration
KDecoration2::KDecoration2Private
2013-02-25 11:05:36 +00:00
)
set(kwin_XLIB_LIBS
2013-03-04 07:50:23 +00:00
${X11_X11_LIB}
2013-08-20 06:47:47 +00:00
${X11_ICE_LIB}
${X11_SM_LIB}
2013-02-25 11:05:36 +00:00
)
set(kwin_XCB_LIBS
2014-02-25 14:48:39 +00:00
XCB::XCB
XCB::XFIXES
XCB::DAMAGE
XCB::COMPOSITE
XCB::SHAPE
XCB::SYNC
XCB::RENDER
XCB::RANDR
XCB::KEYSYMS
XCB::SHM
2014-09-18 15:09:16 +00:00
XCB::GLX
2015-06-04 15:50:29 +00:00
XCB::CURSOR
2013-02-25 11:05:36 +00:00
)
2013-05-15 11:47:27 +00:00
set(kwin_WAYLAND_LIBS
2014-03-13 16:52:26 +00:00
XKB::XKB
2014-09-19 11:59:51 +00:00
KF5::WaylandClient
2015-02-09 12:28:37 +00:00
KF5::WaylandServer
2015-03-31 07:30:19 +00:00
${CMAKE_THREAD_LIBS_INIT}
2013-05-15 11:47:27 +00:00
)
2015-03-23 09:07:59 +00:00
if(Wayland_Cursor_FOUND)
set(kwin_WAYLAND_LIBS ${kwin_WAYLAND_LIBS} Wayland::Cursor)
endif()
2012-02-26 10:38:16 +00:00
if(KWIN_BUILD_ACTIVITIES)
2014-02-13 19:06:33 +00:00
set(kwin_KDE_LIBS ${kwin_KDE_LIBS} KF5::Activities)
2013-02-25 10:14:56 +00:00
endif()
2012-02-26 10:38:16 +00:00
2013-02-25 11:05:36 +00:00
set(kwinLibs
${kwin_OWN_LIBS}
${kwin_QT_LIBS}
${kwin_KDE_LIBS}
${kwin_XLIB_LIBS}
${kwin_XCB_LIBS}
)
2014-09-19 11:59:51 +00:00
if(HAVE_WAYLAND)
2013-05-15 11:47:27 +00:00
set(kwinLibs ${kwinLibs} ${kwin_WAYLAND_LIBS})
endif()
2015-04-08 08:25:51 +00:00
if(UDEV_FOUND)
set(kwinLibs ${kwinLibs} ${UDEV_LIBS})
endif()
2014-08-14 12:43:57 +00:00
if(HAVE_INPUT)
2015-04-08 08:25:51 +00:00
set(kwinLibs ${kwinLibs} Libinput::Libinput)
2014-08-14 12:43:57 +00:00
endif()
2014-08-12 07:08:48 +00:00
add_library(kwin SHARED ${kwin_KDEINIT_SRCS})
2011-07-17 16:18:22 +00:00
2014-08-12 07:08:48 +00:00
set_target_properties(kwin PROPERTIES
2014-08-20 13:43:27 +00:00
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
2014-08-12 07:08:48 +00:00
)
target_link_libraries(kwin ${kwinLibs})
generate_export_header(kwin EXPORT_FILE_NAME kwin_export.h)
2011-07-17 16:18:22 +00:00
2013-10-14 07:04:03 +00:00
if(KWIN_BUILD_OPENGL)
2014-08-12 07:08:48 +00:00
target_link_libraries(kwin kwinglutils ${epoxy_LIBRARY})
2011-07-17 16:18:22 +00:00
# -ldl used by OpenGL code
find_library(DL_LIBRARY dl)
if (DL_LIBRARY)
2014-08-12 07:08:48 +00:00
target_link_libraries(kwin ${DL_LIBRARY})
2013-02-25 10:14:56 +00:00
endif()
2013-10-14 07:04:03 +00:00
elseif(KWIN_BUILD_OPENGLES)
2014-08-12 07:08:48 +00:00
target_link_libraries(kwin ${kwinLibs} kwinglesutils ${epoxy_LIBRARY})
set_target_properties(kwin PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES")
2013-02-25 10:14:56 +00:00
endif()
2011-07-17 16:18:22 +00:00
2014-08-12 07:08:48 +00:00
kf5_add_kdeinit_executable(kwin_x11 main_x11.cpp)
target_link_libraries(kdeinit_kwin_x11 kwin)
2014-08-25 10:49:03 +00:00
install(TARGETS kwin ${INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP )
2014-08-12 07:08:48 +00:00
install(TARGETS kdeinit_kwin_x11 ${INSTALL_TARGETS_DEFAULT_ARGS} )
install(TARGETS kwin_x11 ${INSTALL_TARGETS_DEFAULT_ARGS} )
2014-09-19 11:59:51 +00:00
if(HAVE_WAYLAND)
2015-02-20 08:33:36 +00:00
include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
2015-05-18 09:09:48 +00:00
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
2015-07-06 07:57:30 +00:00
add_executable(kwin_wayland main_wayland.cpp)
target_link_libraries(kwin_wayland kwin)
2014-08-12 07:08:48 +00:00
install(TARGETS kwin_wayland ${INSTALL_TARGETS_DEFAULT_ARGS} )
2015-05-05 15:58:09 +00:00
add_subdirectory(backends)
2015-06-26 11:47:08 +00:00
add_subdirectory(plugins)
2014-08-12 07:08:48 +00:00
endif()
2007-04-29 17:35:43 +00:00
########### install files ###############
2012-03-16 07:37:09 +00:00
install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} RENAME ${KWIN_NAME}.kcfg )
2014-04-26 21:27:35 +00:00
install( FILES kwin.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR} RENAME ${KWIN_NAME}.notifyrc)
2014-03-07 13:46:11 +00:00
install(
FILES
org.kde.KWin.xml
org.kde.kwin.Compositing.xml
org.kde.kwin.Effects.xml
DESTINATION
${DBUS_INTERFACES_INSTALL_DIR}
)
2013-12-06 07:37:16 +00:00
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kwin_export.h DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel)
2007-04-29 17:35:43 +00:00
2014-03-04 07:17:44 +00:00
# Install the KWin/Script service type
install( FILES scripting/kwinscript.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} )
2012-02-18 09:34:27 +00:00
2014-05-22 14:38:07 +00:00
ecm_install_icons(
ICONS
16-apps-kwin.png
32-apps-kwin.png
48-apps-kwin.png
sc-apps-kwin.svgz
DESTINATION
${ICON_INSTALL_DIR}
THEME
2014-06-27 11:20:49 +00:00
hicolor
2014-05-22 14:38:07 +00:00
)
2012-05-18 12:03:55 +00:00
2014-02-27 14:25:03 +00:00
add_subdirectory(qml)
2014-01-30 10:01:59 +00:00
add_subdirectory(autotests)
2014-01-30 14:28:12 +00:00
add_subdirectory(tests)
2014-04-03 08:15:57 +00:00
if (KF5DocTools_FOUND)
add_subdirectory(doc)
endif()
2014-03-21 15:07:55 +00:00
2015-03-22 21:25:38 +00:00
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
2014-12-02 08:58:29 +00:00
include(ECMPackageConfigHelpers)
2014-03-21 15:07:55 +00:00
set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KWinDBusInterface")
2014-03-27 11:31:25 +00:00
ecm_configure_package_config_file(KWinDBusInterfaceConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/KWinDBusInterfaceConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR})
2014-03-21 15:07:55 +00:00
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KWinDBusInterfaceConfig.cmake
DESTINATION ${CMAKECONFIG_INSTALL_DIR})