14 'common/fse_decompress.c', |
14 'common/fse_decompress.c', |
15 'common/xxhash.c', |
15 'common/xxhash.c', |
16 'common/zstd_common.c', |
16 'common/zstd_common.c', |
17 'compress/fse_compress.c', |
17 'compress/fse_compress.c', |
18 'compress/huf_compress.c', |
18 'compress/huf_compress.c', |
19 'compress/zbuff_compress.c', |
|
20 'compress/zstd_compress.c', |
19 'compress/zstd_compress.c', |
21 'decompress/huf_decompress.c', |
20 'decompress/huf_decompress.c', |
22 'decompress/zbuff_decompress.c', |
|
23 'decompress/zstd_decompress.c', |
21 'decompress/zstd_decompress.c', |
24 'dictBuilder/divsufsort.c', |
22 'dictBuilder/divsufsort.c', |
25 'dictBuilder/zdict.c', |
23 'dictBuilder/zdict.c', |
26 )] |
24 )] |
27 |
25 |
|
26 zstd_sources_legacy = ['zstd/%s' % p for p in ( |
|
27 'deprecated/zbuff_compress.c', |
|
28 'deprecated/zbuff_decompress.c', |
|
29 'legacy/zstd_v01.c', |
|
30 'legacy/zstd_v02.c', |
|
31 'legacy/zstd_v03.c', |
|
32 'legacy/zstd_v04.c', |
|
33 'legacy/zstd_v05.c', |
|
34 'legacy/zstd_v06.c', |
|
35 'legacy/zstd_v07.c' |
|
36 )] |
28 |
37 |
29 zstd_includes = [ |
38 zstd_includes = [ |
30 'c-ext', |
39 'c-ext', |
31 'zstd', |
40 'zstd', |
32 'zstd/common', |
41 'zstd/common', |
33 'zstd/compress', |
42 'zstd/compress', |
34 'zstd/decompress', |
43 'zstd/decompress', |
35 'zstd/dictBuilder', |
44 'zstd/dictBuilder', |
|
45 ] |
|
46 |
|
47 zstd_includes_legacy = [ |
|
48 'zstd/deprecated', |
|
49 'zstd/legacy', |
36 ] |
50 ] |
37 |
51 |
38 ext_sources = [ |
52 ext_sources = [ |
39 'zstd.c', |
53 'zstd.c', |
40 'c-ext/compressiondict.c', |
54 'c-ext/compressiondict.c', |
49 'c-ext/decompressoriterator.c', |
63 'c-ext/decompressoriterator.c', |
50 'c-ext/decompressionwriter.c', |
64 'c-ext/decompressionwriter.c', |
51 'c-ext/dictparams.c', |
65 'c-ext/dictparams.c', |
52 ] |
66 ] |
53 |
67 |
|
68 zstd_depends = [ |
|
69 'c-ext/python-zstandard.h', |
|
70 ] |
54 |
71 |
55 def get_c_extension(name='zstd'): |
72 |
|
73 def get_c_extension(support_legacy=False, name='zstd'): |
56 """Obtain a distutils.extension.Extension for the C extension.""" |
74 """Obtain a distutils.extension.Extension for the C extension.""" |
57 root = os.path.abspath(os.path.dirname(__file__)) |
75 root = os.path.abspath(os.path.dirname(__file__)) |
58 |
76 |
59 sources = [os.path.join(root, p) for p in zstd_sources + ext_sources] |
77 sources = [os.path.join(root, p) for p in zstd_sources + ext_sources] |
|
78 if support_legacy: |
|
79 sources.extend([os.path.join(root, p) for p in zstd_sources_legacy]) |
|
80 |
60 include_dirs = [os.path.join(root, d) for d in zstd_includes] |
81 include_dirs = [os.path.join(root, d) for d in zstd_includes] |
|
82 if support_legacy: |
|
83 include_dirs.extend([os.path.join(root, d) for d in zstd_includes_legacy]) |
|
84 |
|
85 depends = [os.path.join(root, p) for p in zstd_depends] |
61 |
86 |
62 # TODO compile with optimizations. |
87 # TODO compile with optimizations. |
63 return Extension(name, sources, |
88 return Extension(name, sources, |
64 include_dirs=include_dirs) |
89 include_dirs=include_dirs, |
|
90 depends=depends, |
|
91 extra_compile_args=["-DZSTD_LEGACY_SUPPORT=1"] if support_legacy else []) |