kde-workspace/CMakeLists.txt

367 lines
11 KiB
Text
Raw Normal View History

project(kde-workspace)
2014-11-13 19:30:51 +02:00
2014-11-15 04:16:00 +02:00
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(GenerateExportHeader)
include(FeatureSummary)
2014-11-15 04:16:00 +02:00
find_package(KDELibs4 4.23.0 REQUIRED)
2014-11-13 19:30:51 +02:00
# kdelibs requires 0.91
find_package(SharedMimeInfo 0.91)
set_package_properties(SharedMimeInfo PROPERTIES
DESCRIPTION "Shared Mime Info"
URL "http://freedesktop.org/wiki/Software/shared-mime-info"
PURPOSE "Needed for update MIME database"
TYPE REQUIRED
)
find_package(Sudo)
set_package_properties(Sudo PROPERTIES
DESCRIPTION "Sudo allows a system administrator to delegate authority to give certain users"
URL "https://www.sudo.ws/"
TYPE RUNTIME
PURPOSE "Needed for kdesudo to operate"
)
generic: keyboard layout applet and kayboard KCM reimplementation lots of changes with this commit - on the plasma applet side: + the applet now handles mouse wheel events * the applet itself sets its global global shortcut key + the applet itself has configuration interface for the text and flag options * ported to the new KKeyboardLayout class - no per-window or per-application keyboard layout on the overall keyboard configuration: * no KDED module required + keyboard layout descriptions (model, layout, variant, etc.) are actually translated - no keyboard configuration will be shown when a keyboard is plugged-in (see bellow) - keyboard layout options are not configurable, not via GUI interface anyway the hotplug plasma data engine, device notifications and solid actions have to be either reimplemented or extended to handle more device types (currently the above mentioned handle only removable devices by default such as cameras, not input devices such as keyboard) overall - from reimplemented one thing to another and the keyboard configuration is not done yet (adding and editing keyboard layout not implemented yet) but in a working state on a side note the changes here affect kvkbd as it uses D-Bus interface for keyboard layout change that is no more and has to be ported or (most likely) replaced with a handler for QEvent::RequestSoftwareInputPanel event that shows a keyboard on demand there is also the double-keyboard layout applet thing - applet for the keyboard layout could be added and the daemon (KDED module) was showing its own keyboard layout indicator automatically (by default) the X11 keyboard bell options are next to useless btw - there is KNotification::beep() for such things so the X11 bell options are simply dropped Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-09-03 21:48:19 +03:00
find_package(XCB)
set_package_properties(XCB PROPERTIES
DESCRIPTION "X protocol C-language Binding"
URL "http://xcb.freedesktop.org"
TYPE REQUIRED
)
generic: keyboard layout applet and kayboard KCM reimplementation lots of changes with this commit - on the plasma applet side: + the applet now handles mouse wheel events * the applet itself sets its global global shortcut key + the applet itself has configuration interface for the text and flag options * ported to the new KKeyboardLayout class - no per-window or per-application keyboard layout on the overall keyboard configuration: * no KDED module required + keyboard layout descriptions (model, layout, variant, etc.) are actually translated - no keyboard configuration will be shown when a keyboard is plugged-in (see bellow) - keyboard layout options are not configurable, not via GUI interface anyway the hotplug plasma data engine, device notifications and solid actions have to be either reimplemented or extended to handle more device types (currently the above mentioned handle only removable devices by default such as cameras, not input devices such as keyboard) overall - from reimplemented one thing to another and the keyboard configuration is not done yet (adding and editing keyboard layout not implemented yet) but in a working state on a side note the changes here affect kvkbd as it uses D-Bus interface for keyboard layout change that is no more and has to be ported or (most likely) replaced with a handler for QEvent::RequestSoftwareInputPanel event that shows a keyboard on demand there is also the double-keyboard layout applet thing - applet for the keyboard layout could be added and the daemon (KDED module) was showing its own keyboard layout indicator automatically (by default) the X11 keyboard bell options are next to useless btw - there is KNotification::beep() for such things so the X11 bell options are simply dropped Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-09-03 21:48:19 +03:00
find_package(X11_XCB)
set_package_properties(X11_XCB
PROPERTIES DESCRIPTION "XCB X11 protocol client library"
TYPE REQUIRED
)
generic: keyboard layout applet and kayboard KCM reimplementation lots of changes with this commit - on the plasma applet side: + the applet now handles mouse wheel events * the applet itself sets its global global shortcut key + the applet itself has configuration interface for the text and flag options * ported to the new KKeyboardLayout class - no per-window or per-application keyboard layout on the overall keyboard configuration: * no KDED module required + keyboard layout descriptions (model, layout, variant, etc.) are actually translated - no keyboard configuration will be shown when a keyboard is plugged-in (see bellow) - keyboard layout options are not configurable, not via GUI interface anyway the hotplug plasma data engine, device notifications and solid actions have to be either reimplemented or extended to handle more device types (currently the above mentioned handle only removable devices by default such as cameras, not input devices such as keyboard) overall - from reimplemented one thing to another and the keyboard configuration is not done yet (adding and editing keyboard layout not implemented yet) but in a working state on a side note the changes here affect kvkbd as it uses D-Bus interface for keyboard layout change that is no more and has to be ported or (most likely) replaced with a handler for QEvent::RequestSoftwareInputPanel event that shows a keyboard on demand there is also the double-keyboard layout applet thing - applet for the keyboard layout could be added and the daemon (KDED module) was showing its own keyboard layout indicator automatically (by default) the X11 keyboard bell options are next to useless btw - there is KNotification::beep() for such things so the X11 bell options are simply dropped Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-09-03 21:48:19 +03:00
find_package(X11)
set_package_properties(X11 PROPERTIES
DESCRIPTION "X11 libraries"
URL "http://www.x.org"
TYPE REQUIRED
)
add_feature_info("XKBfile" X11_Xkbfile_FOUND "The keyboard file manipulation library may be used by keyboard KCM")
generic: keyboard layout applet and kayboard KCM reimplementation lots of changes with this commit - on the plasma applet side: + the applet now handles mouse wheel events * the applet itself sets its global global shortcut key + the applet itself has configuration interface for the text and flag options * ported to the new KKeyboardLayout class - no per-window or per-application keyboard layout on the overall keyboard configuration: * no KDED module required + keyboard layout descriptions (model, layout, variant, etc.) are actually translated - no keyboard configuration will be shown when a keyboard is plugged-in (see bellow) - keyboard layout options are not configurable, not via GUI interface anyway the hotplug plasma data engine, device notifications and solid actions have to be either reimplemented or extended to handle more device types (currently the above mentioned handle only removable devices by default such as cameras, not input devices such as keyboard) overall - from reimplemented one thing to another and the keyboard configuration is not done yet (adding and editing keyboard layout not implemented yet) but in a working state on a side note the changes here affect kvkbd as it uses D-Bus interface for keyboard layout change that is no more and has to be ported or (most likely) replaced with a handler for QEvent::RequestSoftwareInputPanel event that shows a keyboard on demand there is also the double-keyboard layout applet thing - applet for the keyboard layout could be added and the daemon (KDED module) was showing its own keyboard layout indicator automatically (by default) the X11 keyboard bell options are next to useless btw - there is KNotification::beep() for such things so the X11 bell options are simply dropped Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-09-03 21:48:19 +03:00
add_feature_info("libXSync" X11_XSync_FOUND "The X11 synchronization may be used by KWin")
add_feature_info("libXRes" X11_XRes_FOUND "The X Resource library may be used by ksysguard")
add_feature_info("libXext" X11_dpms_FOUND "The X extensions library may be used by kscreensaver")
generic: keyboard layout applet and kayboard KCM reimplementation lots of changes with this commit - on the plasma applet side: + the applet now handles mouse wheel events * the applet itself sets its global global shortcut key + the applet itself has configuration interface for the text and flag options * ported to the new KKeyboardLayout class - no per-window or per-application keyboard layout on the overall keyboard configuration: * no KDED module required + keyboard layout descriptions (model, layout, variant, etc.) are actually translated - no keyboard configuration will be shown when a keyboard is plugged-in (see bellow) - keyboard layout options are not configurable, not via GUI interface anyway the hotplug plasma data engine, device notifications and solid actions have to be either reimplemented or extended to handle more device types (currently the above mentioned handle only removable devices by default such as cameras, not input devices such as keyboard) overall - from reimplemented one thing to another and the keyboard configuration is not done yet (adding and editing keyboard layout not implemented yet) but in a working state on a side note the changes here affect kvkbd as it uses D-Bus interface for keyboard layout change that is no more and has to be ported or (most likely) replaced with a handler for QEvent::RequestSoftwareInputPanel event that shows a keyboard on demand there is also the double-keyboard layout applet thing - applet for the keyboard layout could be added and the daemon (KDED module) was showing its own keyboard layout indicator automatically (by default) the X11 keyboard bell options are next to useless btw - there is KNotification::beep() for such things so the X11 bell options are simply dropped Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-09-03 21:48:19 +03:00
if(NOT X11_Xau_FOUND)
message(FATAL_ERROR "The X11 authorization extension library was not found. Required for authorization in kworkspace library")
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 X11_Xcursor_FOUND)
message(FATAL_ERROR "The X11 cursor management library was not found. Required for desktop effects support in KWin")
endif()
2014-11-13 19:30:51 +02:00
kde4_optional_find_package(OpenGL)
set_package_properties(OpenGL PROPERTIES
DESCRIPTION "The OpenGL libraries"
URL "http://www.opengl.org"
PURPOSE "OpenGL info module"
TYPE OPTIONAL
)
kde4_optional_find_package(LibDRM)
set_package_properties(LibDRM PROPERTIES
DESCRIPTION "Userspace interface to kernel DRM services"
URL "https://dri.freedesktop.org/wiki/"
TYPE OPTIONAL
PURPOSE "OpenGL info module"
)
kde4_optional_find_package(Freetype)
set_package_properties(Freetype PROPERTIES
DESCRIPTION "Freely available software library to render fonts"
URL "https://www.freetype.org"
PURPOSE "Needed to build font configuration and installation tools"
TYPE OPTIONAL
)
kde4_optional_find_package(Fontconfig)
set_package_properties(Fontconfig PROPERTIES
DESCRIPTION "Font access configuration library"
URL "http://www.freedesktop.org/wiki/Software/fontconfig"
PURPOSE "Needed to build font configuration and installation tools"
TYPE OPTIONAL
)
2014-11-13 19:30:51 +02:00
kde4_optional_find_package(LibUSB)
set_package_properties(LibUSB PROPERTIES
DESCRIPTION "User level access to USB devices"
URL "https://libusb.info/"
TYPE OPTIONAL
PURPOSE "Provides Logitech mouse support in KControl and USB devices information"
)
kde4_optional_find_package(Kmod)
set_package_properties(Kmod PROPERTIES
DESCRIPTION "Set of tools to handle common tasks with Linux kernel modules"
URL "https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/"
TYPE OPTIONAL
PURPOSE "Kernel modules information"
)
kde4_optional_find_package(PCIUTILS)
set_package_properties(PCIUTILS PROPERTIES
DESCRIPTION "PciUtils is a library for direct access to PCI slots"
URL "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
TYPE OPTIONAL
PURPOSE "View PCI details in kinfocenter"
)
kde4_optional_find_package(RAW1394)
set_package_properties(RAW1394 PROPERTIES
DESCRIPTION "library for direct access to IEEE 1394 bus"
URL "http://www.linux1394.org/"
TYPE OPTIONAL
PURPOSE "View FireWire devices in kinfocenter"
)
kde4_optional_find_package(Mtp 1.1.2)
set_package_properties(Mtp PROPERTIES
DESCRIPTION "the library implementation of the Media Transfer Protocol"
URL "http://libmtp.sourceforge.net/"
TYPE OPTIONAL
PURPOSE "Needed to build the MTP kioslave"
)
kde4_optional_find_package(Gphoto2 2.5)
set_package_properties(Gphoto2 PROPERTIES
DESCRIPTION "Free, redistributable, ready to use set of digital camera software applications"
URL "http://www.gphoto.org/"
TYPE OPTIONAL
PURPOSE "Needed to build camera kioslave"
)
kde4_optional_find_package(EPub)
set_package_properties(EPub PROPERTIES
DESCRIPTION "A library for reading EPub documents"
URL "https://sourceforge.net/projects/ebook-tools/"
TYPE RECOMMENDED
PURPOSE "Provides support for eBook in the thumbnail KIO slave"
)
kde4_optional_find_package(DjVuLibre)
set_package_properties(DjVuLibre PROPERTIES
DESCRIPTION "Open source DjVu library"
URL "https://djvu.sourceforge.net/"
TYPE RECOMMENDED
PURPOSE "Provides support for DjVu in the thumbnail KIO slave"
)
kde4_optional_find_package(Sensors)
set_package_properties(Sensors PROPERTIES
DESCRIPTION "Linux hardware monitoring"
URL "https://hwmon.wiki.kernel.org/lm_sensors"
PURPOSE "Sensors feedback in ksysguard"
TYPE OPTIONAL
)
kde4_optional_find_package(Qalculate)
set_package_properties(Qalculate PROPERTIES
DESCRIPTION "Qalculate Library"
URL "http://qalculate.sourceforge.net"
TYPE OPTIONAL
PURPOSE "Needed to enable advanced features of the calculator runner"
)
kde4_optional_find_package(LightDM)
set_package_properties(LightDM PROPERTIES
DESCRIPTION "Cross-desktop display manager"
URL "https://github.com/canonical/lightdm"
TYPE OPTIONAL
PURPOSE "Needed for the LightDM greeter"
)
kde4_optional_find_package(LibGit2)
set_package_properties(LibGit2 PROPERTIES
DESCRIPTION "Portable, pure C implementation of the Git core methods"
URL "https://libgit2.org/"
TYPE OPTIONAL
PURPOSE "Needed for the Dolphin Git plugin"
)
kde4_optional_find_package(ALSA)
set_package_properties(ALSA PROPERTIES
DESCRIPTION "Advanced Linux Sound Architecture"
URL "https://alsa-project.org/wiki/Main_Page"
PURPOSE "Needed for Plasma mixer applet"
)
find_program(WRESTOOL_EXECUTABLE wrestool)
add_feature_info(wrestool
WRESTOOL_EXECUTABLE
"ICO thumbnails support in KIO slave"
)
find_program(CTAGS_EXECUTABLE ctags ctags-universal ctags-exuberant exctags uctags)
add_feature_info(ctags
CTAGS_EXECUTABLE
"Code indexing support in Kate"
)
find_program(CPPCHECK_EXECUTABLE cppcheck)
add_feature_info(cppcheck
CPPCHECK_EXECUTABLE
"Code analysis support in Kate"
)
find_program(RZSZ_EXECUTABLE NAMES rz lrz)
add_feature_info(rzsz
RZSZ_EXECUTABLE
"ZModem support in Konsole"
)
find_program(XKILL_EXECUTABLE xkill)
add_feature_info(xkill
XKILL_EXECUTABLE
"Window killing support in KWin"
)
find_program(EJECT_EXECUTABLE NAMES eject cdcontrol cdio)
add_feature_info(eject
EJECT_EXECUTABLE
"Eject CD and DVD devices"
)
find_program(DIFF_EXECUTABLE diff)
add_feature_info(diff
DIFF_EXECUTABLE
"Show difference between files in Kate"
)
find_program(XRANDR_EXECUTABLE xrandr)
add_feature_info(xrandr
XRANDR_EXECUTABLE
"Set size, orientation, etc. of screens"
)
2014-11-13 19:30:51 +02:00
include(ConfigureChecks.cmake)
configure_file(config-unix.h.cmake ${CMAKE_BINARY_DIR}/config-unix.h )
configure_file(config-X11.h.cmake ${CMAKE_BINARY_DIR}/config-X11.h )
2014-11-15 05:21:19 +02:00
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(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
configure_file(startkde.cmake ${CMAKE_BINARY_DIR}/startkde @ONLY)
configure_file(config-workspace.h.cmake ${CMAKE_BINARY_DIR}/config-workspace.h )
2014-11-13 19:30:51 +02:00
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${CMAKE_SOURCE_DIR}/libs)
2014-11-13 19:30:51 +02:00
# libs
add_subdirectory(libs)
add_subdirectory(systemsettings)
2014-11-13 19:30:51 +02:00
# core apps
add_subdirectory(kwin)
add_subdirectory(kscreensaver)
add_subdirectory(qguiplatformplugin_kde)
add_subdirectory(ksysguard)
add_subdirectory(kcontrol)
add_subdirectory(kmenuedit)
add_subdirectory(kinfocenter)
if (LightDM_FOUND)
add_subdirectory(kgreeter)
endif(LightDM_FOUND)
2014-11-13 19:30:51 +02:00
2014-11-15 05:21:19 +02:00
# data
add_subdirectory(cursors)
2014-11-13 19:30:51 +02:00
add_subdirectory(plasma)
add_subdirectory(kstyles)
2014-11-13 19:30:51 +02:00
# Imported from kde-runtime and other sub-projects
add_subdirectory(menu)
add_subdirectory(knotify)
add_subdirectory(soliduiserver)
add_subdirectory(solid-hardware)
add_subdirectory(kcmshell)
add_subdirectory(kioslave)
add_subdirectory(kurifilter-plugins)
add_subdirectory(kquitapp)
2014-11-15 04:16:00 +02:00
if (Q_WS_X11)
add_subdirectory(kstart)
2014-11-15 04:16:00 +02:00
endif (Q_WS_X11)
# Imported from kde-baseapps
add_subdirectory(dolphin)
add_subdirectory(kate)
add_subdirectory(kdepasswd)
add_subdirectory(kdesudo)
add_subdirectory(kdialog)
add_subdirectory(keditbookmarks)
add_subdirectory(kfind)
add_subdirectory(konsole)
# Goodies
add_subdirectory(kmediaplayer)
add_subdirectory(kmail)
add_subdirectory(kfreespace)
2014-11-15 04:16:00 +02:00
# Background processes
add_subdirectory(kdontchangethehostname)
2014-11-15 04:16:00 +02:00
# Command-line tools (e.g. for shell scripts)
add_subdirectory(kdeeject)
add_subdirectory(kfile)
add_subdirectory(kiconfinder)
add_subdirectory(kioclient)
add_subdirectory(ktraderclient)
add_subdirectory(kreadconfig)
add_subdirectory(kmimetypefinder)
2014-11-15 04:16:00 +02:00
# UI Helper applications
add_subdirectory(kcrash)
add_subdirectory(knetattach)
add_subdirectory(kdirshare)
add_subdirectory(keditfiletype)
2014-11-15 04:16:00 +02:00
# Default settings, content and config
add_subdirectory(l10n)
add_subdirectory(kde-menu)
2014-11-15 04:16:00 +02:00
2014-11-13 19:30:51 +02:00
########### install files ###############
# install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/kde4 DESTINATION ${KDE4_BIN_INSTALL_DIR})
install(PROGRAMS ${CMAKE_BINARY_DIR}/startkde DESTINATION ${KDE4_BIN_INSTALL_DIR})
2014-11-13 19:30:51 +02:00
set(KDE4WORKSPACE_TARGET_PREFIX KDE4Workspace::)
2014-11-13 19:30:51 +02:00
configure_file(
KDE4WorkspaceConfig.cmake.in
"${CMAKE_BINARY_DIR}/KDE4WorkspaceConfig.cmake"
@ONLY
)
configure_file(
KDE4WorkspaceConfigVersion.cmake.in
"${CMAKE_BINARY_DIR}/KDE4WorkspaceConfigVersion.cmake"
@ONLY
)
install(
FILES
${CMAKE_BINARY_DIR}/KDE4WorkspaceConfig.cmake
${CMAKE_BINARY_DIR}/KDE4WorkspaceConfigVersion.cmake
DESTINATION ${KDE4_DATA_INSTALL_DIR}/cmake/KDE4Workspace
)
install(
EXPORT kdeworkspaceTargets
NAMESPACE ${KDE4WORKSPACE_TARGET_PREFIX}
DESTINATION ${KDE4_DATA_INSTALL_DIR}/cmake/KDE4Workspace
FILE KDE4WorkspaceTargets.cmake
)
2014-11-13 19:30:51 +02:00
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)