1cxx_library(
2    name='zstd',
3    header_namespace='',
4    exported_headers=['zstd.h'],
5    visibility=['PUBLIC'],
6    deps=[
7        ':common',
8        ':compress',
9        ':decompress',
10        ':deprecated',
11    ],
12)
13
14cxx_library(
15    name='compress',
16    header_namespace='',
17    visibility=['PUBLIC'],
18    exported_headers=subdir_glob([
19        ('compress', 'zstd*.h'),
20    ]),
21    srcs=glob(['compress/zstd*.c', 'compress/hist.c']),
22    deps=[':common'],
23)
24
25cxx_library(
26    name='decompress',
27    header_namespace='',
28    visibility=['PUBLIC'],
29    headers=subdir_glob([
30        ('decompress', '*_impl.h'),
31    ]),
32    srcs=glob(['decompress/zstd*.c']),
33    deps=[
34        ':common',
35        ':legacy',
36    ],
37)
38
39cxx_library(
40    name='deprecated',
41    header_namespace='',
42    visibility=['PUBLIC'],
43    exported_headers=subdir_glob([
44        ('deprecated', '*.h'),
45    ]),
46    srcs=glob(['deprecated/*.c']),
47    deps=[':common'],
48)
49
50cxx_library(
51    name='legacy',
52    header_namespace='',
53    visibility=['PUBLIC'],
54    exported_headers=subdir_glob([
55        ('legacy', '*.h'),
56    ]),
57    srcs=glob(['legacy/*.c']),
58    deps=[':common'],
59    exported_preprocessor_flags=[
60        '-DZSTD_LEGACY_SUPPORT=4',
61    ],
62)
63
64cxx_library(
65    name='zdict',
66    header_namespace='',
67    visibility=['PUBLIC'],
68    exported_headers=['zdict.h'],
69    headers=subdir_glob([
70        ('dictBuilder', 'divsufsort.h'),
71        ('dictBuilder', 'cover.h'),
72    ]),
73    srcs=glob(['dictBuilder/*.c']),
74    deps=[':common'],
75)
76
77cxx_library(
78    name='compiler',
79    header_namespace='',
80    visibility=['PUBLIC'],
81    exported_headers=subdir_glob([
82        ('common', 'compiler.h'),
83    ]),
84)
85
86cxx_library(
87    name='cpu',
88    header_namespace='',
89    visibility=['PUBLIC'],
90    exported_headers=subdir_glob([
91        ('common', 'cpu.h'),
92    ]),
93)
94
95cxx_library(
96    name='bitstream',
97    header_namespace='',
98    visibility=['PUBLIC'],
99    exported_headers=subdir_glob([
100        ('common', 'bitstream.h'),
101    ]),
102)
103
104cxx_library(
105    name='entropy',
106    header_namespace='',
107    visibility=['PUBLIC'],
108    exported_headers=subdir_glob([
109        ('common', 'fse.h'),
110        ('common', 'huf.h'),
111    ]),
112    srcs=[
113        'common/entropy_common.c',
114        'common/fse_decompress.c',
115        'compress/fse_compress.c',
116        'compress/huf_compress.c',
117        'decompress/huf_decompress.c',
118    ],
119    deps=[
120        ':debug',
121        ':bitstream',
122        ':compiler',
123        ':errors',
124        ':mem',
125    ],
126)
127
128cxx_library(
129    name='errors',
130    header_namespace='',
131    visibility=['PUBLIC'],
132    exported_headers=[
133        'zstd_errors.h',
134        'common/error_private.h',
135    ]
136    srcs=['common/error_private.c'],
137)
138
139cxx_library(
140    name='mem',
141    header_namespace='',
142    visibility=['PUBLIC'],
143    exported_headers=subdir_glob([
144        ('common', 'mem.h'),
145    ]),
146)
147
148cxx_library(
149    name='pool',
150    header_namespace='',
151    visibility=['PUBLIC'],
152    exported_headers=subdir_glob([
153        ('common', 'pool.h'),
154    ]),
155    srcs=['common/pool.c'],
156    deps=[
157        ':threading',
158        ':zstd_common',
159    ],
160)
161
162cxx_library(
163    name='threading',
164    header_namespace='',
165    visibility=['PUBLIC'],
166    exported_headers=subdir_glob([
167        ('common', 'threading.h'),
168    ]),
169    srcs=['common/threading.c'],
170    exported_preprocessor_flags=[
171        '-DZSTD_MULTITHREAD',
172    ],
173    exported_linker_flags=[
174        '-pthread',
175    ],
176)
177
178cxx_library(
179    name='xxhash',
180    header_namespace='',
181    visibility=['PUBLIC'],
182    exported_headers=subdir_glob([
183        ('common', 'xxhash.h'),
184    ]),
185    srcs=['common/xxhash.c'],
186    exported_preprocessor_flags=[
187        '-DXXH_NAMESPACE=ZSTD_',
188    ],
189)
190
191cxx_library(
192    name='zstd_common',
193    header_namespace='',
194    visibility=['PUBLIC'],
195    exported_headers=subdir_glob([
196        ('', 'zstd.h'),
197        ('common', 'zstd_internal.h'),
198    ]),
199    srcs=['common/zstd_common.c'],
200    deps=[
201        ':compiler',
202        ':errors',
203        ':mem',
204    ],
205)
206
207cxx_library(
208    name='debug',
209    header_namespace='',
210    visibility=['PUBLIC'],
211    exported_headers=subdir_glob([
212        ('common', 'debug.h'),
213    ]),
214    srcs=['common/debug.c'],
215)
216
217cxx_library(
218    name='common',
219    deps=[
220        ':debug',
221        ':bitstream',
222        ':compiler',
223        ':cpu',
224        ':entropy',
225        ':errors',
226        ':mem',
227        ':pool',
228        ':threading',
229        ':xxhash',
230        ':zstd_common',
231    ]
232)
233