From 91b2869e22ef7343bd2dc5c2bcca353f6cd65deb Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 12 Jul 2023 13:41:12 +0200 Subject: [PATCH 1/2] add cmake package config --- src/CMakeLists.txt | 20 ++++++++++++++++++++ src/libfido2Config.cmake.in | 8 ++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/libfido2Config.cmake.in diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 73493b1ea..c731cd27e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -156,3 +156,23 @@ if(NOT MSVC) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libfido2.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") endif() + +include(CMakePackageConfigHelpers) +configure_package_config_file( + libfido2Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/libfido2Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libfido2 + PATH_VARS CMAKE_INSTALL_INCLUDEDIR +) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/libfido2ConfigVersion.cmake + VERSION ${FIDO_VERSION} + COMPATIBILITY SameMajorVersion +) +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/libfido2Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/libfido2ConfigVersion.cmake + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/libfido2 + ) diff --git a/src/libfido2Config.cmake.in b/src/libfido2Config.cmake.in new file mode 100644 index 000000000..8442ae2e1 --- /dev/null +++ b/src/libfido2Config.cmake.in @@ -0,0 +1,8 @@ +set(FIDO_VERSION @FIDO_VERSION@) + +@PACKAGE_INIT@ + +set_and_check(FIDO_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set_and_check(FIDO_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") + +check_required_components(libfido2) From 461e9865319998e7b209d7ef7bb92773753fb3c0 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 13 Jul 2023 14:47:20 +0200 Subject: [PATCH 2/2] add libfido2Targets.cmake --- src/CMakeLists.txt | 13 ++++++++++--- src/libfido2Config.cmake.in | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c731cd27e..a4e057768 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -132,8 +132,11 @@ if(BUILD_STATIC_LIBS) set_target_properties(fido2 PROPERTIES OUTPUT_NAME fido2_static) endif() target_link_libraries(fido2 ${TARGET_LIBRARIES}) - install(TARGETS fido2 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS fido2 + EXPORT libfido2Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) endif() # dynamic library @@ -143,9 +146,11 @@ if(BUILD_SHARED_LIBS) VERSION ${FIDO_VERSION} SOVERSION ${FIDO_MAJOR}) target_link_libraries(fido2_shared ${TARGET_LIBRARIES}) install(TARGETS fido2_shared + EXPORT libfido2Targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) endif() install(FILES fido.h DESTINATION include) @@ -158,6 +163,7 @@ if(NOT MSVC) endif() include(CMakePackageConfigHelpers) +export(PACKAGE libfido2) configure_package_config_file( libfido2Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/libfido2Config.cmake @@ -169,6 +175,7 @@ write_basic_package_version_file( VERSION ${FIDO_VERSION} COMPATIBILITY SameMajorVersion ) +install(EXPORT libfido2Targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libfido2) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libfido2Config.cmake diff --git a/src/libfido2Config.cmake.in b/src/libfido2Config.cmake.in index 8442ae2e1..6354de173 100644 --- a/src/libfido2Config.cmake.in +++ b/src/libfido2Config.cmake.in @@ -6,3 +6,5 @@ set_and_check(FIDO_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") set_and_check(FIDO_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") check_required_components(libfido2) + +include("${CMAKE_CURRENT_LIST_DIR}/libfido2Targets.cmake")