From fbfed3a8612c85697530b0a2702f7e6d5210c3bb Mon Sep 17 00:00:00 2001 From: bmarques1995 Date: Sun, 26 May 2024 15:58:35 -0300 Subject: [PATCH] Added cmake version and target --- CMakeLists.txt | 29 ++++++++++++++++++++++++++++- cmake/config.cmake.in | 3 +++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 cmake/config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 738956043..4d865f41b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.15) # This policy is set because we can't provide "VERSION" in "project" command. # Use `cmake --help-policy CMP0048` for more information. cmake_policy(SET CMP0048 NEW) -project(brotli C) +project(brotli LANGUAGES C VERSION 1.1.1) option(BUILD_SHARED_LIBS "Build shared libraries" ON) set(BROTLI_BUILD_TOOLS ON CACHE BOOL "Build/install CLI tools") @@ -162,6 +162,32 @@ endif() # Installation if(NOT BROTLI_BUNDLED_MODE) + #CMake package + + set(BROTLI_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") + set(BROTLI_VERSION_CONFIG "${BROTLI_GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake") + set(BROTLI_PROJECT_CONFIG "${BROTLI_GENERATED_DIR}/${PROJECT_NAME}Config.cmake") + set(BROTLI_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") + set(BROTLI_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") + set(BROTLI_NAMESPACE "${PROJECT_NAME}::") + set(BROTLI_VERSION ${PROJECT_VERSION}) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "${BROTLI_VERSION_CONFIG}" VERSION ${BROTLI_VERSION} COMPATIBILITY SameMajorVersion + ) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake.in" "${BROTLI_PROJECT_CONFIG}" @ONLY) + + # Install cmake config files + install( + FILES "${BROTLI_PROJECT_CONFIG}" "${BROTLI_VERSION_CONFIG}" + DESTINATION "${BROTLI_CONFIG_INSTALL_DIR}") + + install( + EXPORT "${BROTLI_TARGETS_EXPORT_NAME}" + NAMESPACE "${BROTLI_NAMESPACE}" + DESTINATION "${BROTLI_CONFIG_INSTALL_DIR}") + if (BROTLI_BUILD_TOOLS) install( TARGETS brotli @@ -171,6 +197,7 @@ if(NOT BROTLI_BUNDLED_MODE) install( TARGETS ${BROTLI_LIBRARIES_CORE} + EXPORT ${BROTLI_TARGETS_EXPORT_NAME} ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in new file mode 100644 index 000000000..2ac896cb9 --- /dev/null +++ b/cmake/config.cmake.in @@ -0,0 +1,3 @@ +include(CMakeFindDependencyMacro) + +include("${CMAKE_CURRENT_LIST_DIR}/@NGHTTP3_TARGETS_EXPORT_NAME@.cmake") \ No newline at end of file