648db22b |
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" |