aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2012-02-16 17:15:36 +0100
committerAlex Neundorf <neundorf@kde.org>2012-02-16 17:15:36 +0100
commit7289a5515ef107f1d15a4743a63b298337d9a214 (patch)
tree9a10c4dd8057c8c5610678831b8200d12880bb99
parent4aa7260da37c66b8ed502f630489f2fd1eece2f1 (diff)
downloadextra-cmake-modules-7289a5515ef107f1d15a4743a63b298337d9a214.tar.gz
extra-cmake-modules-7289a5515ef107f1d15a4743a63b298337d9a214.tar.bz2
-add a directory for KDE specific files and add a KDEInstallDirs.cmake
KDEInstallDirs.cmake is similar to GNUInstallDirs.cmake coming with cmake, but provides the install variables as used by KDE. It also provides the special feature of initializing them to the values from kdelibs (?) when installed into the same prefix. Currently it all still uses "kde4", I'm not sure this will stay this way. Alex
-rw-r--r--CMakeLists.txt12
-rw-r--r--extra-cmake-modules-config.cmake.in4
-rw-r--r--kde-modules/KDEInstallDirs.cmake179
3 files changed, 190 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 13fa6a4e..ff9bc317 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ project(extra-cmake-modules)
set(ECM_MAJOR_VERSION 0)
set(ECM_MINOR_VERSION 0)
-set(ECM_PATCH_VERSION 2)
+set(ECM_PATCH_VERSION 3)
set(ECM_VERSION ${ECM_MAJOR_VERSION}.${ECM_MINOR_VERSION}.${ECM_PATCH_VERSION})
@@ -13,15 +13,16 @@ add_subdirectory(tests)
set(SHARE_INSTALL_DIR share/extra-cmake-modules-${ECM_VERSION})
set(MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/modules/)
+set(KDE_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/kde-modules/)
set(FIND_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/find-modules/)
set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_DIR}/cmake/)
set(DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/)
# create and install docs
add_custom_target(ManPage ALL
- COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.1"
- COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.html"
- COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.txt"
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules\;${CMAKE_SOURCE_DIR}/kde-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.1"
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules\;${CMAKE_SOURCE_DIR}/kde-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.html"
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/modules\;${CMAKE_SOURCE_DIR}/find-modules\;${CMAKE_SOURCE_DIR}/kde-modules --help-custom-modules "${CMAKE_BINARY_DIR}/extra-cmake-modules.txt"
VERBATIM
)
@@ -34,6 +35,9 @@ install(FILES "${CMAKE_BINARY_DIR}/extra-cmake-modules.txt" "${CMAKE_BINARY_DIR}
file(GLOB installModuleFiles ${CMAKE_SOURCE_DIR}/modules/*[^~])
install(FILES ${installModuleFiles} DESTINATION ${MODULES_INSTALL_DIR})
+file(GLOB installKdeModuleFiles ${CMAKE_SOURCE_DIR}/kde-modules/*[^~])
+install(FILES ${installKdeModuleFiles} DESTINATION ${KDE_MODULES_INSTALL_DIR})
+
file(GLOB installFindModuleFiles ${CMAKE_SOURCE_DIR}/find-modules/*[^~])
install(FILES ${installFindModuleFiles} DESTINATION ${FIND_MODULES_INSTALL_DIR})
diff --git a/extra-cmake-modules-config.cmake.in b/extra-cmake-modules-config.cmake.in
index 0906ac12..33ae10d8 100644
--- a/extra-cmake-modules-config.cmake.in
+++ b/extra-cmake-modules-config.cmake.in
@@ -11,6 +11,8 @@ set(EXTRA_CMAKE_MODULES_FIND_MODULE_DIR "${rootDir}/@FIND_MODULES_INSTALL_DIR@")
set(EXTRA_CMAKE_MODULES_MODULE_DIR "${rootDir}/@MODULES_INSTALL_DIR@")
-set(EXTRA_CMAKE_MODULES_MODULE_PATH "${EXTRA_CMAKE_MODULES_MODULE_DIR}" "${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR}")
+set(EXTRA_CMAKE_MODULES_KDE_MODULE_DIR "${rootDir}/@KDE_MODULES_INSTALL_DIR@")
+
+set(EXTRA_CMAKE_MODULES_MODULE_PATH "${EXTRA_CMAKE_MODULES_MODULE_DIR}" "${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR}" "${EXTRA_CMAKE_MODULES_KDE_MODULE_DIR}")
include("${EXTRA_CMAKE_MODULES_MODULE_DIR}/ECMUseFindModules.cmake")
diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake
new file mode 100644
index 00000000..45dd6877
--- /dev/null
+++ b/kde-modules/KDEInstallDirs.cmake
@@ -0,0 +1,179 @@
+# This module defines also a bunch of variables used as locations for install directories
+# for files of the package which is using this module. These variables don't say
+# anything about the location of the installed KDE.
+# They can be relative (to CMAKE_INSTALL_PREFIX) or absolute.
+# Under Windows they are always relative.
+#
+# BIN_INSTALL_DIR - the directory where executables will be installed (default is prefix/bin)
+# BUNDLE_INSTALL_DIR - Mac only: the directory where application bundles will be installed (default is /Applications/KDE4 )
+# SBIN_INSTALL_DIR - the directory where system executables will be installed (default is prefix/sbin)
+# LIB_INSTALL_DIR - the directory where libraries will be installed (default is prefix/lib)
+# CONFIG_INSTALL_DIR - the directory where config files will be installed
+# DATA_INSTALL_DIR - the parent directory where applications can install their data
+# HTML_INSTALL_DIR - the directory where HTML documentation will be installed
+# ICON_INSTALL_DIR - the directory where the icons will be installed (default prefix/share/icons/)
+# INFO_INSTALL_DIR - the directory where info files will be installed (default prefix/info)
+# KCFG_INSTALL_DIR - the directory where kconfig files will be installed
+# LOCALE_INSTALL_DIR - the directory where translations will be installed
+# MAN_INSTALL_DIR - the directory where man pages will be installed (default prefix/man/)
+# MIME_INSTALL_DIR - the directory where mimetype desktop files will be installed
+# PLUGIN_INSTALL_DIR - the subdirectory relative to the install prefix where plugins will be installed (default is ${KDE4_LIB_INSTALL_DIR}/kde4)
+# IMPORTS_INSTALL_DIR - the subdirectory relative to the install prefix where imports will be installed
+# SERVICES_INSTALL_DIR - the directory where service (desktop, protocol, ...) files will be installed
+# SERVICETYPES_INSTALL_DIR - the directory where servicestypes desktop files will be installed
+# SOUND_INSTALL_DIR - the directory where sound files will be installed
+# TEMPLATES_INSTALL_DIR - the directory where templates (Create new file...) will be installed
+# WALLPAPER_INSTALL_DIR - the directory where wallpapers will be installed
+# AUTOSTART_INSTALL_DIR - the directory where autostart files will be installed
+# DEMO_INSTALL_DIR - the directory where demos will be installed
+# KCONF_UPDATE_INSTALL_DIR - the directory where kconf_update files will be installed
+# SYSCONF_INSTALL_DIR - the directory where sysconfig files will be installed (default /etc)
+# XDG_APPS_INSTALL_DIR - the XDG apps dir
+# XDG_DIRECTORY_INSTALL_DIR- the XDG directory
+# XDG_MIME_INSTALL_DIR - the XDG mimetypes install dir
+# DBUS_INTERFACES_INSTALL_DIR - the directory where dbus interfaces will be installed (default is prefix/share/dbus-1/interfaces)
+# DBUS_SERVICES_INSTALL_DIR - the directory where dbus services will be installed (default is prefix/share/dbus-1/services )
+# DBUS_SYSTEM_SERVICES_INSTALL_DIR - the directory where dbus system services will be installed (default is prefix/share/dbus-1/system-services )
+#
+# The variable INSTALL_TARGETS_DEFAULT_ARGS can be used when installing libraries
+# or executables into the default locations.
+# The INSTALL_TARGETS_DEFAULT_ARGS variable should be used when libraries are installed.
+# It should also be used when installing applications, since then
+# on OS X application bundles will be installed to BUNDLE_INSTALL_DIR.
+# The variable MUST NOT be used for installing plugins.
+# It also MUST NOT be used for executables which are intended to go into sbin/ or libexec/.
+#
+# Usage is like this:
+# install(TARGETS kdecore kdeui ${INSTALL_TARGETS_DEFAULT_ARGS} )
+#
+# This will install libraries correctly under UNIX, OSX and Windows (i.e. dll's go
+# into bin/.
+
+
+
+# Figure out what the default install directory for libraries should be.
+# This is the same logic as in cmake's GNUInstallDirs.cmake.
+set(_LIBDIR_DEFAULT "lib")
+# Override this default 'lib' with 'lib64' iff:
+# - we are on Linux system but NOT cross-compiling
+# - we are NOT on debian
+# - we are on a 64 bits system
+# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+# See http://wiki.debian.org/Multiarch
+if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT CMAKE_CROSSCOMPILING)
+ if (EXISTS "/etc/debian_version") # is this a debian system ?
+ if(CMAKE_LIBRARY_ARCHITECTURE)
+ set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+ endif()
+ else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
+ if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+ message(AUTHOR_WARNING
+ "Unable to determine default LIB_INSTALL_LIBDIR directory because no target architecture is known. "
+ "Please enable at least one language before including KDEInstallDirs.")
+ else()
+ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+ set(_LIBDIR_DEFAULT "lib64")
+ endif()
+ endif()
+ endif()
+endif()
+
+
+# This macro implements some very special logic how to deal with the cache.
+# By default the various install locations inherit their value from their "parent" variable
+# so if you set CMAKE_INSTALL_PREFIX, then EXEC_INSTALL_PREFIX, PLUGIN_INSTALL_DIR will
+# calculate their value by appending subdirs to CMAKE_INSTALL_PREFIX .
+# This would work completely without using the cache.
+# But if somebody wants e.g. a different EXEC_INSTALL_PREFIX this value has to go into
+# the cache, otherwise it will be forgotten on the next cmake run.
+# Once a variable is in the cache, it doesn't depend on its "parent" variables
+# anymore and you can only change it by editing it directly.
+# this macro helps in this regard, because as long as you don't set one of the
+# variables explicitely to some location, it will always calculate its value from its
+# parents. So modifying CMAKE_INSTALL_PREFIX later on will have the desired effect.
+# But once you decide to set e.g. EXEC_INSTALL_PREFIX to some special location
+# this will go into the cache and it will no longer depend on CMAKE_INSTALL_PREFIX.
+#
+# additionally if installing to the same location as kdelibs, the other install
+# directories are reused from the installed kdelibs
+macro(_SET_FANCY _var _value _comment)
+ set(_predefinedvalue "${_value}")
+ if ("${CMAKE_INSTALL_PREFIX}" STREQUAL "${KDE4_INSTALL_DIR}" AND DEFINED KDE4_${_var})
+ set(_predefinedvalue "${KDE4_${_var}}")
+ endif()
+
+ if (NOT DEFINED ${_var})
+ set(${_var} ${_predefinedvalue})
+ else()
+ set(${_var} "${${_var}}" CACHE STRING "${_comment}")
+ endif()
+endmacro(_SET_FANCY)
+
+
+if(APPLE)
+ set(BUNDLE_INSTALL_DIR "/Applications/KDE4" CACHE PATH "Directory where application bundles will be installed to on OSX" )
+endif(APPLE)
+
+_set_fancy(EXEC_INSTALL_PREFIX "" "Base directory for executables and libraries")
+_set_fancy(SHARE_INSTALL_PREFIX "share" "Base directory for files which go to share/")
+
+_set_fancy(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}bin" "The install dir for executables (default ${EXEC_INSTALL_PREFIX}/bin)")
+_set_fancy(SBIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}sbin" "The install dir for system executables (default ${EXEC_INSTALL_PREFIX}/sbin)")
+_set_fancy(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}${_LIBDIR_DEFAULT}" "The subdirectory relative to the install prefix where libraries will be installed (default is ${EXEC_INSTALL_PREFIX}/lib[64], Debian multiarch is taken into account)")
+if(WIN32)
+ _set_fancy(LIBEXEC_INSTALL_DIR "${BIN_INSTALL_DIR}" "The install dir for libexec executables (default is ${LIB_INSTALL_DIR}/kde4/libexec)")
+else()
+ _set_fancy(LIBEXEC_INSTALL_DIR "${LIB_INSTALL_DIR}/kde4/libexec" "The install dir for libexec executables (default is ${LIB_INSTALL_DIR}/kde4/libexec)")
+endif()
+_set_fancy(INCLUDE_INSTALL_DIR "include" "The install dir for header files")
+
+_set_fancy(PLUGIN_INSTALL_DIR "${LIB_INSTALL_DIR}/kde4" "The install dir where plugins will be installed (default is ${LIB_INSTALL_DIR}/kde4)")
+_set_fancy(IMPORTS_INSTALL_DIR "${PLUGIN_INSTALL_DIR}/imports" "The install dir where imports will be installed")
+_set_fancy(CONFIG_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/config" "The config file install dir")
+_set_fancy(DATA_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/apps" "The parent directory where applications can install their data")
+_set_fancy(HTML_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/doc/HTML" "The HTML install dir for documentation")
+_set_fancy(ICON_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/icons" "The icon install dir (default ${SHARE_INSTALL_PREFIX}/share/icons/)")
+_set_fancy(KCFG_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/config.kcfg" "The install dir for kconfig files")
+_set_fancy(LOCALE_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/locale" "The install dir for translations")
+_set_fancy(SERVICES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/kde4/services" "The install dir for service (desktop, protocol, ...) files")
+_set_fancy(SERVICETYPES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/kde4/servicetypes" "The install dir for servicestypes desktop files")
+_set_fancy(SOUND_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/sounds" "The install dir for sound files")
+_set_fancy(TEMPLATES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/templates" "The install dir for templates (Create new file...)")
+_set_fancy(WALLPAPER_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/wallpapers" "The install dir for wallpapers")
+_set_fancy(KCONF_UPDATE_INSTALL_DIR "${DATA_INSTALL_DIR}/kconf_update" "The kconf_update install dir")
+_set_fancy(AUTOSTART_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/autostart" "The install dir for autostart files")
+
+_set_fancy(XDG_APPS_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/applications/kde4" "The XDG apps dir")
+_set_fancy(XDG_DIRECTORY_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/desktop-directories" "The XDG directory")
+_set_fancy(XDG_MIME_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/mime/packages" "The install dir for the xdg mimetypes")
+
+_set_fancy(SYSCONF_INSTALL_DIR "etc" "The sysconfig install dir (default ${CMAKE_INSTALL_PREFIX}/etc)")
+_set_fancy(MAN_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/man" "The man install dir (default ${SHARE_INSTALL_PREFIX}/man/)")
+
+_set_fancy(DBUS_INTERFACES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/dbus-1/interfaces" "The dbus interfaces install dir (default ${SHARE_INSTALL_PREFIX}/dbus-1/interfaces)")
+_set_fancy(DBUS_SERVICES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/dbus-1/services" "The dbus services install dir (default ${SHARE_INSTALL_PREFIX}/dbus-1/services)")
+_set_fancy(DBUS_SYSTEM_SERVICES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/dbus-1/system-services" "The dbus system services install dir (default ${SHARE_INSTALL_PREFIX}/dbus-1/system-services)")
+
+
+
+# For more documentation see above.
+# Later on it will be possible to extend this for installing OSX frameworks
+# The COMPONENT Devel argument has the effect that static libraries belong to the
+# "Devel" install component. If we use this also for all install() commands
+# for header files, it will be possible to install
+# -everything: make install OR cmake -P cmake_install.cmake
+# -only the development files: cmake -DCOMPONENT=Devel -P cmake_install.cmake
+# -everything except the development files: cmake -DCOMPONENT=Unspecified -P cmake_install.cmake
+# This can then also be used for packaging with cpack.
+set(INSTALL_TARGETS_DEFAULT_ARGS RUNTIME DESTINATION "${BIN_INSTALL_DIR}"
+ LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
+ ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" COMPONENT Devel )
+
+
+# on the Mac support an extra install directory for application bundles
+if(APPLE)
+ set(INSTALL_TARGETS_DEFAULT_ARGS ${INSTALL_TARGETS_DEFAULT_ARGS}
+ BUNDLE DESTINATION "${BUNDLE_INSTALL_DIR}" )
+endif(APPLE)