# Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or # https://cmake.org/licensing for details. #[=======================================================================[.rst: FindZSTD -------- Find the native ZSTD includes and library. IMPORTED Targets ^^^^^^^^^^^^^^^^ This module defines :prop_tgt:`IMPORTED` target ``ZSTD::ZSTD``, if ZSTD has been found. Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: :: ZSTD_INCLUDE_DIRS - where to find zstd.h, etc. ZSTD_LIBRARIES - List of libraries when using zstd. ZSTD_FOUND - True if zstd found. :: ZSTD_VERSION_STRING - The version of zstd found (x.y.z) ZSTD_VERSION_MAJOR - The major version of zstd ZSTD_VERSION_MINOR - The minor version of zstd Debug and Release variants are found separately. #]=======================================================================] # Standard names to search for set(ZSTD_NAMES zstd zstd_static) set(ZSTD_NAMES_DEBUG zstdd zstd_staticd) find_path( ZSTD_INCLUDE_DIR NAMES zstd.h PATH_SUFFIXES include) # Allow ZSTD_LIBRARY to be set manually, as the location of the zstd library if(NOT ZSTD_LIBRARY) find_library( ZSTD_LIBRARY_RELEASE NAMES ${ZSTD_NAMES} PATH_SUFFIXES lib) find_library( ZSTD_LIBRARY_DEBUG NAMES ${ZSTD_NAMES_DEBUG} PATH_SUFFIXES lib) include(SelectLibraryConfigurations) select_library_configurations(ZSTD) endif() unset(ZSTD_NAMES) unset(ZSTD_NAMES_DEBUG) mark_as_advanced(ZSTD_INCLUDE_DIR) if(ZSTD_INCLUDE_DIR AND EXISTS "${ZSTD_INCLUDE_DIR}/zstd.h") file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" ZSTD_H REGEX "^#define ZSTD_VERSION_.*$") string( REGEX REPLACE "^.*ZSTD_VERSION_MAJOR *([0-9]+).*$" "\\1" ZSTD_MAJOR_VERSION "${ZSTD_H}") string( REGEX REPLACE "^.*ZSTD_VERSION_MINOR *([0-9]+).*$" "\\1" ZSTD_MINOR_VERSION "${ZSTD_H}") string( REGEX REPLACE "^.*ZSTD_VERSION_RELEASE *([0-9]+).*$" "\\1" ZSTD_PATCH_VERSION "${ZSTD_H}") set(ZSTD_VERSION_STRING "${ZSTD_MAJOR_VERSION}.${ZSTD_MINOR_VERSION}.${ZSTD_PATCH_VERSION}") endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args( ZSTD REQUIRED_VARS ZSTD_LIBRARY ZSTD_INCLUDE_DIR VERSION_VAR ZSTD_VERSION_STRING) if(ZSTD_FOUND) set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR}) if(NOT ZSTD_LIBRARIES) set(ZSTD_LIBRARIES ${ZSTD_LIBRARY}) endif() if(NOT TARGET ZSTD::ZSTD) add_library(ZSTD::ZSTD UNKNOWN IMPORTED) set_target_properties(ZSTD::ZSTD PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIRS}") if(ZSTD_LIBRARY_RELEASE) set_property( TARGET ZSTD::ZSTD APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(ZSTD::ZSTD PROPERTIES IMPORTED_LOCATION_RELEASE "${ZSTD_LIBRARY_RELEASE}") endif() if(ZSTD_LIBRARY_DEBUG) set_property( TARGET ZSTD::ZSTD APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) set_target_properties(ZSTD::ZSTD PROPERTIES IMPORTED_LOCATION_DEBUG "${ZSTD_LIBRARY_DEBUG}") endif() if(NOT ZSTD_LIBRARY_RELEASE AND NOT ZSTD_LIBRARY_DEBUG) set_target_properties(ZSTD::ZSTD PROPERTIES IMPORTED_LOCATION_RELEASE "${ZSTD_LIBRARY}") endif() endif() endif()