Commit 622efdd3 authored by Dylan Baker's avatar Dylan Baker Committed by Chad Versace

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: default avatarDylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Jordan Justen's avatarJordan Justen <jordan.l.justen@intel.com>
Reviewed-by: default avatarChad Versace <chad.versace@intel.com>
parent 6fb98d62
......@@ -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
# ------------------------------------------------------------------------------
......
WaffleConfigVersion.cmake
WaffleConfig.cmake
# 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@")
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment