summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2017-02-07 12:03:33 +0100
committerRalf Habacker <ralf.habacker@freenet.de>2017-02-07 12:03:33 +0100
commit2e2eda07cfb73d2a71abd9b9e990f853ccce6e6c (patch)
tree8d1a43110e3046b310d6c392f6b721d4bf81e9bf
parent1dc3af66dfd437f1e64f18e02424b0d8547df9fe (diff)
downloaddbus-cmake-config-find-package-support.tar.gz
Add find package config support.cmake-config-find-package-support
-rw-r--r--cmake/CMakeLists.txt35
-rw-r--r--cmake/DBusConfig.cmake.in18
-rw-r--r--cmake/DBusConfigVersion.cmake.in11
3 files changed, 62 insertions, 2 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 2c397d29..2d433061 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -97,9 +97,9 @@ set(DBUS_DATADIR ${EXPANDED_DATADIR})
SET(BUILD_SHARED_LIBS ON)
if(WIN32)
- set(INSTALL_TARGETS_DEFAULT_ARGS RUNTIME DESTINATION "bin" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib")
+ set(INSTALL_TARGETS_DEFAULT_ARGS EXPORT DBusTargets RUNTIME DESTINATION "bin" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib")
else()
- set(INSTALL_TARGETS_DEFAULT_ARGS RUNTIME DESTINATION "${EXPANDED_LIBDIR}" LIBRARY DESTINATION "${EXPANDED_LIBDIR}" ARCHIVE DESTINATION "${EXPANDED_LIBDIR}")
+ set(INSTALL_TARGETS_DEFAULT_ARGS EXPORT DBusTargets RUNTIME DESTINATION "${EXPANDED_LIBDIR}" LIBRARY DESTINATION "${EXPANDED_LIBDIR}" ARCHIVE DESTINATION "${EXPANDED_LIBDIR}")
endif()
if (CYGWIN)
@@ -635,3 +635,34 @@ add_custom_target(help-options
cmake -LH
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
+
+#
+# create cmake find_package support
+#
+if(WIN32 AND NOT CYGWIN)
+ set(DEF_INSTALL_CMAKE_DIR CMake)
+else()
+ set(DEF_INSTALL_CMAKE_DIR lib/CMake/DBus)
+endif()
+set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
+
+# Make relative paths absolute (needed later on)
+foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+ if(NOT IS_ABSOLUTE "${${var}}")
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+ endif()
+endforeach()
+
+file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
+set(CONF_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}")
+configure_file(DBusConfig.cmake.in "${CMAKE_BINARY_DIR}/DBusConfig.cmake" @ONLY)
+set(CONF_INCLUDE_DIRS "\${FOOBAR_CMAKE_DIR}/${REL_INCLUDE_DIR}")
+configure_file(DBusConfig.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DBusConfig.cmake" @ONLY)
+configure_file(DBusConfigVersion.cmake.in "${CMAKE_BINARY_DIR}/DBusConfigVersion.cmake" @ONLY)
+install(FILES
+ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DBusConfig.cmake"
+ "${CMAKE_BINARY_DIR}/DBusConfigVersion.cmake"
+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev
+)
+install(EXPORT DBusTargets DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
diff --git a/cmake/DBusConfig.cmake.in b/cmake/DBusConfig.cmake.in
new file mode 100644
index 00000000..23428db7
--- /dev/null
+++ b/cmake/DBusConfig.cmake.in
@@ -0,0 +1,18 @@
+# - Config file for the FooBar package
+# It defines the following variables
+# DBUS_INCLUDE_DIRS - include directories for FooBar
+# DBUS_LIBRARIES - libraries to link against
+# DBUS_EXECUTABLE - the bar executable
+
+# Compute paths
+get_filename_component(DBUS1_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+set(DBUS_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
+
+# Our library dependencies (contains definitions for IMPORTED targets)
+if(NOT TARGET dbus AND NOT CMAKE_BINARY_DIR)
+ include("${DBUS_CMAKE_DIR}/DBusTargets.cmake")
+endif()
+
+# These are IMPORTED targets created by FooBarTargets.cmake
+set(DBUS_LIBRARIES dbus-1)
+set(DBUS_EXECUTABLE dbus-daemon)
diff --git a/cmake/DBusConfigVersion.cmake.in b/cmake/DBusConfigVersion.cmake.in
new file mode 100644
index 00000000..8c7b6eaf
--- /dev/null
+++ b/cmake/DBusConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION "@DBUS_VERSION_STRING@")
+
+# Check whether the requested PACKAGE_FIND_VERSION is compatible
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()