diff --git a/CMakeLists.txt b/CMakeLists.txt index a6a663c81..6b6c24b7d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 4.0) project(cmark-gfm) set(PROJECT_VERSION_MAJOR 0) @@ -7,6 +7,7 @@ set(PROJECT_VERSION_PATCH 0) set(PROJECT_VERSION_GFM 13) set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.gfm.${PROJECT_VERSION_GFM}) +include(CMakePackageConfigHelpers) include("FindAsan.cmake") include("CheckFileOffsetBits.cmake") diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index e545b6d6f..2d519431d 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -79,9 +79,31 @@ if (CMARK_SHARED OR CMARK_STATIC) DESTINATION include ) - install(EXPORT cmark-gfm-extensions DESTINATION lib${LIB_SUFFIX}/cmake-gfm-extensions) + install( + EXPORT cmark-gfm-extensions + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm-extensions" + ) endif() +# generate config and config-version files +configure_package_config_file( + "cmark-gfm-extensions-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-extensions-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm-extensions" +) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-extensions-config-version.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +# install config and config-version files +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-extensions-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-extensions-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm-extensions" +) + # Feature tests include(CheckIncludeFile) include(CheckCSourceCompiles) diff --git a/extensions/cmark-gfm-extensions-config.cmake.in b/extensions/cmark-gfm-extensions-config.cmake.in new file mode 100644 index 000000000..6340b7e75 --- /dev/null +++ b/extensions/cmark-gfm-extensions-config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/cmark-gfm-extensions.cmake") +check_required_components("cmark-gfm-extensions") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 84dd2a037..99378cedd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -175,9 +175,31 @@ if(CMARK_SHARED OR CMARK_STATIC) DESTINATION include ) - install(EXPORT cmark-gfm DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install( + EXPORT cmark-gfm + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm" + ) endif() +# generate config and config-version files +configure_package_config_file( + "cmark-gfm-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm" +) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-config-version.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +# install config and config-version files +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/generated/cmark-gfm-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cmark-gfm" +) + # Feature tests include(CheckIncludeFile) include(CheckCSourceCompiles) diff --git a/src/cmark-gfm-config.cmake.in b/src/cmark-gfm-config.cmake.in new file mode 100644 index 000000000..7d33c17f6 --- /dev/null +++ b/src/cmark-gfm-config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/cmark-gfm.cmake") +check_required_components("cmark-gfm")