90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| #[=======================================================================[.rst:
 | |
| FindZSTD
 | |
| -------
 | |
| 
 | |
| Finds the ZSTD library.
 | |
| 
 | |
| Result Variables
 | |
| ^^^^^^^^^^^^^^^^
 | |
| 
 | |
| This will define the following variables:
 | |
| 
 | |
| ``ZSTD_FOUND``
 | |
|   True if the system has the ZSTD library.
 | |
| ``ZSTD_INCLUDE_DIRS``
 | |
|   Include directories needed to use ZSTD.
 | |
| ``ZSTD_LIBRARIES``
 | |
|   Libraries needed to link to ZSTD.
 | |
| ``ZSTD_VERSION``
 | |
|   The version of the ZSTD library which was found.
 | |
| 
 | |
| Cache Variables
 | |
| ^^^^^^^^^^^^^^^
 | |
| 
 | |
| The following cache variables may also be set:
 | |
| 
 | |
| ``ZSTD_INCLUDE_DIR``
 | |
|   The directory containing ``zstd.h``.
 | |
| ``ZSTD_LIBRARY``
 | |
|   The path to the ZSTD library.
 | |
| 
 | |
| #]=======================================================================]
 | |
| 
 | |
| find_package(PkgConfig QUIET)
 | |
| pkg_check_modules(PC_ZSTD QUIET libzstd)
 | |
| 
 | |
| find_path(ZSTD_INCLUDE_DIR
 | |
|     NAMES zstd.h
 | |
|     PATHS ${PC_ZSTD_INCLUDE_DIRS}
 | |
| )
 | |
| 
 | |
| find_library(ZSTD_LIBRARY
 | |
|     NAMES zstd
 | |
|     PATHS ${PC_ZSTD_LIBRARY_DIRS}
 | |
| )
 | |
| 
 | |
| # With vcpkg, the library path should contain both 'debug' and 'optimized'
 | |
| # entries (see target_link_libraries() documentation for more information)
 | |
| #
 | |
| # NOTE: we only patch up when using vcpkg; the same issue might happen
 | |
| # when not using vcpkg, but this is non-trivial to fix, as we have no idea
 | |
| # what the paths are. With vcpkg we do. And we only official support vcpkg
 | |
| # with Windows.
 | |
| #
 | |
| # NOTE: this is based on the assumption that the debug file has the same
 | |
| # name as the optimized file. This is not always the case, but so far
 | |
| # experiences has shown that in those case vcpkg CMake files do the right
 | |
| # thing.
 | |
| if(VCPKG_TOOLCHAIN AND ZSTD_LIBRARY)
 | |
|     if(ZSTD_LIBRARY MATCHES "/debug/")
 | |
|         set(ZSTD_LIBRARY_DEBUG ${ZSTD_LIBRARY})
 | |
|         string(REPLACE "/debug/lib/" "/lib/" ZSTD_LIBRARY_RELEASE ${ZSTD_LIBRARY})
 | |
|     else()
 | |
|         set(ZSTD_LIBRARY_RELEASE ${ZSTD_LIBRARY})
 | |
|         string(REPLACE "/lib/" "/debug/lib/" ZSTD_LIBRARY_DEBUG ${ZSTD_LIBRARY})
 | |
|     endif()
 | |
|     include(SelectLibraryConfigurations)
 | |
|     select_library_configurations(ZSTD)
 | |
| endif()
 | |
| 
 | |
| set(ZSTD_VERSION ${PC_ZSTD_VERSION})
 | |
| 
 | |
| include(FindPackageHandleStandardArgs)
 | |
| find_package_handle_standard_args(ZSTD
 | |
|     FOUND_VAR ZSTD_FOUND
 | |
|     REQUIRED_VARS
 | |
|         ZSTD_LIBRARY
 | |
|         ZSTD_INCLUDE_DIR
 | |
|     VERSION_VAR ZSTD_VERSION
 | |
| )
 | |
| 
 | |
| if(ZSTD_FOUND)
 | |
|     set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
 | |
|     set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
 | |
| endif()
 | |
| 
 | |
| mark_as_advanced(
 | |
|     ZSTD_INCLUDE_DIR
 | |
|     ZSTD_LIBRARY
 | |
| )
 | 
