project(zstd LANGUAGES C) find_package(xxHash REQUIRED) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(AddZstdCompilationFlags) ADD_ZSTD_COMPILATION_FLAGS() file(READ zstd.h CONTENT) string(REGEX MATCH ".*define ZSTD_VERSION_MAJOR *([0-9]+).*define ZSTD_VERSION_MINOR *([0-9]+).*define ZSTD_VERSION_RELEASE *([0-9]+)" VERSION_REGEX "${CONTENT}") set(ZSTD_VERSION_MAJOR ${CMAKE_MATCH_1}) set(ZSTD_VERSION_MINOR ${CMAKE_MATCH_2}) set(ZSTD_VERSION_PATCH ${CMAKE_MATCH_3}) set(ZSTD_VERSION_STRING "${ZSTD_VERSION_MAJOR}.${ZSTD_VERSION_MINOR}.${ZSTD_VERSION_PATCH}") set(ZSTD_SOURCES common/error_private.c common/fse_decompress.c common/pool.c common/zstd_common.c common/entropy_common.c common/threading.c compress/fse_compress.c compress/zstd_compress_superblock.c compress/zstd_fast.c compress/hist.c compress/zstd_compress_literals.c compress/zstd_opt.c compress/zstd_lazy.c compress/huf_compress.c compress/zstd_compress_sequences.c compress/zstd_double_fast.c compress/zstdmt_compress.c compress/zstd_compress.c compress/zstd_ldm.c decompress/huf_decompress.c decompress/zstd_ddict.h decompress/zstd_decompress_block.c decompress/zstd_ddict.c decompress/zstd_decompress.c dictBuilder/cover.c dictBuilder/divsufsort.c dictBuilder/fastcover.c dictBuilder/zdict.c ) set(ZSTD_HEADERS zstd.h zstd_errors.h zdict.h common/bitstream.h common/threading.h common/zstd_internal.h common/compiler.h common/debug.h common/error_private.h common/huf.h common/pool.h common/zstd_deps.h common/cpu.h common/entropy_common.c common/fse.h common/mem.h compress/zstd_compress_internal.h compress/zstd_ldm.h compress/zstd_compress_superblock.h compress/zstd_fast.h compress/hist.h compress/zstd_compress_literals.h compress/zstd_cwksp.h compress/zstd_opt.h decompress/zstd_lazy.h decompress/zstd_compress_sequences.h decompress/zstd_double_fast.h decompress/zstdmt_compress.h decompress/zstd_ddict.h decompress/zstd_decompress_internal.h decompress/zstd_decompress_block.h dictBuilder/cover.h dictBuilder/divsufsort.h ) set(ZSTD_VERSION ${ZSTD_VERSION_STRING} CACHE INTERNAL "" FORCE) set(ZSTD_VERSION_STRING ${ZSTD_VERSION_STRING} CACHE INTERNAL "" FORCE) set(ZSTD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "" FORCE) set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "" FORCE) add_library(zstd STATIC ${ZSTDHEADERS} ${ZSTD_SOURCES}) target_compile_definitions(zstd PRIVATE "XXH_NAMESPACE=ZSTD_") set_target_properties(zstd PROPERTIES COMPILE_DEFINITIONS "ZSTD_HEAPMODE=0;_CRT_SECURE_NO_WARNINGS" C_VISIBILITY_PRESET hidden) target_include_directories(zstd PRIVATE ${xxHash_INCLUDE_DIR} ${ZSTD_INCLUDE_DIR} INTERFACE $ ) if(NOT MSVC) target_compile_options(zstd PRIVATE -fPIC -w -O3) endif() add_library(ZSTD::ZSTD ALIAS zstd) set(ZSTD_LIBRARY $ CACHE INTERNAL "") set(ZSTD_LIBRARIES ZSTD::ZSTD CACHE INTERNAL "") set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS ZSTD::ZSTD)