zstd-ruby 1.4.5.0 → 1.5.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/README.md +78 -5
  4. data/Rakefile +8 -2
  5. data/ext/zstdruby/common.h +15 -0
  6. data/ext/zstdruby/extconf.rb +3 -2
  7. data/ext/zstdruby/libzstd/common/allocations.h +55 -0
  8. data/ext/zstdruby/libzstd/common/bits.h +200 -0
  9. data/ext/zstdruby/libzstd/common/bitstream.h +45 -62
  10. data/ext/zstdruby/libzstd/common/compiler.h +205 -22
  11. data/ext/zstdruby/libzstd/common/cpu.h +1 -3
  12. data/ext/zstdruby/libzstd/common/debug.c +1 -1
  13. data/ext/zstdruby/libzstd/common/debug.h +12 -19
  14. data/ext/zstdruby/libzstd/common/entropy_common.c +172 -48
  15. data/ext/zstdruby/libzstd/common/error_private.c +10 -2
  16. data/ext/zstdruby/libzstd/common/error_private.h +82 -3
  17. data/ext/zstdruby/libzstd/common/fse.h +37 -86
  18. data/ext/zstdruby/libzstd/common/fse_decompress.c +117 -92
  19. data/ext/zstdruby/libzstd/common/huf.h +99 -166
  20. data/ext/zstdruby/libzstd/common/mem.h +124 -142
  21. data/ext/zstdruby/libzstd/common/pool.c +54 -27
  22. data/ext/zstdruby/libzstd/common/pool.h +10 -4
  23. data/ext/zstdruby/libzstd/common/portability_macros.h +156 -0
  24. data/ext/zstdruby/libzstd/common/threading.c +74 -19
  25. data/ext/zstdruby/libzstd/common/threading.h +5 -10
  26. data/ext/zstdruby/libzstd/common/xxhash.c +7 -847
  27. data/ext/zstdruby/libzstd/common/xxhash.h +5568 -167
  28. data/ext/zstdruby/libzstd/common/zstd_common.c +2 -37
  29. data/ext/zstdruby/libzstd/common/zstd_deps.h +111 -0
  30. data/ext/zstdruby/libzstd/common/zstd_internal.h +132 -187
  31. data/ext/zstdruby/libzstd/common/zstd_trace.h +163 -0
  32. data/ext/zstdruby/libzstd/compress/clevels.h +134 -0
  33. data/ext/zstdruby/libzstd/compress/fse_compress.c +83 -157
  34. data/ext/zstdruby/libzstd/compress/hist.c +27 -29
  35. data/ext/zstdruby/libzstd/compress/hist.h +2 -2
  36. data/ext/zstdruby/libzstd/compress/huf_compress.c +916 -279
  37. data/ext/zstdruby/libzstd/compress/zstd_compress.c +3773 -1019
  38. data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +610 -203
  39. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +119 -42
  40. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +16 -6
  41. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +42 -19
  42. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +1 -1
  43. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +49 -317
  44. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +1 -1
  45. data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +320 -103
  46. data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +388 -151
  47. data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +3 -2
  48. data/ext/zstdruby/libzstd/compress/zstd_fast.c +729 -265
  49. data/ext/zstdruby/libzstd/compress/zstd_fast.h +3 -2
  50. data/ext/zstdruby/libzstd/compress/zstd_lazy.c +1270 -251
  51. data/ext/zstdruby/libzstd/compress/zstd_lazy.h +61 -1
  52. data/ext/zstdruby/libzstd/compress/zstd_ldm.c +324 -219
  53. data/ext/zstdruby/libzstd/compress/zstd_ldm.h +9 -2
  54. data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +106 -0
  55. data/ext/zstdruby/libzstd/compress/zstd_opt.c +481 -209
  56. data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
  57. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +181 -457
  58. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +34 -113
  59. data/ext/zstdruby/libzstd/decompress/huf_decompress.c +1199 -565
  60. data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +576 -0
  61. data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +12 -12
  62. data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +2 -2
  63. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +627 -157
  64. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +1086 -326
  65. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +19 -5
  66. data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +62 -13
  67. data/ext/zstdruby/libzstd/dictBuilder/cover.c +73 -52
  68. data/ext/zstdruby/libzstd/dictBuilder/cover.h +7 -6
  69. data/ext/zstdruby/libzstd/dictBuilder/divsufsort.c +1 -1
  70. data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +44 -35
  71. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +103 -111
  72. data/ext/zstdruby/libzstd/{dictBuilder/zdict.h → zdict.h} +203 -34
  73. data/ext/zstdruby/libzstd/zstd.h +1217 -287
  74. data/ext/zstdruby/libzstd/{common/zstd_errors.h → zstd_errors.h} +28 -8
  75. data/ext/zstdruby/main.c +20 -0
  76. data/ext/zstdruby/skippable_frame.c +63 -0
  77. data/ext/zstdruby/streaming_compress.c +177 -0
  78. data/ext/zstdruby/streaming_compress.h +5 -0
  79. data/ext/zstdruby/streaming_decompress.c +123 -0
  80. data/ext/zstdruby/zstdruby.c +114 -32
  81. data/lib/zstd-ruby/version.rb +1 -1
  82. data/lib/zstd-ruby.rb +0 -1
  83. data/zstd-ruby.gemspec +1 -1
  84. metadata +19 -36
  85. data/.travis.yml +0 -14
  86. data/ext/zstdruby/libzstd/.gitignore +0 -3
  87. data/ext/zstdruby/libzstd/BUCK +0 -234
  88. data/ext/zstdruby/libzstd/Makefile +0 -354
  89. data/ext/zstdruby/libzstd/README.md +0 -179
  90. data/ext/zstdruby/libzstd/deprecated/zbuff.h +0 -214
  91. data/ext/zstdruby/libzstd/deprecated/zbuff_common.c +0 -26
  92. data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +0 -147
  93. data/ext/zstdruby/libzstd/deprecated/zbuff_decompress.c +0 -75
  94. data/ext/zstdruby/libzstd/dll/example/Makefile +0 -48
  95. data/ext/zstdruby/libzstd/dll/example/README.md +0 -69
  96. data/ext/zstdruby/libzstd/dll/example/build_package.bat +0 -20
  97. data/ext/zstdruby/libzstd/dll/example/fullbench-dll.sln +0 -25
  98. data/ext/zstdruby/libzstd/dll/example/fullbench-dll.vcxproj +0 -181
  99. data/ext/zstdruby/libzstd/legacy/zstd_legacy.h +0 -415
  100. data/ext/zstdruby/libzstd/legacy/zstd_v01.c +0 -2158
  101. data/ext/zstdruby/libzstd/legacy/zstd_v01.h +0 -94
  102. data/ext/zstdruby/libzstd/legacy/zstd_v02.c +0 -3518
  103. data/ext/zstdruby/libzstd/legacy/zstd_v02.h +0 -93
  104. data/ext/zstdruby/libzstd/legacy/zstd_v03.c +0 -3160
  105. data/ext/zstdruby/libzstd/legacy/zstd_v03.h +0 -93
  106. data/ext/zstdruby/libzstd/legacy/zstd_v04.c +0 -3647
  107. data/ext/zstdruby/libzstd/legacy/zstd_v04.h +0 -142
  108. data/ext/zstdruby/libzstd/legacy/zstd_v05.c +0 -4050
  109. data/ext/zstdruby/libzstd/legacy/zstd_v05.h +0 -162
  110. data/ext/zstdruby/libzstd/legacy/zstd_v06.c +0 -4154
  111. data/ext/zstdruby/libzstd/legacy/zstd_v06.h +0 -172
  112. data/ext/zstdruby/libzstd/legacy/zstd_v07.c +0 -4541
  113. data/ext/zstdruby/libzstd/legacy/zstd_v07.h +0 -187
  114. data/ext/zstdruby/libzstd/libzstd.pc.in +0 -15
  115. data/ext/zstdruby/zstdruby.h +0 -6
@@ -1,354 +0,0 @@
1
- # ################################################################
2
- # Copyright (c) 2015-2020, Yann Collet, Facebook, Inc.
3
- # All rights reserved.
4
- #
5
- # This source code is licensed under both the BSD-style license (found in the
6
- # LICENSE file in the root directory of this source tree) and the GPLv2 (found
7
- # in the COPYING file in the root directory of this source tree).
8
- # You may select, at your option, one of the above-listed licenses.
9
- # ################################################################
10
-
11
- Q = $(if $(filter 1,$(V) $(VERBOSE)),,@)
12
-
13
- # When cross-compiling from linux to windows, you might
14
- # need to specify this as "Windows." Fedora build fails
15
- # without it.
16
- #
17
- # Note: mingw-w64 build from linux to windows does not
18
- # fail on other tested distros (ubuntu, debian) even
19
- # without manually specifying the TARGET_SYSTEM.
20
- TARGET_SYSTEM ?= $(OS)
21
-
22
- # Version numbers
23
- LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
24
- LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
25
- LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
26
- LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
27
- LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
28
- LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
29
- LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
30
- LIBVER := $(shell echo $(LIBVER_SCRIPT))
31
- VERSION?= $(LIBVER)
32
- CCVER := $(shell $(CC) --version)
33
-
34
- CPPFLAGS+= -DXXH_NAMESPACE=ZSTD_
35
- ifeq ($(TARGET_SYSTEM),Windows_NT) # MinGW assumed
36
- CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
37
- endif
38
- DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
39
- -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
40
- -Wstrict-prototypes -Wundef -Wpointer-arith \
41
- -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
42
- -Wredundant-decls -Wmissing-prototypes -Wc++-compat
43
- CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
44
- FLAGS = $(CPPFLAGS) $(CFLAGS)
45
-
46
- HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
47
- GREP_OPTIONS ?=
48
- ifeq ($HAVE_COLORNEVER, 1)
49
- GREP_OPTIONS += --color=never
50
- endif
51
- GREP = grep $(GREP_OPTIONS)
52
-
53
- ZSTDCOMMON_FILES := $(sort $(wildcard common/*.c))
54
- ZSTDCOMP_FILES := $(sort $(wildcard compress/*.c))
55
- ZSTDDECOMP_FILES := $(sort $(wildcard decompress/*.c))
56
- ZDICT_FILES := $(sort $(wildcard dictBuilder/*.c))
57
- ZDEPR_FILES := $(sort $(wildcard deprecated/*.c))
58
- ZSTD_FILES := $(ZSTDCOMMON_FILES)
59
-
60
- ifeq ($(findstring GCC,$(CCVER)),GCC)
61
- decompress/zstd_decompress_block.o : CFLAGS+=-fno-tree-vectorize
62
- endif
63
-
64
- # This is a helper variable that configures a bunch of other variables to new,
65
- # space-optimized defaults.
66
- ZSTD_LIB_MINIFY ?= 0
67
- ifneq ($(ZSTD_LIB_MINIFY), 0)
68
- HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
69
- ZSTD_LEGACY_SUPPORT ?= 0
70
- ZSTD_LIB_DEPRECATED ?= 0
71
- HUF_FORCE_DECOMPRESS_X1 ?= 1
72
- ZSTD_FORCE_DECOMPRESS_SHORT ?= 1
73
- ZSTD_NO_INLINE ?= 1
74
- ZSTD_STRIP_ERROR_STRINGS ?= 1
75
- ifneq ($(HAVE_CC_OZ), 0)
76
- # Some compilers (clang) support an even more space-optimized setting.
77
- CFLAGS += -Oz
78
- else
79
- CFLAGS += -Os
80
- endif
81
- CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
82
- -DDYNAMIC_BMI2=0 -DNDEBUG
83
- else
84
- CFLAGS += -O3
85
- endif
86
-
87
- # Modules
88
- ZSTD_LIB_COMPRESSION ?= 1
89
- ZSTD_LIB_DECOMPRESSION ?= 1
90
- ZSTD_LIB_DICTBUILDER ?= 1
91
- ZSTD_LIB_DEPRECATED ?= 1
92
-
93
- # Legacy support
94
- ZSTD_LEGACY_SUPPORT ?= 5
95
- ZSTD_LEGACY_MULTITHREADED_API ?= 0
96
-
97
- # Build size optimizations
98
- HUF_FORCE_DECOMPRESS_X1 ?= 0
99
- HUF_FORCE_DECOMPRESS_X2 ?= 0
100
- ZSTD_FORCE_DECOMPRESS_SHORT ?= 0
101
- ZSTD_FORCE_DECOMPRESS_LONG ?= 0
102
- ZSTD_NO_INLINE ?= 0
103
- ZSTD_STRIP_ERROR_STRINGS ?= 0
104
-
105
- ifeq ($(ZSTD_LIB_COMPRESSION), 0)
106
- ZSTD_LIB_DICTBUILDER = 0
107
- ZSTD_LIB_DEPRECATED = 0
108
- endif
109
-
110
- ifeq ($(ZSTD_LIB_DECOMPRESSION), 0)
111
- ZSTD_LEGACY_SUPPORT = 0
112
- ZSTD_LIB_DEPRECATED = 0
113
- endif
114
-
115
- ifneq ($(ZSTD_LIB_COMPRESSION), 0)
116
- ZSTD_FILES += $(ZSTDCOMP_FILES)
117
- endif
118
-
119
- ifneq ($(ZSTD_LIB_DECOMPRESSION), 0)
120
- ZSTD_FILES += $(ZSTDDECOMP_FILES)
121
- endif
122
-
123
- ifneq ($(ZSTD_LIB_DEPRECATED), 0)
124
- ZSTD_FILES += $(ZDEPR_FILES)
125
- endif
126
-
127
- ifneq ($(ZSTD_LIB_DICTBUILDER), 0)
128
- ZSTD_FILES += $(ZDICT_FILES)
129
- endif
130
-
131
- ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
132
- CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
133
- endif
134
-
135
- ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
136
- CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
137
- endif
138
-
139
- ifneq ($(ZSTD_FORCE_DECOMPRESS_SHORT), 0)
140
- CFLAGS += -DZSTD_FORCE_DECOMPRESS_SHORT
141
- endif
142
-
143
- ifneq ($(ZSTD_FORCE_DECOMPRESS_LONG), 0)
144
- CFLAGS += -DZSTD_FORCE_DECOMPRESS_LONG
145
- endif
146
-
147
- ifneq ($(ZSTD_NO_INLINE), 0)
148
- CFLAGS += -DZSTD_NO_INLINE
149
- endif
150
-
151
- ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
152
- CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
153
- endif
154
-
155
- ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
156
- CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
157
- endif
158
-
159
- ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
160
- ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
161
- ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
162
- endif
163
- endif
164
- CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
165
-
166
- ZSTD_OBJ := $(patsubst %.c,%.o,$(ZSTD_FILES))
167
-
168
- # macOS linker doesn't support -soname, and use different extension
169
- # see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
170
- ifeq ($(shell uname), Darwin)
171
- SHARED_EXT = dylib
172
- SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
173
- SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
174
- SONAME_FLAGS = -install_name $(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
175
- else
176
- SONAME_FLAGS = -Wl,-soname=libzstd.$(SHARED_EXT).$(LIBVER_MAJOR)
177
- SHARED_EXT = so
178
- SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
179
- SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
180
- endif
181
-
182
-
183
- .PHONY: default lib-all all clean install uninstall
184
-
185
- default: lib-release
186
-
187
- # alias
188
- lib-all: all
189
-
190
- all: lib
191
-
192
- libzstd.a: ARFLAGS = rcs
193
- libzstd.a: $(ZSTD_OBJ)
194
- @echo compiling static library
195
- $(Q)$(AR) $(ARFLAGS) $@ $^
196
-
197
- ifneq (,$(filter Windows%,$(TARGET_SYSTEM)))
198
-
199
- LIBZSTD = dll\libzstd.dll
200
- $(LIBZSTD): $(ZSTD_FILES)
201
- @echo compiling dynamic library $(LIBVER)
202
- $(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -Wl,--out-implib,dll\libzstd.dll.a -shared $^ -o $@
203
-
204
- else
205
-
206
- LIBZSTD = libzstd.$(SHARED_EXT_VER)
207
- $(LIBZSTD): LDFLAGS += -shared -fPIC -fvisibility=hidden
208
- $(LIBZSTD): $(ZSTD_FILES)
209
- @echo compiling dynamic library $(LIBVER)
210
- $(Q)$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
211
- @echo creating versioned links
212
- $(Q)ln -sf $@ libzstd.$(SHARED_EXT_MAJOR)
213
- $(Q)ln -sf $@ libzstd.$(SHARED_EXT)
214
-
215
- endif
216
-
217
- .PHONY: libzstd
218
- libzstd : $(LIBZSTD)
219
-
220
- .PHONY: lib
221
- lib : libzstd.a libzstd
222
-
223
- .PHONY: lib-mt
224
- %-mt : CPPFLAGS += -DZSTD_MULTITHREAD
225
- %-mt : LDFLAGS += -pthread
226
- %-mt : %
227
- @echo multi-threading build completed
228
-
229
- .PHONY: lib-release
230
- %-release : DEBUGFLAGS :=
231
- %-release : %
232
- @echo release build completed
233
-
234
-
235
- # Special case : building library in single-thread mode _and_ without zstdmt_compress.c
236
- ZSTDMT_FILES = compress/zstdmt_compress.c
237
- ZSTD_NOMT_FILES = $(filter-out $(ZSTDMT_FILES),$(ZSTD_FILES))
238
- libzstd-nomt: LDFLAGS += -shared -fPIC -fvisibility=hidden
239
- libzstd-nomt: $(ZSTD_NOMT_FILES)
240
- @echo compiling single-thread dynamic library $(LIBVER)
241
- @echo files : $(ZSTD_NOMT_FILES)
242
- $(Q)$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
243
-
244
- clean:
245
- $(Q)$(RM) -r *.dSYM # macOS-specific
246
- $(Q)$(RM) core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
247
- $(Q)$(RM) dll/libzstd.dll dll/libzstd.lib libzstd-nomt*
248
- $(Q)$(RM) common/*.o compress/*.o decompress/*.o dictBuilder/*.o legacy/*.o deprecated/*.o
249
- @echo Cleaning library completed
250
-
251
- #-----------------------------------------------------------------------------
252
- # make install is validated only for below listed environments
253
- #-----------------------------------------------------------------------------
254
- ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
255
-
256
- all: libzstd.pc
257
-
258
- DESTDIR ?=
259
- # directory variables : GNU conventions prefer lowercase
260
- # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
261
- # support both lower and uppercase (BSD), use uppercase in script
262
- prefix ?= /usr/local
263
- PREFIX ?= $(prefix)
264
- exec_prefix ?= $(PREFIX)
265
- EXEC_PREFIX ?= $(exec_prefix)
266
- libdir ?= $(EXEC_PREFIX)/lib
267
- LIBDIR ?= $(libdir)
268
- includedir ?= $(PREFIX)/include
269
- INCLUDEDIR ?= $(includedir)
270
-
271
- PCLIBDIR ?= $(shell echo "$(LIBDIR)" | sed -n -E -e "s@^$(EXEC_PREFIX)(/|$$)@@p")
272
- PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | sed -n -E -e "s@^$(PREFIX)(/|$$)@@p")
273
-
274
- ifeq (,$(PCLIBDIR))
275
- # Additional prefix check is required, since the empty string is technically a
276
- # valid PCLIBDIR
277
- ifeq (,$(shell echo "$(LIBDIR)" | sed -n -E -e "\\@^$(EXEC_PREFIX)(/|$$)@ p"))
278
- $(error configured libdir ($(LIBDIR)) is outside of prefix ($(PREFIX)), can't generate pkg-config file)
279
- endif
280
- endif
281
-
282
- ifeq (,$(PCINCDIR))
283
- # Additional prefix check is required, since the empty string is technically a
284
- # valid PCINCDIR
285
- ifeq (,$(shell echo "$(INCLUDEDIR)" | sed -n -E -e "\\@^$(PREFIX)(/|$$)@ p"))
286
- $(error configured includedir ($(INCLUDEDIR)) is outside of exec_prefix ($(EXEC_PREFIX)), can't generate pkg-config file)
287
- endif
288
- endif
289
-
290
- ifneq (,$(filter $(shell uname),FreeBSD NetBSD DragonFly))
291
- PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
292
- else
293
- PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
294
- endif
295
-
296
- ifneq (,$(filter $(shell uname),SunOS))
297
- INSTALL ?= ginstall
298
- else
299
- INSTALL ?= install
300
- endif
301
-
302
- INSTALL_PROGRAM ?= $(INSTALL)
303
- INSTALL_DATA ?= $(INSTALL) -m 644
304
-
305
-
306
- libzstd.pc:
307
- libzstd.pc: libzstd.pc.in
308
- @echo creating pkgconfig
309
- $(Q)@sed -E -e 's|@PREFIX@|$(PREFIX)|' \
310
- -e 's|@LIBDIR@|$(PCLIBDIR)|' \
311
- -e 's|@INCLUDEDIR@|$(PCINCDIR)|' \
312
- -e 's|@VERSION@|$(VERSION)|' \
313
- $< >$@
314
-
315
- install: install-pc install-static install-shared install-includes
316
- @echo zstd static and shared library installed
317
-
318
- install-pc: libzstd.pc
319
- $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
320
- $(Q)$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
321
-
322
- install-static: libzstd.a
323
- @echo Installing static library
324
- $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
325
- $(Q)$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
326
-
327
- install-shared: libzstd
328
- @echo Installing shared library
329
- $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
330
- $(Q)$(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR)
331
- $(Q)ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
332
- $(Q)ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
333
-
334
- install-includes:
335
- @echo Installing includes
336
- $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
337
- $(Q)$(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR)
338
- $(Q)$(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR)
339
- $(Q)$(INSTALL_DATA) deprecated/zbuff.h $(DESTDIR)$(INCLUDEDIR) # prototypes generate deprecation warnings
340
- $(Q)$(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR)
341
-
342
- uninstall:
343
- $(Q)$(RM) $(DESTDIR)$(LIBDIR)/libzstd.a
344
- $(Q)$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
345
- $(Q)$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
346
- $(Q)$(RM) $(DESTDIR)$(LIBDIR)/$(LIBZSTD)
347
- $(Q)$(RM) $(DESTDIR)$(PKGCONFIGDIR)/libzstd.pc
348
- $(Q)$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd.h
349
- $(Q)$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd_errors.h
350
- $(Q)$(RM) $(DESTDIR)$(INCLUDEDIR)/zbuff.h # Deprecated streaming functions
351
- $(Q)$(RM) $(DESTDIR)$(INCLUDEDIR)/zdict.h
352
- @echo zstd libraries successfully uninstalled
353
-
354
- endif
@@ -1,179 +0,0 @@
1
- Zstandard library files
2
- ================================
3
-
4
- The __lib__ directory is split into several sub-directories,
5
- in order to make it easier to select or exclude features.
6
-
7
-
8
- #### Building
9
-
10
- `Makefile` script is provided, supporting [Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html#Makefile-Conventions),
11
- including commands variables, staged install, directory variables and standard targets.
12
- - `make` : generates both static and dynamic libraries
13
- - `make install` : install libraries and headers in target system directories
14
-
15
- `libzstd` default scope is pretty large, including compression, decompression, dictionary builder,
16
- and support for decoding legacy formats >= v0.5.0.
17
- The scope can be reduced on demand (see paragraph _modular build_).
18
-
19
-
20
- #### Multithreading support
21
-
22
- Multithreading is disabled by default when building with `make`.
23
- Enabling multithreading requires 2 conditions :
24
- - set build macro `ZSTD_MULTITHREAD` (`-DZSTD_MULTITHREAD` for `gcc`)
25
- - for POSIX systems : compile with pthread (`-pthread` compilation flag for `gcc`)
26
-
27
- Both conditions are automatically applied when invoking `make lib-mt` target.
28
-
29
- When linking a POSIX program with a multithreaded version of `libzstd`,
30
- note that it's necessary to invoke the `-pthread` flag during link stage.
31
-
32
- Multithreading capabilities are exposed
33
- via the [advanced API defined in `lib/zstd.h`](https://github.com/facebook/zstd/blob/v1.4.3/lib/zstd.h#L351).
34
-
35
-
36
- #### API
37
-
38
- Zstandard's stable API is exposed within [lib/zstd.h](zstd.h).
39
-
40
-
41
- #### Advanced API
42
-
43
- Optional advanced features are exposed via :
44
-
45
- - `lib/common/zstd_errors.h` : translates `size_t` function results
46
- into a `ZSTD_ErrorCode`, for accurate error handling.
47
-
48
- - `ZSTD_STATIC_LINKING_ONLY` : if this macro is defined _before_ including `zstd.h`,
49
- it unlocks access to the experimental API,
50
- exposed in the second part of `zstd.h`.
51
- All definitions in the experimental APIs are unstable,
52
- they may still change in the future, or even be removed.
53
- As a consequence, experimental definitions shall ___never be used with dynamic library___ !
54
- Only static linking is allowed.
55
-
56
-
57
- #### Modular build
58
-
59
- It's possible to compile only a limited set of features within `libzstd`.
60
- The file structure is designed to make this selection manually achievable for any build system :
61
-
62
- - Directory `lib/common` is always required, for all variants.
63
-
64
- - Compression source code lies in `lib/compress`
65
-
66
- - Decompression source code lies in `lib/decompress`
67
-
68
- - It's possible to include only `compress` or only `decompress`, they don't depend on each other.
69
-
70
- - `lib/dictBuilder` : makes it possible to generate dictionaries from a set of samples.
71
- The API is exposed in `lib/dictBuilder/zdict.h`.
72
- This module depends on both `lib/common` and `lib/compress` .
73
-
74
- - `lib/legacy` : makes it possible to decompress legacy zstd formats, starting from `v0.1.0`.
75
- This module depends on `lib/common` and `lib/decompress`.
76
- To enable this feature, define `ZSTD_LEGACY_SUPPORT` during compilation.
77
- Specifying a number limits versions supported to that version onward.
78
- For example, `ZSTD_LEGACY_SUPPORT=2` means : "support legacy formats >= v0.2.0".
79
- Conversely, `ZSTD_LEGACY_SUPPORT=0` means "do __not__ support legacy formats".
80
- By default, this build macro is set as `ZSTD_LEGACY_SUPPORT=5`.
81
- Decoding supported legacy format is a transparent capability triggered within decompression functions.
82
- It's also allowed to invoke legacy API directly, exposed in `lib/legacy/zstd_legacy.h`.
83
- Each version does also provide its own set of advanced API.
84
- For example, advanced API for version `v0.4` is exposed in `lib/legacy/zstd_v04.h` .
85
-
86
- - While invoking `make libzstd`, it's possible to define build macros
87
- `ZSTD_LIB_COMPRESSION, ZSTD_LIB_DECOMPRESSION`, `ZSTD_LIB_DICTBUILDER`,
88
- and `ZSTD_LIB_DEPRECATED` as `0` to forgo compilation of the
89
- corresponding features. This will also disable compilation of all
90
- dependencies (eg. `ZSTD_LIB_COMPRESSION=0` will also disable
91
- dictBuilder).
92
-
93
- - There are a number of options that can help minimize the binary size of
94
- `libzstd`.
95
-
96
- The first step is to select the components needed (using the above-described
97
- `ZSTD_LIB_COMPRESSION` etc.).
98
-
99
- The next step is to set `ZSTD_LIB_MINIFY` to `1` when invoking `make`. This
100
- disables various optional components and changes the compilation flags to
101
- prioritize space-saving.
102
-
103
- Detailed options: Zstandard's code and build environment is set up by default
104
- to optimize above all else for performance. In pursuit of this goal, Zstandard
105
- makes significant trade-offs in code size. For example, Zstandard often has
106
- more than one implementation of a particular component, with each
107
- implementation optimized for different scenarios. For example, the Huffman
108
- decoder has complementary implementations that decode the stream one symbol at
109
- a time or two symbols at a time. Zstd normally includes both (and dispatches
110
- between them at runtime), but by defining `HUF_FORCE_DECOMPRESS_X1` or
111
- `HUF_FORCE_DECOMPRESS_X2`, you can force the use of one or the other, avoiding
112
- compilation of the other. Similarly, `ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT`
113
- and `ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG` force the compilation and use of
114
- only one or the other of two decompression implementations. The smallest
115
- binary is achieved by using `HUF_FORCE_DECOMPRESS_X1` and
116
- `ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT` (implied by `ZSTD_LIB_MINIFY`).
117
-
118
- For squeezing the last ounce of size out, you can also define
119
- `ZSTD_NO_INLINE`, which disables inlining, and `ZSTD_STRIP_ERROR_STRINGS`,
120
- which removes the error messages that are otherwise returned by
121
- `ZSTD_getErrorName` (implied by `ZSTD_LIB_MINIFY`).
122
-
123
- Finally, when integrating into your application, make sure you're doing link-
124
- time optimation and unused symbol garbage collection (via some combination of,
125
- e.g., `-flto`, `-ffat-lto-objects`, `-fuse-linker-plugin`,
126
- `-ffunction-sections`, `-fdata-sections`, `-fmerge-all-constants`,
127
- `-Wl,--gc-sections`, `-Wl,-z,norelro`, and an archiver that understands
128
- the compiler's intermediate representation, e.g., `AR=gcc-ar`). Consult your
129
- compiler's documentation.
130
-
131
- - While invoking `make libzstd`, the build macro `ZSTD_LEGACY_MULTITHREADED_API=1`
132
- will expose the deprecated `ZSTDMT` API exposed by `zstdmt_compress.h` in
133
- the shared library, which is now hidden by default.
134
-
135
- - The build macro `DYNAMIC_BMI2` can be set to 1 or 0 in order to generate binaries
136
- which can detect at runtime the presence of BMI2 instructions, and use them only if present.
137
- These instructions contribute to better performance, notably on the decoder side.
138
- By default, this feature is automatically enabled on detecting
139
- the right instruction set (x64) and compiler (clang or gcc >= 5).
140
- It's obviously disabled for different cpus,
141
- or when BMI2 instruction set is _required_ by the compiler command line
142
- (in this case, only the BMI2 code path is generated).
143
- Setting this macro will either force to generate the BMI2 dispatcher (1)
144
- or prevent it (0). It overrides automatic detection.
145
-
146
-
147
- #### Windows : using MinGW+MSYS to create DLL
148
-
149
- DLL can be created using MinGW+MSYS with the `make libzstd` command.
150
- This command creates `dll\libzstd.dll` and the import library `dll\libzstd.lib`.
151
- The import library is only required with Visual C++.
152
- The header file `zstd.h` and the dynamic library `dll\libzstd.dll` are required to
153
- compile a project using gcc/MinGW.
154
- The dynamic library has to be added to linking options.
155
- It means that if a project that uses ZSTD consists of a single `test-dll.c`
156
- file it should be linked with `dll\libzstd.dll`. For example:
157
- ```
158
- gcc $(CFLAGS) -Iinclude/ test-dll.c -o test-dll dll\libzstd.dll
159
- ```
160
- The compiled executable will require ZSTD DLL which is available at `dll\libzstd.dll`.
161
-
162
-
163
- #### Deprecated API
164
-
165
- Obsolete API on their way out are stored in directory `lib/deprecated`.
166
- At this stage, it contains older streaming prototypes, in `lib/deprecated/zbuff.h`.
167
- These prototypes will be removed in some future version.
168
- Consider migrating code towards supported streaming API exposed in `zstd.h`.
169
-
170
-
171
- #### Miscellaneous
172
-
173
- The other files are not source code. There are :
174
-
175
- - `BUCK` : support for `buck` build system (https://buckbuild.com/)
176
- - `Makefile` : `make` script to build and install zstd library (static and dynamic)
177
- - `README.md` : this file
178
- - `dll/` : resources directory for Windows compilation
179
- - `libzstd.pc.in` : script for `pkg-config` (used in `make install`)