kde-workspace/CMakeLists.txt

374 lines
14 KiB
Text
Raw Normal View History

project(kde-workspace)
2014-11-13 19:30:51 +02:00
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
2014-11-15 04:16:00 +02:00
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(GenerateExportHeader)
2014-11-15 04:16:00 +02:00
find_package(KDE4 4.18.0 REQUIRED)
2014-11-13 19:30:51 +02:00
include(KDE4Defaults)
option(WITH_XINERAMA "Xinerama support for multi-headed X displays" ON)
find_package(ZLIB)
set_package_properties(ZLIB PROPERTIES
DESCRIPTION "Support for gzip compressed files and data streams"
URL "http://www.zlib.net"
TYPE REQUIRED
)
2014-11-13 19:30:51 +02:00
macro_optional_find_package(DBusMenuQt 0.6.0)
set_package_properties(DBusMenuQt PROPERTIES
DESCRIPTION "Support for notification area menus via the DBusMenu protocol"
URL "https://launchpad.net/libdbusmenu-qt"
TYPE RECOMMENDED
)
2014-11-13 19:30:51 +02:00
macro_optional_find_package(Strigi 0.6.3)
set_package_properties(Strigi PROPERTIES
DESCRIPTION "Desktop indexing and search support"
URL "http://strigi.sourceforge.net"
PURPOSE "Fonts analyzer"
TYPE RECOMMENDED
)
2014-11-13 19:30:51 +02:00
macro_optional_find_package(OpenGL)
set_package_properties(OpenGL PROPERTIES
DESCRIPTION "The OpenGL libraries"
URL "http://www.opengl.org"
PURPOSE "3D screensavers and OpenGL info module"
TYPE OPTIONAL
)
2014-11-13 19:30:51 +02:00
macro_optional_find_package(OpenGLES)
set_package_properties(OpenGLES PROPERTIES
DESCRIPTION "The OpenGLES libraries"
URL "http://www.khronos.org/opengles"
TYPE OPTIONAL
PURPOSE "OpenGL ES info module"
)
2014-11-13 19:30:51 +02:00
macro_optional_find_package(UDev)
set_package_properties(UDev PROPERTIES
DESCRIPTION "The UDev Libraries"
PURPOSE "Allows support for UPower backend in PowerDevil - STRONGLY RECOMMENDED"
TYPE OPTIONAL
)
2014-11-13 19:30:51 +02:00
if(Q_WS_X11)
find_package(XCB REQUIRED)
set_package_properties(XCB PROPERTIES
DESCRIPTION "X protocol C-language Binding"
URL "http://xcb.freedesktop.org"
TYPE REQUIRED
)
find_package(X11_XCB)
set_package_properties(X11_XCB
PROPERTIES DESCRIPTION "XCB X11 protocol client library"
TYPE REQUIRED
)
find_package(X11)
set_package_properties(X11 PROPERTIES
DESCRIPTION "X11 libraries"
URL "http://www.x.org"
TYPE REQUIRED
)
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_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
endif(Q_WS_X11)
macro_optional_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"
PURPOSE "Needed to build the kxkb keyboard map control program and provide XMMS support in the Now Playing Plasma data engine"
TYPE OPTIONAL
)
2014-11-13 19:30:51 +02:00
macro_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
find_package(LibGcrypt 1.5.0)
2014-11-15 19:24:08 +00:00
set_package_properties(LibGcrypt PROPERTIES
DESCRIPTION "general purpose cryptographic library based on the code from GnuPG"
URL "https://www.gnu.org/software/libgcrypt/"
PURPOSE "kwalletd needs libgcrypt to perform PBKDF2-SHA512 hashing"
TYPE REQUIRED
)
2014-11-15 04:16:00 +02:00
find_package(JPEG)
set_package_properties(JPEG PROPERTIES
DESCRIPTION "Accelerated JPEG image codec"
URL "http://libjpeg-turbo.virtualgl.org/"
TYPE REQUIRED
)
find_package(PNG)
set_package_properties(PNG PROPERTIES
DESCRIPTION "An Open, Extensible Image Format with Lossless Compression"
URL "http://www.libpng.org/"
TYPE REQUIRED
)
macro_optional_find_package(LibGPS)
set_package_properties(LibGPS PROPERTIES
DESCRIPTION "GPSes/AIS service library"
URL "http://www.catb.org/gpsd/"
PURPOSE "GPS support for geolocation in plasma dataengine"
TYPE OPTIONAL
)
macro_optional_find_package(LibKonq)
set_package_properties(LibKonq PROPERTIES
DESCRIPTION "Konqueror library"
URL "http://fluxer.github.io/katana/"
PURPOSE "folderview plasma applets"
TYPE OPTIONAL
)
find_package(Perl)
set_package_properties(Perl PROPERTIES
DESCRIPTION "Highly capable, feature-rich programming language"
URL "http://www.perl.org"
PURPOSE "Needed for KDM config handler generator, as well as info and finger KIO slaves"
TYPE REQUIRED
)
set(POLKITQT-1_MIN_VERSION "0.99.0")
macro_optional_find_package(PolkitQt-1)
set_package_properties(PolkitQt-1 PROPERTIES
DESCRIPTION "Qt wrapper around polkit-1 client libraries"
URL "https://cgit.kde.org/polkit-qt-1.git/"
PURPOSE "polkit-1 agent"
TYPE OPTIONAL
)
2014-11-15 04:16:00 +02:00
check_include_files(sys/wait.h HAVE_SYS_WAIT_H)
check_include_files(sys/time.h HAVE_SYS_TIME_H)
2014-11-13 19:30:51 +02:00
include(ConfigureChecks.cmake)
configure_file(config-runtime.h.cmake ${CMAKE_BINARY_DIR}/config-runtime.h)
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)
# pictures
add_subdirectory(pics)
2015-09-26 03:10:52 +00:00
macro_optional_add_subdirectory(systemsettings )
2014-11-13 19:30:51 +02:00
# core apps
2015-09-26 03:10:52 +00:00
macro_optional_add_subdirectory(kcheckpass)
macro_optional_add_subdirectory(kwin)
macro_optional_add_subdirectory(ksmserver)
2014-11-15 05:21:19 +02:00
2015-09-26 03:10:52 +00:00
macro_optional_add_subdirectory(ksplash)
2014-11-15 05:21:19 +02:00
2015-09-26 03:10:52 +00:00
macro_optional_add_subdirectory(powerdevil)
macro_optional_add_subdirectory(qguiplatformplugin_kde)
macro_optional_add_subdirectory(ksysguard)
2014-11-13 19:30:51 +02:00
macro_optional_add_subdirectory(kcontrol)
macro_optional_add_subdirectory(klipper)
macro_optional_add_subdirectory(kmenuedit)
macro_optional_add_subdirectory(krunner)
macro_optional_add_subdirectory(solid-actions-kcm)
macro_optional_add_subdirectory(kstartupconfig)
macro_optional_add_subdirectory(freespacenotifier)
macro_optional_add_subdirectory(kscreensaver)
macro_optional_add_subdirectory(kinfocenter)
if(Q_WS_X11 AND X11_Xinput_FOUND)
macro_optional_add_subdirectory(ktouchpadenabler)
endif(Q_WS_X11 AND X11_Xinput_FOUND)
macro_optional_add_subdirectory(kcminit)
macro_optional_add_subdirectory(khotkeys)
macro_optional_add_subdirectory(kwrited)
macro_optional_add_subdirectory(ksystraycmd)
macro_optional_add_subdirectory(appmenu)
if(X11_Xau_FOUND AND X11_Xdmcp_FOUND)
macro_optional_add_subdirectory( kdm )
else(X11_Xau_FOUND AND X11_Xdmcp_FOUND)
message(STATUS "Xau lib or Xdmcp lib was missing. kdm will not compile")
endif(X11_Xau_FOUND AND X11_Xdmcp_FOUND)
2014-11-13 19:30:51 +02:00
2014-11-15 05:21:19 +02:00
# data
macro_optional_add_subdirectory(cursors)
2014-11-13 19:30:51 +02:00
macro_optional_add_subdirectory(plasma)
macro_optional_add_subdirectory(statusnotifierwatcher)
macro_optional_add_subdirectory(kstyles)
2014-11-19 01:07:40 +00:00
# imported from kde-runtime and other sub-projects
2014-11-15 04:16:00 +02:00
macro_optional_add_subdirectory(menu)
macro_optional_add_subdirectory(kwalletd)
2014-11-19 01:07:40 +00:00
macro_optional_add_subdirectory(kwalletmanager)
2014-11-15 04:16:00 +02:00
macro_optional_add_subdirectory(knotify)
macro_optional_add_subdirectory(kuiserver)
macro_optional_add_subdirectory(soliduiserver)
macro_optional_add_subdirectory(solidautoeject)
macro_optional_add_subdirectory(solid-device-automounter)
macro_optional_add_subdirectory(solid-networkstatus)
macro_optional_add_subdirectory(kcmshell)
macro_optional_add_subdirectory(kioslave)
macro_optional_add_subdirectory(kurifilter-plugins)
macro_optional_add_subdirectory(renamedlgplugins)
macro_optional_add_subdirectory(kquitapp)
2014-11-15 04:16:00 +02:00
if (Q_WS_X11)
macro_optional_add_subdirectory(kstart)
2014-11-15 04:16:00 +02:00
endif (Q_WS_X11)
if (POLKITQT-1_FOUND)
macro_optional_add_subdirectory(polkit-kde-agent)
endif(POLKITQT-1_FOUND)
2014-11-15 04:16:00 +02:00
# Background processes
macro_optional_add_subdirectory(kpasswdserver)
macro_optional_add_subdirectory(kdontchangethehostname)
macro_optional_add_subdirectory(kglobalaccel)
macro_optional_add_subdirectory(ktimezoned)
# Command-line tools (e.g. for shell scripts)
2015-09-06 02:42:53 +00:00
macro_optional_add_subdirectory(kdeeject)
2014-11-15 04:16:00 +02:00
macro_optional_add_subdirectory(kfile)
macro_optional_add_subdirectory(kiconfinder)
macro_optional_add_subdirectory(kioclient)
macro_optional_add_subdirectory(kioexec)
macro_optional_add_subdirectory(ktraderclient)
macro_optional_add_subdirectory(kreadconfig)
macro_optional_add_subdirectory(kmimetypefinder)
# UI Helper applications
macro_optional_add_subdirectory(drkonqi)
macro_optional_add_subdirectory(knetattach)
macro_optional_add_subdirectory(keditfiletype)
# Default settings, content and config
macro_optional_add_subdirectory(l10n)
macro_optional_add_subdirectory(localization)
macro_optional_add_subdirectory(kde-menu)
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
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 (IS_ABSOLUTE "${in}")
set(${out} "\${KDE4WORKSPACE_INSTALL_DIR}/${in}")
endif (IS_ABSOLUTE "${in}")
endmacro(MAKE_INSTALL_PATH_ABSOLUTE out in)
make_install_path_absolute(KDE4WORKSPACE_LIB_DIR ${KDE4_LIB_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_LIBEXEC_DIR ${KDE4_LIBEXEC_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_INCLUDE_DIR ${KDE4_INCLUDE_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_BIN_DIR ${KDE4_BIN_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_SBIN_DIR ${KDE4_SBIN_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_DATA_DIR ${KDE4_DATA_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_CONFIG_DIR ${KDE4_CONFIG_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_ICON_DIR ${KDE4_ICON_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_KCFG_DIR ${KDE4_KCFG_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_LOCALE_DIR ${KDE4_LOCALE_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_MIME_DIR ${KDE4_MIME_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_SOUND_DIR ${KDE4_SOUND_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_TEMPLATES_DIR ${KDE4_TEMPLATES_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_WALLPAPER_DIR ${KDE4_WALLPAPER_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_AUTOSTART_DIR ${KDE4_AUTOSTART_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_XDG_APPS_DIR ${KDE4_XDG_APPS_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_XDG_DIRECTORY_DIR ${KDE4_XDG_DIRECTORY_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_SYSCONF_DIR ${KDE4_SYSCONF_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_MAN_DIR ${KDE4_MAN_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_INFO_DIR ${KDE4_INFO_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_DBUS_INTERFACES_DIR ${KDE4_DBUS_INTERFACES_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_DBUS_SERVICES_DIR ${KDE4_DBUS_SERVICES_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_SERVICES_DIR ${KDE4_SERVICES_INSTALL_DIR})
make_install_path_absolute(KDE4WORKSPACE_SERVICETYPES_DIR ${KDE4_SERVICETYPES_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(
KDE4WorkspaceVersion.cmake.in
"${CMAKE_BINARY_DIR}/KDE4WorkspaceVersion.cmake"
@ONLY
)
install(
FILES
${CMAKE_BINARY_DIR}/KDE4WorkspaceConfig.cmake
${CMAKE_BINARY_DIR}/KDE4WorkspaceVersion.cmake
DESTINATION ${KDE4_DATA_INSTALL_DIR}/cmake/modules
)
# run a script before installing the exports files which deletes previously
# installed configuration specific export files, if the main exports file has
# changed this makes sure it doesn't include older and different configuration
# specific exports files, which might have a different set of targets or
# targets with different names.
install(
CODE "set(EXPORT_FILES KDE4WorkspaceLibraryTargets.cmake)"
CODE "set(EXPORT_INSTALL_DIR \"${KDE4_DATA_INSTALL_DIR}/cmake/modules\")"
SCRIPT "${CMAKE_SOURCE_DIR}/cmake/modules/check_installed_exports_file.cmake"
)
install(
EXPORT kdeworkspaceLibraryTargets
NAMESPACE ${KDE4WORKSPACE_TARGET_PREFIX}
DESTINATION ${KDE4_DATA_INSTALL_DIR}/cmake/modules
FILE KDE4WorkspaceLibraryTargets.cmake
)
2014-11-13 19:30:51 +02:00