1*01826a49SYabin Cui /** 2*01826a49SYabin Cui * \file zstd.c 3*01826a49SYabin Cui * Single-file Zstandard library. 4*01826a49SYabin Cui * 5*01826a49SYabin Cui * Generate using: 6*01826a49SYabin Cui * \code 7*01826a49SYabin Cui * python combine.py -r ../../lib -x legacy/zstd_legacy.h -o zstd.c zstd-in.c 8*01826a49SYabin Cui * \endcode 9*01826a49SYabin Cui */ 10*01826a49SYabin Cui /* 11*01826a49SYabin Cui * Copyright (c) Meta Platforms, Inc. and affiliates. 12*01826a49SYabin Cui * All rights reserved. 13*01826a49SYabin Cui * 14*01826a49SYabin Cui * This source code is licensed under both the BSD-style license (found in the 15*01826a49SYabin Cui * LICENSE file in the root directory of this source tree) and the GPLv2 (found 16*01826a49SYabin Cui * in the COPYING file in the root directory of this source tree). 17*01826a49SYabin Cui * You may select, at your option, one of the above-listed licenses. 18*01826a49SYabin Cui */ 19*01826a49SYabin Cui /* 20*01826a49SYabin Cui * Settings to bake for the single library file. 21*01826a49SYabin Cui * 22*01826a49SYabin Cui * Note: It's important that none of these affects 'zstd.h' (only the 23*01826a49SYabin Cui * implementation files we're amalgamating). 24*01826a49SYabin Cui * 25*01826a49SYabin Cui * Note: MEM_MODULE stops xxhash redefining BYTE, U16, etc., which are also 26*01826a49SYabin Cui * defined in mem.h (breaking C99 compatibility). 27*01826a49SYabin Cui * 28*01826a49SYabin Cui * Note: the undefs for xxHash allow Zstd's implementation to coincide with 29*01826a49SYabin Cui * standalone xxHash usage (with global defines). 30*01826a49SYabin Cui * 31*01826a49SYabin Cui * Note: if you enable ZSTD_LEGACY_SUPPORT the combine.py script will need 32*01826a49SYabin Cui * re-running without the "-x legacy/zstd_legacy.h" option (it excludes the 33*01826a49SYabin Cui * legacy support at the source level). 34*01826a49SYabin Cui * 35*01826a49SYabin Cui * Note: multithreading is enabled for all platforms apart from Emscripten. 36*01826a49SYabin Cui */ 37*01826a49SYabin Cui #define DEBUGLEVEL 0 38*01826a49SYabin Cui #define MEM_MODULE 39*01826a49SYabin Cui #undef XXH_NAMESPACE 40*01826a49SYabin Cui #define XXH_NAMESPACE ZSTD_ 41*01826a49SYabin Cui #undef XXH_PRIVATE_API 42*01826a49SYabin Cui #define XXH_PRIVATE_API 43*01826a49SYabin Cui #undef XXH_INLINE_ALL 44*01826a49SYabin Cui #define XXH_INLINE_ALL 45*01826a49SYabin Cui #define ZSTD_LEGACY_SUPPORT 0 46*01826a49SYabin Cui #ifndef __EMSCRIPTEN__ 47*01826a49SYabin Cui #define ZSTD_MULTITHREAD 48*01826a49SYabin Cui #endif 49*01826a49SYabin Cui #define ZSTD_TRACE 0 50*01826a49SYabin Cui /* TODO: Can't amalgamate ASM function */ 51*01826a49SYabin Cui #define ZSTD_DISABLE_ASM 1 52*01826a49SYabin Cui 53*01826a49SYabin Cui /* Include zstd_deps.h first with all the options we need enabled. */ 54*01826a49SYabin Cui #define ZSTD_DEPS_NEED_MALLOC 55*01826a49SYabin Cui #define ZSTD_DEPS_NEED_MATH64 56*01826a49SYabin Cui #include "common/zstd_deps.h" 57*01826a49SYabin Cui 58*01826a49SYabin Cui #include "common/debug.c" 59*01826a49SYabin Cui #include "common/entropy_common.c" 60*01826a49SYabin Cui #include "common/error_private.c" 61*01826a49SYabin Cui #include "common/fse_decompress.c" 62*01826a49SYabin Cui #include "common/threading.c" 63*01826a49SYabin Cui #include "common/pool.c" 64*01826a49SYabin Cui #include "common/zstd_common.c" 65*01826a49SYabin Cui 66*01826a49SYabin Cui #include "compress/fse_compress.c" 67*01826a49SYabin Cui #include "compress/hist.c" 68*01826a49SYabin Cui #include "compress/huf_compress.c" 69*01826a49SYabin Cui #include "compress/zstd_compress_literals.c" 70*01826a49SYabin Cui #include "compress/zstd_compress_sequences.c" 71*01826a49SYabin Cui #include "compress/zstd_compress_superblock.c" 72*01826a49SYabin Cui #include "compress/zstd_compress.c" 73*01826a49SYabin Cui #include "compress/zstd_double_fast.c" 74*01826a49SYabin Cui #include "compress/zstd_fast.c" 75*01826a49SYabin Cui #include "compress/zstd_lazy.c" 76*01826a49SYabin Cui #include "compress/zstd_ldm.c" 77*01826a49SYabin Cui #include "compress/zstd_opt.c" 78*01826a49SYabin Cui #ifdef ZSTD_MULTITHREAD 79*01826a49SYabin Cui #include "compress/zstdmt_compress.c" 80*01826a49SYabin Cui #endif 81*01826a49SYabin Cui 82*01826a49SYabin Cui #include "decompress/huf_decompress.c" 83*01826a49SYabin Cui #include "decompress/zstd_ddict.c" 84*01826a49SYabin Cui #include "decompress/zstd_decompress.c" 85*01826a49SYabin Cui #include "decompress/zstd_decompress_block.c" 86*01826a49SYabin Cui 87*01826a49SYabin Cui #include "dictBuilder/cover.c" 88*01826a49SYabin Cui #include "dictBuilder/divsufsort.c" 89*01826a49SYabin Cui #include "dictBuilder/fastcover.c" 90*01826a49SYabin Cui #include "dictBuilder/zdict.c" 91