Skip to content

Commit 9e23edc

Browse files
authored
Merge pull request #4494 from LecrisUT/maint-cmake
Split lib target types in their own export groups
2 parents d462f69 + eb062bc commit 9e23edc

File tree

3 files changed

+32
-29
lines changed

3 files changed

+32
-29
lines changed

build/cmake/CMakeModules/ZstdPackage.cmake

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@ write_basic_package_version_file(
1111
COMPATIBILITY SameMajorVersion
1212
)
1313

14-
# Export targets for build directory
15-
export(EXPORT zstdExports
16-
FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets.cmake"
17-
NAMESPACE zstd::
18-
)
19-
2014
# Configure package for installation
2115
set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/zstd)
2216

23-
# Install exported targets
24-
install(EXPORT zstdExports
25-
FILE zstdTargets.cmake
26-
NAMESPACE zstd::
27-
DESTINATION ${ConfigPackageLocation}
28-
)
17+
foreach(target_suffix IN ITEMS "_shared" "_static" "")
18+
if(TARGET "libzstd${target_suffix}")
19+
# Export targets for build directory
20+
export(EXPORT "zstdExports${target_suffix}"
21+
FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets${target_suffix}.cmake"
22+
NAMESPACE zstd::
23+
)
24+
# Install exported targets
25+
install(EXPORT "zstdExports${target_suffix}"
26+
FILE "zstdTargets${target_suffix}.cmake"
27+
NAMESPACE zstd::
28+
DESTINATION ${ConfigPackageLocation}
29+
)
30+
endif()
31+
endforeach()
2932

3033
# Configure and install package config file
3134
configure_package_config_file(

build/cmake/lib/CMakeLists.txt

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,9 @@ endmacro ()
123123
set(PUBLIC_INCLUDE_DIRS ${LIBRARY_DIR})
124124
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} /I \"${LIBRARY_DIR}\"")
125125
# Split project to static and shared libraries build
126-
set(library_targets)
127126
if (ZSTD_BUILD_SHARED)
128127
add_library(libzstd_shared SHARED ${Sources} ${Headers} ${PlatformDependResources})
129128
target_include_directories(libzstd_shared INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>)
130-
list(APPEND library_targets libzstd_shared)
131129
if (ZSTD_MULTITHREAD_SUPPORT)
132130
target_compile_definitions(libzstd_shared PUBLIC ZSTD_MULTITHREAD)
133131
if (UNIX)
@@ -141,7 +139,6 @@ endif ()
141139
if (ZSTD_BUILD_STATIC)
142140
add_library(libzstd_static STATIC ${Sources} ${Headers})
143141
target_include_directories(libzstd_static INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>)
144-
list(APPEND library_targets libzstd_static)
145142
if (ZSTD_MULTITHREAD_SUPPORT)
146143
target_compile_definitions(libzstd_static PUBLIC ZSTD_MULTITHREAD)
147144
if (UNIX)
@@ -160,15 +157,13 @@ if (ZSTD_BUILD_SHARED AND NOT ZSTD_BUILD_STATIC)
160157
endif ()
161158
add_library(libzstd INTERFACE)
162159
target_link_libraries(libzstd INTERFACE libzstd_shared)
163-
list(APPEND library_targets libzstd)
164160
endif ()
165161
if (ZSTD_BUILD_STATIC AND NOT ZSTD_BUILD_SHARED)
166162
if (BUILD_SHARED_LIBS)
167163
message(WARNING "BUILD_SHARED_LIBS is ON, but ZSTD_BUILD_SHARED is OFF and ZSTD_BUILD_STATIC is ON, which takes precedence, is set so libzstd is a static library")
168164
endif ()
169165
add_library(libzstd INTERFACE)
170166
target_link_libraries(libzstd INTERFACE libzstd_static)
171-
list(APPEND library_targets libzstd)
172167
endif ()
173168
if (ZSTD_BUILD_SHARED AND ZSTD_BUILD_STATIC)
174169
# If both ZSTD_BUILD_SHARED and ZSTD_BUILD_STATIC are set, which is the
@@ -177,11 +172,9 @@ if (ZSTD_BUILD_SHARED AND ZSTD_BUILD_STATIC)
177172
if (BUILD_SHARED_LIBS)
178173
add_library(libzstd INTERFACE)
179174
target_link_libraries(libzstd INTERFACE libzstd_shared)
180-
list(APPEND library_targets libzstd)
181175
else ()
182176
add_library(libzstd INTERFACE)
183177
target_link_libraries(libzstd INTERFACE libzstd_static)
184-
list(APPEND library_targets libzstd)
185178
endif ()
186179
endif ()
187180

@@ -275,16 +268,20 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" DESTINATION "${CMAKE_INST
275268
# install target
276269
install(FILES ${PublicHeaders} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
277270

278-
install(TARGETS ${library_targets}
279-
EXPORT zstdExports
280-
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
281-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
282-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
283-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
284-
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
285-
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL
286-
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
287-
)
271+
foreach(target_suffix IN ITEMS "_shared" "_static" "")
272+
if(TARGET "libzstd${target_suffix}")
273+
install(TARGETS "libzstd${target_suffix}"
274+
EXPORT "zstdExports${target_suffix}"
275+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
276+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
277+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
278+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
279+
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
280+
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL
281+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
282+
)
283+
endif()
284+
endforeach()
288285

289286
# uninstall target
290287
if (NOT TARGET uninstall)

build/cmake/zstdConfig.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ if(@ZSTD_MULTITHREAD_SUPPORT@ AND "@UNIX@")
55
find_dependency(Threads)
66
endif()
77

8+
foreach(lib_suffix IN ITEMS "_shared" "_static")
9+
include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets${lib_suffix}.cmake" OPTIONAL)
10+
endforeach()
811
include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets.cmake")
912

1013
check_required_components("zstd")

0 commit comments

Comments
 (0)