Add: Support Zstandard(zstd) savegame compression
(cherry picked from commit 6f0aeaf2c5436550c93205e704624957e9abc969)pull/221/head
parent
0a31a3b923
commit
b284d34277
@ -0,0 +1,89 @@
|
||||
#[=======================================================================[.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
|
||||
)
|
Loading…
Reference in New Issue