]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Make idiomatic cmake install so third party cmake installers work right. 1924/head
authorNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>
Fri, 6 Dec 2019 16:14:33 +0000 (16:14 +0000)
committerNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>
Fri, 6 Dec 2019 17:18:54 +0000 (17:18 +0000)
build/cmake/lib/CMakeLists.txt
build/cmake/lib/config.cmake.in [new file with mode: 0644]

index 7adca875c529f4bceb6e5c1a0110b161e71df9b7..e92647bf186b723a733136668af9f0460bc87ab9 100644 (file)
@@ -127,6 +127,7 @@ if (ZSTD_BUILD_STATIC)
     set_target_properties(
             libzstd_static
             PROPERTIES
+            POSITION_INDEPENDENT_CODE On
             OUTPUT_NAME ${STATIC_LIBRARY_BASE_NAME})
 endif ()
 
@@ -146,22 +147,43 @@ endif ()
 
 # install target
 install(FILES
-    ${LIBRARY_DIR}/zstd.h
-    ${LIBRARY_DIR}/deprecated/zbuff.h
-    ${LIBRARY_DIR}/dictBuilder/zdict.h
-    ${LIBRARY_DIR}/dictBuilder/cover.h
-    ${LIBRARY_DIR}/common/zstd_errors.h
+    "${LIBRARY_DIR}/zstd.h"
+    "${LIBRARY_DIR}/deprecated/zbuff.h"
+    "${LIBRARY_DIR}/dictBuilder/zdict.h"
+    "${LIBRARY_DIR}/dictBuilder/cover.h"
+    "${LIBRARY_DIR}/common/zstd_errors.h"
     DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
 
 if (ZSTD_BUILD_SHARED)
-    install(TARGETS libzstd_shared RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+    install(TARGETS libzstd_shared EXPORT zstdExports
+                                   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+                                   ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
                                    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-                                   ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+    )
 endif()
 if (ZSTD_BUILD_STATIC)
-    install(TARGETS libzstd_static ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+    install(TARGETS libzstd_static EXPORT zstdExports
+                                   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+                                   ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+                                   LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    )
 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
new file mode 100644 (file)
index 0000000..3a22756
--- /dev/null
@@ -0,0 +1,7 @@
+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()