]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Generate a better CMake Package Config file
authorTaylor Braun-Jones <taylor@braun-jones.org>
Thu, 9 Apr 2020 21:13:39 +0000 (17:13 -0400)
committerTaylor Braun-Jones <taylor@braun-jones.org>
Thu, 9 Apr 2020 21:16:12 +0000 (17:16 -0400)
build/cmake/CMakeLists.txt
build/cmake/lib/CMakeLists.txt
build/cmake/lib/config.cmake.in [deleted file]
build/cmake/zstdConfig.cmake [new file with mode: 0644]

index be5ce15186f814fb498a78f8f1682e79e1e94035..ac499133fdaf6092ab07caab90e5619ae1b75d20 100644 (file)
@@ -158,3 +158,39 @@ add_custom_target(clean-all
    COMMAND ${CMAKE_BUILD_TOOL} clean
    COMMAND rm -rf ${CMAKE_BINARY_DIR}/
 )
+
+#-----------------------------------------------------------------------------
+# Generate Package Config files
+#
+# This section is based on the boiler plate code from:
+# https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages
+#-----------------------------------------------------------------------------
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+    "${CMAKE_CURRENT_BINARY_DIR}/zstdConfigVersion.cmake"
+    VERSION ${zstd_VERSION}
+    COMPATIBILITY SameMajorVersion
+    )
+
+# A Package Config file that works from the build directory
+export(EXPORT zstdExports
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets.cmake"
+    NAMESPACE zstd::
+    )
+configure_file(zstdConfig.cmake
+    "${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake"
+    COPYONLY
+    )
+
+# A Package Config file that works from the installation directory
+set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/zstd)
+install(EXPORT zstdExports
+    FILE zstdTargets.cmake
+    NAMESPACE zstd::
+    DESTINATION ${ConfigPackageLocation}
+    )
+install(FILES
+    zstdConfig.cmake
+    "${CMAKE_CURRENT_BINARY_DIR}/zstdConfigVersion.cmake"
+    DESTINATION ${ConfigPackageLocation}
+    )
index e92647bf186b723a733136668af9f0460bc87ab9..86abf593dfa208f9963a5b0b73a9b8efd240db92 100644 (file)
@@ -169,21 +169,6 @@ if (ZSTD_BUILD_STATIC)
     )
 endif ()
 
-# export targets + find config
-configure_file(
-  "config.cmake.in"
-  "${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake"
-  @ONLY
-)
-install(FILES
-  "${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake"
-  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zstd"
-)
-install(EXPORT zstdExports
-  NAMESPACE zstd::
-  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zstd"
-)
-
 # uninstall target
 if (NOT TARGET uninstall)
     configure_file(
diff --git a/build/cmake/lib/config.cmake.in b/build/cmake/lib/config.cmake.in
deleted file mode 100644 (file)
index 3a22756..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-include(FindPackageHandleStandardArgs)
-set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
-find_package_handle_standard_args(zstd CONFIG_MODE)
-
-if(NOT TARGET zstd::libzstd_shared)
-    include("${CMAKE_CURRENT_LIST_DIR}/zstdExports.cmake")
-endif()
diff --git a/build/cmake/zstdConfig.cmake b/build/cmake/zstdConfig.cmake
new file mode 100644 (file)
index 0000000..ebbfcc3
--- /dev/null
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets.cmake")