summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <baker.dylan.c@gmail.com>2014-12-29 09:36:52 -0800
committerChad Versace <chad.versace@linux.intel.com>2014-12-31 18:42:18 -0800
commit622efdd3f3e832ac34edb9f7f54bb675f0fdec13 (patch)
treec19ddbd22603261a4c563419f6cdd66ead6f8294
parent6fb98d621a1b123b08f5575eb051458f13998c9d (diff)
cmake: Add cmake PackageConfig files
This creates and installs a package version file and a package config file. These are used by find_package with the CONFIG option, and are roughly equivalent to pkgconfig, but is cmake specific rather than linux specific. v2: - Use configure_package_config_file() instead of config_file(), which generates helper macros and resolves relative paths allowing the entire install to be moved. - Update WaffleConfig.cmake.in to take advantage of configure_package_config_file() - Use SameMajorVersion instead of AnyNewerVersion for version compatibility. Since waffle uses apache's numbering scheme 2.0.0 should not fulfill a requirement of 1.5.0 and vice versa. v3: - Use CMAKE_BINARY_DIR (Jordan) - Move generation of cmake config to the same area of the cmake file as pkgconfig Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Chad Versace <chad.versace@intel.com>
-rw-r--r--CMakeLists.txt27
-rw-r--r--cmake/Modules/.gitignore2
-rw-r--r--cmake/Modules/WaffleConfig.cmake.in12
3 files changed, 40 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 474d203..470cd67 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,7 +107,8 @@ if(waffle_build_examples)
endif()
# ------------------------------------------------------------------------------
-# Install packaging files: waffle.pc, FindWaffle.cmake
+# Install packaging files: waffle.pc, FindWaffle.cmake,
+# WaffleConfigVersion.cmake, and WaffleConfig.cmake
# ------------------------------------------------------------------------------
configure_file(waffle.pc.in ${waffle_libname}.pc @ONLY)
@@ -124,6 +125,30 @@ install(
COMPONENT cmakefind
)
+set(ConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/Waffle")
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfigVersion.cmake"
+ VERSION "${waffle_version}"
+ COMPATIBILITY SameMajorVersion
+)
+
+configure_package_config_file(
+ cmake/Modules/WaffleConfig.cmake.in
+ cmake/Modules/WaffleConfig.cmake
+ INSTALL_DESTINATION "${ConfigPackageLocation}"
+ PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
+)
+
+install(
+ FILES
+ "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfigVersion.cmake"
+ "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfig.cmake"
+ DESTINATION "${ConfigPackageLocation}"
+ COMPONENT devel
+)
+
# ------------------------------------------------------------------------------
# Install core documentation
# ------------------------------------------------------------------------------
diff --git a/cmake/Modules/.gitignore b/cmake/Modules/.gitignore
new file mode 100644
index 0000000..9742f46
--- /dev/null
+++ b/cmake/Modules/.gitignore
@@ -0,0 +1,2 @@
+WaffleConfigVersion.cmake
+WaffleConfig.cmake
diff --git a/cmake/Modules/WaffleConfig.cmake.in b/cmake/Modules/WaffleConfig.cmake.in
new file mode 100644
index 0000000..b60b470
--- /dev/null
+++ b/cmake/Modules/WaffleConfig.cmake.in
@@ -0,0 +1,12 @@
+# Config module for Waffle
+#
+# Provides the following variables
+# Waffle_INCLUDE_DIRS - Directories to include
+# Waffle_LIBRARIES - Libraries to link
+# Waffle_LIBRARY_DIRS - Library directories to search for link libraries
+
+@PACKAGE_INIT@
+
+set_and_check(Waffle_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/@waffle_libname@")
+set_and_check(Waffle_LIBRARY_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
+set(Waffle_LIBRARIES "@waffle_libname@")