Split lib target types in their own export groups

This allows for the non-primary library to be missing in the Config.cmake file, e.g. if the devel files have a separate static-devel package

Signed-off-by: Cristian Le <git@lecris.dev>
This commit is contained in:
Cristian Le
2025-09-23 10:29:44 +02:00
parent ee9b5f4371
commit eb062bc339
3 changed files with 32 additions and 29 deletions
+15 -12
View File
@@ -11,21 +11,24 @@ write_basic_package_version_file(
COMPATIBILITY SameMajorVersion COMPATIBILITY SameMajorVersion
) )
# Export targets for build directory
export(EXPORT zstdExports
FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets.cmake"
NAMESPACE zstd::
)
# Configure package for installation # Configure package for installation
set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/zstd) set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/zstd)
# Install exported targets foreach(target_suffix IN ITEMS "_shared" "_static" "")
install(EXPORT zstdExports if(TARGET "libzstd${target_suffix}")
FILE zstdTargets.cmake # Export targets for build directory
NAMESPACE zstd:: export(EXPORT "zstdExports${target_suffix}"
DESTINATION ${ConfigPackageLocation} FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets${target_suffix}.cmake"
) NAMESPACE zstd::
)
# Install exported targets
install(EXPORT "zstdExports${target_suffix}"
FILE "zstdTargets${target_suffix}.cmake"
NAMESPACE zstd::
DESTINATION ${ConfigPackageLocation}
)
endif()
endforeach()
# Configure and install package config file # Configure and install package config file
configure_package_config_file( configure_package_config_file(
+14 -17
View File
@@ -122,11 +122,9 @@ endmacro ()
set(PUBLIC_INCLUDE_DIRS ${LIBRARY_DIR}) set(PUBLIC_INCLUDE_DIRS ${LIBRARY_DIR})
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} /I \"${LIBRARY_DIR}\"") set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} /I \"${LIBRARY_DIR}\"")
# Split project to static and shared libraries build # Split project to static and shared libraries build
set(library_targets)
if (ZSTD_BUILD_SHARED) if (ZSTD_BUILD_SHARED)
add_library(libzstd_shared SHARED ${Sources} ${Headers} ${PlatformDependResources}) add_library(libzstd_shared SHARED ${Sources} ${Headers} ${PlatformDependResources})
target_include_directories(libzstd_shared INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>) target_include_directories(libzstd_shared INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>)
list(APPEND library_targets libzstd_shared)
if (ZSTD_MULTITHREAD_SUPPORT) if (ZSTD_MULTITHREAD_SUPPORT)
target_compile_definitions(libzstd_shared PUBLIC ZSTD_MULTITHREAD) target_compile_definitions(libzstd_shared PUBLIC ZSTD_MULTITHREAD)
if (UNIX) if (UNIX)
@@ -140,7 +138,6 @@ endif ()
if (ZSTD_BUILD_STATIC) if (ZSTD_BUILD_STATIC)
add_library(libzstd_static STATIC ${Sources} ${Headers}) add_library(libzstd_static STATIC ${Sources} ${Headers})
target_include_directories(libzstd_static INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>) target_include_directories(libzstd_static INTERFACE $<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>)
list(APPEND library_targets libzstd_static)
if (ZSTD_MULTITHREAD_SUPPORT) if (ZSTD_MULTITHREAD_SUPPORT)
target_compile_definitions(libzstd_static PUBLIC ZSTD_MULTITHREAD) target_compile_definitions(libzstd_static PUBLIC ZSTD_MULTITHREAD)
if (UNIX) if (UNIX)
@@ -159,7 +156,6 @@ if (ZSTD_BUILD_SHARED AND NOT ZSTD_BUILD_STATIC)
endif () endif ()
add_library(libzstd INTERFACE) add_library(libzstd INTERFACE)
target_link_libraries(libzstd INTERFACE libzstd_shared) target_link_libraries(libzstd INTERFACE libzstd_shared)
list(APPEND library_targets libzstd)
endif () endif ()
if (ZSTD_BUILD_STATIC AND NOT ZSTD_BUILD_SHARED) if (ZSTD_BUILD_STATIC AND NOT ZSTD_BUILD_SHARED)
if (BUILD_SHARED_LIBS) if (BUILD_SHARED_LIBS)
@@ -167,7 +163,6 @@ if (ZSTD_BUILD_STATIC AND NOT ZSTD_BUILD_SHARED)
endif () endif ()
add_library(libzstd INTERFACE) add_library(libzstd INTERFACE)
target_link_libraries(libzstd INTERFACE libzstd_static) target_link_libraries(libzstd INTERFACE libzstd_static)
list(APPEND library_targets libzstd)
endif () endif ()
if (ZSTD_BUILD_SHARED AND ZSTD_BUILD_STATIC) if (ZSTD_BUILD_SHARED AND ZSTD_BUILD_STATIC)
# If both ZSTD_BUILD_SHARED and ZSTD_BUILD_STATIC are set, which is the # If both ZSTD_BUILD_SHARED and ZSTD_BUILD_STATIC are set, which is the
@@ -176,11 +171,9 @@ if (ZSTD_BUILD_SHARED AND ZSTD_BUILD_STATIC)
if (BUILD_SHARED_LIBS) if (BUILD_SHARED_LIBS)
add_library(libzstd INTERFACE) add_library(libzstd INTERFACE)
target_link_libraries(libzstd INTERFACE libzstd_shared) target_link_libraries(libzstd INTERFACE libzstd_shared)
list(APPEND library_targets libzstd)
else () else ()
add_library(libzstd INTERFACE) add_library(libzstd INTERFACE)
target_link_libraries(libzstd INTERFACE libzstd_static) target_link_libraries(libzstd INTERFACE libzstd_static)
list(APPEND library_targets libzstd)
endif () endif ()
endif () endif ()
@@ -274,16 +267,20 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" DESTINATION "${CMAKE_INST
# install target # install target
install(FILES ${PublicHeaders} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") install(FILES ${PublicHeaders} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(TARGETS ${library_targets} foreach(target_suffix IN ITEMS "_shared" "_static" "")
EXPORT zstdExports if(TARGET "libzstd${target_suffix}")
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" install(TARGETS "libzstd${target_suffix}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" EXPORT "zstdExports${target_suffix}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
) FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
endif()
endforeach()
# uninstall target # uninstall target
if (NOT TARGET uninstall) if (NOT TARGET uninstall)
+3
View File
@@ -5,6 +5,9 @@ if(@ZSTD_MULTITHREAD_SUPPORT@ AND "@UNIX@")
find_dependency(Threads) find_dependency(Threads)
endif() endif()
foreach(lib_suffix IN ITEMS "_shared" "_static")
include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets${lib_suffix}.cmake" OPTIONAL)
endforeach()
include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets.cmake")
check_required_components("zstd") check_required_components("zstd")