1# Try to find the zstd library
2#
3# If successful, the following variables will be defined:
4# zstd_INCLUDE_DIR
5# zstd_LIBRARY
6# zstd_FOUND
7#
8# Additionally, one of the following import targets will be defined:
9# zstd::libzstd_shared
10# zstd::libzstd_static
11
12if(MSVC)
13  set(zstd_SHARED_LIBRARY_SUFFIX "\\${CMAKE_LINK_LIBRARY_SUFFIX}$")
14  set(zstd_STATIC_LIBRARY_SUFFIX "_static\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
15else()
16  set(zstd_SHARED_LIBRARY_SUFFIX "\\${CMAKE_SHARED_LIBRARY_SUFFIX}$")
17  set(zstd_STATIC_LIBRARY_SUFFIX "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
18endif()
19
20find_path(zstd_INCLUDE_DIR NAMES zstd.h)
21find_library(zstd_LIBRARY NAMES zstd zstd_static)
22
23include(FindPackageHandleStandardArgs)
24find_package_handle_standard_args(
25    zstd DEFAULT_MSG
26    zstd_LIBRARY zstd_INCLUDE_DIR
27)
28
29if(zstd_FOUND)
30  if(zstd_LIBRARY MATCHES "${zstd_SHARED_LIBRARY_SUFFIX}$" AND
31     NOT TARGET zstd::libzstd_shared)
32    add_library(zstd::libzstd_shared SHARED IMPORTED)
33    set_target_properties(zstd::libzstd_shared PROPERTIES
34          INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
35          IMPORTED_LOCATION "${zstd_LIBRARY}")
36  endif()
37  if(zstd_LIBRARY MATCHES "${zstd_STATIC_LIBRARY_SUFFIX}$" AND
38     NOT TARGET zstd::libzstd_static)
39    add_library(zstd::libzstd_static STATIC IMPORTED)
40    set_target_properties(zstd::libzstd_static PROPERTIES
41        INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
42        IMPORTED_LOCATION "${zstd_LIBRARY}")
43  endif()
44endif()
45
46unset(zstd_SHARED_LIBRARY_SUFFIX)
47unset(zstd_STATIC_LIBRARY_SUFFIX)
48
49mark_as_advanced(zstd_INCLUDE_DIR zstd_LIBRARY)
50