summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/CMakeLists.txt22
-rw-r--r--cmake/DBus1Config.cmake.in37
-rw-r--r--cmake/DBus1Config.pkgconfig.in48
-rw-r--r--cmake/DBus1ConfigVersion.cmake.in11
4 files changed, 117 insertions, 1 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index b62ee656..1d08c6a5 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -104,7 +104,7 @@ set(DBUS_DATADIR ${CMAKE_INSTALL_FULL_DATADIR})
#enable building of shared library
SET(BUILD_SHARED_LIBS ON)
-set(INSTALL_TARGETS_DEFAULT_ARGS RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+set(INSTALL_TARGETS_DEFAULT_ARGS EXPORT DBus1Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if (CYGWIN)
set (WIN32)
@@ -523,6 +523,26 @@ endif()
add_definitions(-DHAVE_CONFIG_H=1)
+#
+# create cmake find_package related files
+#
+set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/DBus1)
+if(WIN32)
+ configure_file(DBus1Config.cmake.in "${CMAKE_BINARY_DIR}/DBus1Config.cmake" @ONLY)
+else()
+ configure_file(DBus1Config.pkgconfig.in "${CMAKE_BINARY_DIR}/DBus1Config.cmake" @ONLY)
+endif()
+configure_file(DBus1ConfigVersion.cmake.in "${CMAKE_BINARY_DIR}/DBus1ConfigVersion.cmake" @ONLY)
+install(FILES
+ "${CMAKE_BINARY_DIR}/DBus1Config.cmake"
+ "${CMAKE_BINARY_DIR}/DBus1ConfigVersion.cmake"
+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev
+)
+
+if(WIN32)
+ install(EXPORT DBus1Targets DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
+endif()
+
########### subdirs ###############
add_subdirectory( dbus )
diff --git a/cmake/DBus1Config.cmake.in b/cmake/DBus1Config.cmake.in
new file mode 100644
index 00000000..c389d5ea
--- /dev/null
+++ b/cmake/DBus1Config.cmake.in
@@ -0,0 +1,37 @@
+# - Config file for the DBus1 package
+# It defines the following variables
+# DBus1_FOUND - Flag for indicating that DBus1 package has been found
+# DBus1_DEFINITIONS - compile definitions for DBus1 [1]
+# DBus1_INCLUDE_DIRS - include directories for DBus1 [1]
+# DBus1_LIBRARIES - cmake targets to link against
+
+# [1] This variable is not required if DBus1_LIBRARIES is added
+# to a target with target_link_libraries
+
+# Compute paths
+if(@DBUS_RELOCATABLE@)
+ get_filename_component(DBus1_INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
+else()
+ set(DBus1_INSTALL_DIR "@DBUS_PREFIX@")
+endif()
+# Our library dependencies (contains definitions for IMPORTED targets)
+if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/DBus1Targets.cmake")
+ # do not additional search paths for implicit libraries
+ # see https://cmake.org/cmake/help/v3.0/policy/CMP0003.html
+ if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+ endif(COMMAND cmake_policy)
+
+ if(NOT TARGET dbus-1)
+ include("${CMAKE_CURRENT_LIST_DIR}/DBus1Targets.cmake")
+ endif()
+
+ set(DBus1_INCLUDE_DIRS "${DBus1_INSTALL_DIR}/@CMAKE_INSTALL_INCLUDEDIR@/dbus-1.0" "${DBus1_INSTALL_DIR}/@CMAKE_INSTALL_LIBDIR@/dbus-1.0/include")
+ set(DBus1_DEFINITIONS)
+ set(DBus1_LIBRARIES dbus-1)
+
+ set_property(TARGET dbus-1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${DBus1_INCLUDE_DIRS})
+ set_property(TARGET dbus-1 PROPERTY INTERFACE_COMPILE_DEFINITIONS ${DBus1_DEFINITIONS})
+else()
+ message(FATAL_ERROR "Incomplete cmake support in DBus1 find_package configuration")
+endif()
diff --git a/cmake/DBus1Config.pkgconfig.in b/cmake/DBus1Config.pkgconfig.in
new file mode 100644
index 00000000..7e090aa5
--- /dev/null
+++ b/cmake/DBus1Config.pkgconfig.in
@@ -0,0 +1,48 @@
+# - Config file for the DBus1 package
+# It defines the following variables
+# DBus1_FOUND - Flag for indicating that DBus1 package has been found
+# DBus1_DEFINITIONS - compile definitions for DBus1 [1]
+# DBus1_INCLUDE_DIRS - include directories for DBus1 [1]
+# DBus1_LIBRARIES - cmake targets to link against
+
+# [1] This variable is not required if DBus1_LIBRARIES is added
+# to a target with target_link_libraries
+
+get_filename_component(DBus1_PKGCONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../../pkgconfig" ABSOLUTE)
+find_package(PkgConfig)
+set(ENV{PKG_CONFIG_DIR})
+set(ENV{PKG_CONFIG_PATH} ${DBus1_PKGCONFIG_DIR})
+set(ENV{PKG_CONFIG_LIBDIR} ${DBus1_PKGCONFIG_DIR})
+# for debugging
+#set(ENV{PKG_CONFIG_DEBUG_SPEW} 1)
+pkg_check_modules(PC_DBUS1 QUIET dbus-1)
+set(DBus1_DEFINITIONS ${PC_DBUS1_CFLAGS_OTHER})
+
+# find the real stuff and use pkgconfig variables as hints
+# because cmake provides more search options
+find_path(DBus1_INCLUDE_DIR dbus/dbus.h
+ HINTS ${PC_DBUS1_INCLUDEDIR} ${PC_DBUS1_INCLUDE_DIRS}
+ PATH_SUFFIXES dbus-1.0)
+find_path(DBus1_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h
+ HINTS ${PC_DBUS1_INCLUDE_DIRS}
+ PATH_SUFFIXES dbus-1.0)
+find_library(DBus1_LIBRARY NAMES ${PC_DBUS1_LIBRARIES}
+ HINTS ${PC_DBUS1_LIBDIR} ${PC_DBUS1_LIBRARY_DIRS})
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set DBus1_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(DBus1 DEFAULT_MSG
+ DBus1_LIBRARY DBus1_INCLUDE_DIR DBus1_ARCH_INCLUDE_DIR)
+
+# make the mentioned variables only visible in cmake gui with "advanced" enabled
+mark_as_advanced(DBus1_INCLUDE_DIR DBus1_LIBRARY)
+
+set(DBus1_LIBRARIES dbus-1)
+set(DBus1_INCLUDE_DIRS "${DBus1_INCLUDE_DIR}" "${DBus1_ARCH_INCLUDE_DIR}")
+
+# setup imported target
+add_library(dbus-1 SHARED IMPORTED)
+set_property(TARGET dbus-1 APPEND PROPERTY IMPORTED_LOCATION ${DBus1_LIBRARY})
+set_property(TARGET dbus-1 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${DBus1_INCLUDE_DIRS})
+set_property(TARGET dbus-1 APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS ${DBus1_DEFINITIONS})
diff --git a/cmake/DBus1ConfigVersion.cmake.in b/cmake/DBus1ConfigVersion.cmake.in
new file mode 100644
index 00000000..239bf593
--- /dev/null
+++ b/cmake/DBus1ConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION @DBUS_VERSION@)
+
+# 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()