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:
@@ -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(
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user