diff --git a/cmake/modules/Findzstd.cmake b/cmake/modules/Findzstd.cmake new file mode 100644 index 0000000000..df67b4d789 --- /dev/null +++ b/cmake/modules/Findzstd.cmake @@ -0,0 +1,36 @@ +# First, try the package's own config file +find_package(zstd CONFIG QUIET) + +if(TARGET zstd::libzstd_shared) + set(zstd_FOUND TRUE) + return() +endif() + +if(TARGET zstd::libzstd_static) + set(zstd_FOUND TRUE) + return() +endif() + +# Fallback for systems without zstdConfig.cmake +find_path(ZSTD_INCLUDE_DIR zstd.h) +find_library(ZSTD_LIBRARY NAMES zstd) + +if(ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY) + set(zstd_FOUND TRUE) + if(NOT TARGET zstd::libzstd_shared) + add_library(zstd::libzstd_shared UNKNOWN IMPORTED) + set_target_properties( + zstd::libzstd_shared + PROPERTIES IMPORTED_LOCATION \"${ZSTD_LIBRARY}\" + INTERFACE_INCLUDE_DIRECTORIES \"${ZSTD_INCLUDE_DIR}\" + ) + endif() + if(NOT TARGET zstd::libzstd_static) + add_library(zstd::libzstd_static UNKNOWN IMPORTED) + set_target_properties( + zstd::libzstd_static + PROPERTIES IMPORTED_LOCATION \"${ZSTD_LIBRARY}\" + INTERFACE_INCLUDE_DIRECTORIES \"${ZSTD_INCLUDE_DIR}\" + ) + endif() +endif() diff --git a/libmamba/CMakeLists.txt b/libmamba/CMakeLists.txt index 2bffa5d566..95ed5f71b5 100644 --- a/libmamba/CMakeLists.txt +++ b/libmamba/CMakeLists.txt @@ -582,7 +582,7 @@ macro(libmamba_create_target target_name linkage output_name) find_library(LIBLZMA_LIBRARIES lzma REQUIRED) find_library(LZ4_LIBRARY NAMES lz4) find_library(LZO2_LIBRARY NAMES lzo2) - find_package(zstd CONFIG REQUIRED) + find_package(zstd REQUIRED) find_library(BZIP2_LIBRARIES NAMES bz2) find_library(CRYPTO_LIBRARIES NAMES libcrypto)