Skip to content

Commit 23e9974

Browse files
committed
Make idiomatic cmake install so third party cmake installers work right.
1 parent 49c6d49 commit 23e9974

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

build/cmake/lib/CMakeLists.txt

+30-8
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ if (ZSTD_BUILD_STATIC)
127127
set_target_properties(
128128
libzstd_static
129129
PROPERTIES
130+
POSITION_INDEPENDENT_CODE On
130131
OUTPUT_NAME ${STATIC_LIBRARY_BASE_NAME})
131132
endif ()
132133

@@ -146,22 +147,43 @@ endif ()
146147

147148
# install target
148149
install(FILES
149-
${LIBRARY_DIR}/zstd.h
150-
${LIBRARY_DIR}/deprecated/zbuff.h
151-
${LIBRARY_DIR}/dictBuilder/zdict.h
152-
${LIBRARY_DIR}/dictBuilder/cover.h
153-
${LIBRARY_DIR}/common/zstd_errors.h
150+
"${LIBRARY_DIR}/zstd.h"
151+
"${LIBRARY_DIR}/deprecated/zbuff.h"
152+
"${LIBRARY_DIR}/dictBuilder/zdict.h"
153+
"${LIBRARY_DIR}/dictBuilder/cover.h"
154+
"${LIBRARY_DIR}/common/zstd_errors.h"
154155
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
155156

156157
if (ZSTD_BUILD_SHARED)
157-
install(TARGETS libzstd_shared RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
158+
install(TARGETS libzstd_shared EXPORT zstdExports
159+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
160+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
158161
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
159-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
162+
)
160163
endif()
161164
if (ZSTD_BUILD_STATIC)
162-
install(TARGETS libzstd_static ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
165+
install(TARGETS libzstd_static EXPORT zstdExports
166+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
167+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
168+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
169+
)
163170
endif ()
164171

172+
# export targets + find config
173+
configure_file(
174+
"config.cmake.in"
175+
"${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake"
176+
@ONLY
177+
)
178+
install(FILES
179+
"${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake"
180+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zstd"
181+
)
182+
install(EXPORT zstdExports
183+
NAMESPACE zstd::
184+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zstd"
185+
)
186+
165187
# uninstall target
166188
if (NOT TARGET uninstall)
167189
configure_file(

build/cmake/lib/config.cmake.in

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
include(FindPackageHandleStandardArgs)
2+
set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
3+
find_package_handle_standard_args(zstd CONFIG_MODE)
4+
5+
if(NOT TARGET zstd::libzstd_shared)
6+
include("${CMAKE_CURRENT_LIST_DIR}/zstdExports.cmake")
7+
endif()

0 commit comments

Comments
 (0)