From 2e2eda07cfb73d2a71abd9b9e990f853ccce6e6c Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 7 Feb 2017 12:03:33 +0100 Subject: Add find package config support. --- cmake/CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++-- cmake/DBusConfig.cmake.in | 18 ++++++++++++++++++ cmake/DBusConfigVersion.cmake.in | 11 +++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 cmake/DBusConfig.cmake.in create mode 100644 cmake/DBusConfigVersion.cmake.in 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() -- cgit v1.2.1