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