zstd-ruby 1.4.5.0 → 1.4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +35 -0
- data/README.md +2 -2
- data/ext/zstdruby/libzstd/Makefile +237 -138
- data/ext/zstdruby/libzstd/README.md +28 -0
- data/ext/zstdruby/libzstd/common/bitstream.h +25 -16
- data/ext/zstdruby/libzstd/common/compiler.h +118 -4
- data/ext/zstdruby/libzstd/common/cpu.h +1 -3
- data/ext/zstdruby/libzstd/common/debug.c +1 -1
- data/ext/zstdruby/libzstd/common/debug.h +12 -19
- data/ext/zstdruby/libzstd/common/entropy_common.c +189 -43
- data/ext/zstdruby/libzstd/common/error_private.c +2 -1
- data/ext/zstdruby/libzstd/common/error_private.h +2 -2
- data/ext/zstdruby/libzstd/common/fse.h +40 -12
- data/ext/zstdruby/libzstd/common/fse_decompress.c +124 -17
- data/ext/zstdruby/libzstd/common/huf.h +27 -6
- data/ext/zstdruby/libzstd/common/mem.h +67 -94
- data/ext/zstdruby/libzstd/common/pool.c +23 -17
- data/ext/zstdruby/libzstd/common/pool.h +2 -2
- data/ext/zstdruby/libzstd/common/threading.c +6 -5
- data/ext/zstdruby/libzstd/common/xxhash.c +19 -57
- data/ext/zstdruby/libzstd/common/xxhash.h +2 -2
- data/ext/zstdruby/libzstd/common/zstd_common.c +10 -10
- data/ext/zstdruby/libzstd/common/zstd_deps.h +111 -0
- data/ext/zstdruby/libzstd/common/zstd_errors.h +2 -1
- data/ext/zstdruby/libzstd/common/zstd_internal.h +90 -59
- data/ext/zstdruby/libzstd/common/zstd_trace.c +42 -0
- data/ext/zstdruby/libzstd/common/zstd_trace.h +152 -0
- data/ext/zstdruby/libzstd/compress/fse_compress.c +31 -24
- data/ext/zstdruby/libzstd/compress/hist.c +27 -29
- data/ext/zstdruby/libzstd/compress/hist.h +2 -2
- data/ext/zstdruby/libzstd/compress/huf_compress.c +217 -101
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +1495 -478
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +143 -44
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +7 -7
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +18 -4
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +25 -21
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +62 -26
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +23 -23
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +21 -21
- data/ext/zstdruby/libzstd/compress/zstd_fast.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +352 -78
- data/ext/zstdruby/libzstd/compress/zstd_lazy.h +21 -1
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +276 -209
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +8 -2
- data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +103 -0
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +191 -46
- data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +79 -410
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +27 -109
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +303 -201
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +9 -9
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +2 -2
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +370 -87
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +153 -45
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +6 -3
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +28 -11
- data/ext/zstdruby/libzstd/deprecated/zbuff.h +1 -1
- data/ext/zstdruby/libzstd/deprecated/zbuff_common.c +1 -1
- data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +1 -1
- data/ext/zstdruby/libzstd/deprecated/zbuff_decompress.c +1 -1
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +40 -31
- data/ext/zstdruby/libzstd/dictBuilder/cover.h +2 -2
- data/ext/zstdruby/libzstd/dictBuilder/divsufsort.c +1 -1
- data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +26 -25
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +22 -24
- data/ext/zstdruby/libzstd/dictBuilder/zdict.h +5 -4
- data/ext/zstdruby/libzstd/dll/example/Makefile +1 -1
- data/ext/zstdruby/libzstd/dll/example/README.md +16 -22
- data/ext/zstdruby/libzstd/legacy/zstd_legacy.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v01.c +6 -2
- data/ext/zstdruby/libzstd/legacy/zstd_v01.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v02.c +6 -2
- data/ext/zstdruby/libzstd/legacy/zstd_v02.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v03.c +6 -2
- data/ext/zstdruby/libzstd/legacy/zstd_v03.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v04.c +7 -3
- data/ext/zstdruby/libzstd/legacy/zstd_v04.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v05.c +10 -6
- data/ext/zstdruby/libzstd/legacy/zstd_v05.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v06.c +10 -6
- data/ext/zstdruby/libzstd/legacy/zstd_v06.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v07.c +10 -6
- data/ext/zstdruby/libzstd/legacy/zstd_v07.h +1 -1
- data/ext/zstdruby/libzstd/libzstd.pc.in +3 -3
- data/ext/zstdruby/libzstd/zstd.h +414 -54
- data/lib/zstd-ruby/version.rb +1 -1
- metadata +7 -3
- data/.travis.yml +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b9fb489baa649ba5ee4d0eab2a8eff41dca8aed169decbcbb94f2b743fff4b9
|
4
|
+
data.tar.gz: 466460ae250bdf1b41ad9a520cf22c3457647c64c87f6479bf59a7d5876eb08c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba520ce0a01a96bfb292bea7d093998e21fa27a19309e8e708d09b1bd033c02101442d7572da9ef02e190932cc4caf348771e9dac5b72bd4479d96c0a14791ec
|
7
|
+
data.tar.gz: a1ad48b44fefedd472de63ee6069e9fe928ed436a6c6fe7739ad8666c05420ff75b0ab5a5273fe87d8cdd41be39372ffae8bd707437c16f137e3ad63ca566a17
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on: [push, pull_request]
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test:
|
14
|
+
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
strategy:
|
17
|
+
matrix:
|
18
|
+
ruby-version: ['2.5', '2.6', '2.7', '3.0']
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
30
|
+
- name: Install dependencies
|
31
|
+
run: bundle install
|
32
|
+
- name: Compile
|
33
|
+
run: bundle exec rake compile
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rspec
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
[](https://badge.fury.io/rb/zstd-ruby)
|
2
|
-
|
2
|
+

|
3
3
|
|
4
4
|
# zstd-ruby
|
5
5
|
|
@@ -10,7 +10,7 @@ See https://github.com/facebook/zstd
|
|
10
10
|
Fork from https://github.com/jarredholman/ruby-zstd.
|
11
11
|
|
12
12
|
## Zstd version
|
13
|
-
v1.4.
|
13
|
+
v1.4.9 (https://github.com/facebook/zstd/tree/v1.4.9)
|
14
14
|
|
15
15
|
## Installation
|
16
16
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# ################################################################
|
2
|
-
# Copyright (c) 2015-
|
2
|
+
# Copyright (c) 2015-2021, Yann Collet, Facebook, Inc.
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# This source code is licensed under both the BSD-style license (found in the
|
@@ -8,15 +8,16 @@
|
|
8
8
|
# You may select, at your option, one of the above-listed licenses.
|
9
9
|
# ################################################################
|
10
10
|
|
11
|
-
|
11
|
+
.PHONY: default
|
12
|
+
default: lib-release
|
12
13
|
|
13
|
-
#
|
14
|
-
|
15
|
-
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
14
|
+
# define silent mode as default (verbose mode with V=1 or VERBOSE=1)
|
15
|
+
$(V)$(VERBOSE).SILENT:
|
16
|
+
|
17
|
+
# When cross-compiling from linux to windows,
|
18
|
+
# one might need to specify TARGET_SYSTEM as "Windows."
|
19
|
+
# Building from Fedora fails without it.
|
20
|
+
# (but Ubuntu and Debian don't need to set anything)
|
20
21
|
TARGET_SYSTEM ?= $(OS)
|
21
22
|
|
22
23
|
# Version numbers
|
@@ -31,24 +32,49 @@ LIBVER := $(shell echo $(LIBVER_SCRIPT))
|
|
31
32
|
VERSION?= $(LIBVER)
|
32
33
|
CCVER := $(shell $(CC) --version)
|
33
34
|
|
34
|
-
|
35
|
+
# ZSTD_LIB_MINIFY is a helper variable that
|
36
|
+
# configures a bunch of other variables to space-optimized defaults.
|
37
|
+
ZSTD_LIB_MINIFY ?= 0
|
38
|
+
ifneq ($(ZSTD_LIB_MINIFY), 0)
|
39
|
+
HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
|
40
|
+
ZSTD_LEGACY_SUPPORT ?= 0
|
41
|
+
ZSTD_LIB_DEPRECATED ?= 0
|
42
|
+
HUF_FORCE_DECOMPRESS_X1 ?= 1
|
43
|
+
ZSTD_FORCE_DECOMPRESS_SHORT ?= 1
|
44
|
+
ZSTD_NO_INLINE ?= 1
|
45
|
+
ZSTD_STRIP_ERROR_STRINGS ?= 1
|
46
|
+
ifneq ($(HAVE_CC_OZ), 0)
|
47
|
+
# Some compilers (clang) support an even more space-optimized setting.
|
48
|
+
CFLAGS += -Oz
|
49
|
+
else
|
50
|
+
CFLAGS += -Os
|
51
|
+
endif
|
52
|
+
CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
|
53
|
+
-DDYNAMIC_BMI2=0 -DNDEBUG
|
54
|
+
else
|
55
|
+
CFLAGS += -O3
|
56
|
+
endif
|
57
|
+
|
58
|
+
DEBUGLEVEL ?= 0
|
59
|
+
CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -DDEBUGLEVEL=$(DEBUGLEVEL)
|
35
60
|
ifeq ($(TARGET_SYSTEM),Windows_NT) # MinGW assumed
|
36
|
-
CPPFLAGS
|
61
|
+
CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
|
37
62
|
endif
|
38
63
|
DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
|
39
64
|
-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
|
40
65
|
-Wstrict-prototypes -Wundef -Wpointer-arith \
|
41
66
|
-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
|
42
67
|
-Wredundant-decls -Wmissing-prototypes -Wc++-compat
|
43
|
-
CFLAGS
|
44
|
-
FLAGS
|
68
|
+
CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
|
69
|
+
FLAGS = $(CPPFLAGS) $(CFLAGS)
|
45
70
|
|
46
71
|
HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
47
72
|
GREP_OPTIONS ?=
|
48
73
|
ifeq ($HAVE_COLORNEVER, 1)
|
49
|
-
GREP_OPTIONS += --color=never
|
74
|
+
GREP_OPTIONS += --color=never
|
50
75
|
endif
|
51
76
|
GREP = grep $(GREP_OPTIONS)
|
77
|
+
SED_ERE_OPT ?= -E
|
52
78
|
|
53
79
|
ZSTDCOMMON_FILES := $(sort $(wildcard common/*.c))
|
54
80
|
ZSTDCOMP_FILES := $(sort $(wildcard compress/*.c))
|
@@ -58,30 +84,7 @@ ZDEPR_FILES := $(sort $(wildcard deprecated/*.c))
|
|
58
84
|
ZSTD_FILES := $(ZSTDCOMMON_FILES)
|
59
85
|
|
60
86
|
ifeq ($(findstring GCC,$(CCVER)),GCC)
|
61
|
-
decompress/zstd_decompress_block.o :
|
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
|
87
|
+
decompress/zstd_decompress_block.o : CFLAGS+=-fno-tree-vectorize
|
85
88
|
endif
|
86
89
|
|
87
90
|
# Modules
|
@@ -103,116 +106,186 @@ ZSTD_NO_INLINE ?= 0
|
|
103
106
|
ZSTD_STRIP_ERROR_STRINGS ?= 0
|
104
107
|
|
105
108
|
ifeq ($(ZSTD_LIB_COMPRESSION), 0)
|
106
|
-
|
107
|
-
|
109
|
+
ZSTD_LIB_DICTBUILDER = 0
|
110
|
+
ZSTD_LIB_DEPRECATED = 0
|
108
111
|
endif
|
109
112
|
|
110
113
|
ifeq ($(ZSTD_LIB_DECOMPRESSION), 0)
|
111
|
-
|
112
|
-
|
114
|
+
ZSTD_LEGACY_SUPPORT = 0
|
115
|
+
ZSTD_LIB_DEPRECATED = 0
|
113
116
|
endif
|
114
117
|
|
115
118
|
ifneq ($(ZSTD_LIB_COMPRESSION), 0)
|
116
|
-
|
119
|
+
ZSTD_FILES += $(ZSTDCOMP_FILES)
|
117
120
|
endif
|
118
121
|
|
119
122
|
ifneq ($(ZSTD_LIB_DECOMPRESSION), 0)
|
120
|
-
|
123
|
+
ZSTD_FILES += $(ZSTDDECOMP_FILES)
|
121
124
|
endif
|
122
125
|
|
123
126
|
ifneq ($(ZSTD_LIB_DEPRECATED), 0)
|
124
|
-
|
127
|
+
ZSTD_FILES += $(ZDEPR_FILES)
|
125
128
|
endif
|
126
129
|
|
127
130
|
ifneq ($(ZSTD_LIB_DICTBUILDER), 0)
|
128
|
-
|
131
|
+
ZSTD_FILES += $(ZDICT_FILES)
|
129
132
|
endif
|
130
133
|
|
131
134
|
ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
|
132
|
-
|
135
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
|
133
136
|
endif
|
134
137
|
|
135
138
|
ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
|
136
|
-
|
139
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
|
137
140
|
endif
|
138
141
|
|
139
142
|
ifneq ($(ZSTD_FORCE_DECOMPRESS_SHORT), 0)
|
140
|
-
|
143
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_SHORT
|
141
144
|
endif
|
142
145
|
|
143
146
|
ifneq ($(ZSTD_FORCE_DECOMPRESS_LONG), 0)
|
144
|
-
|
147
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_LONG
|
145
148
|
endif
|
146
149
|
|
147
150
|
ifneq ($(ZSTD_NO_INLINE), 0)
|
148
|
-
|
151
|
+
CFLAGS += -DZSTD_NO_INLINE
|
149
152
|
endif
|
150
153
|
|
151
154
|
ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
|
152
|
-
|
155
|
+
CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
|
153
156
|
endif
|
154
157
|
|
155
158
|
ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
|
156
|
-
|
159
|
+
CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
|
157
160
|
endif
|
158
161
|
|
159
162
|
ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
|
160
163
|
ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
161
|
-
|
164
|
+
ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
162
165
|
endif
|
163
166
|
endif
|
164
167
|
CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
|
165
168
|
|
166
|
-
|
169
|
+
ZSTD_LOCAL_SRC := $(notdir $(ZSTD_FILES))
|
170
|
+
ZSTD_LOCAL_OBJ := $(ZSTD_LOCAL_SRC:.c=.o)
|
171
|
+
|
172
|
+
ZSTD_SUBDIR := common compress decompress dictBuilder legacy deprecated
|
173
|
+
vpath %.c $(ZSTD_SUBDIR)
|
174
|
+
|
175
|
+
UNAME := $(shell uname)
|
176
|
+
|
177
|
+
ifndef BUILD_DIR
|
178
|
+
ifeq ($(UNAME), Darwin)
|
179
|
+
HASH ?= md5
|
180
|
+
else ifeq ($(UNAME), FreeBSD)
|
181
|
+
HASH ?= gmd5sum
|
182
|
+
else ifeq ($(UNAME), NetBSD)
|
183
|
+
HASH ?= md5 -n
|
184
|
+
else ifeq ($(UNAME), OpenBSD)
|
185
|
+
HASH ?= md5
|
186
|
+
endif
|
187
|
+
HASH ?= md5sum
|
188
|
+
|
189
|
+
HASH_DIR = conf_$(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ZSTD_FILES) | $(HASH) | cut -f 1 -d " " )
|
190
|
+
HAVE_HASH :=$(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
|
191
|
+
ifeq ($(HAVE_HASH),0)
|
192
|
+
$(info warning : could not find HASH ($(HASH)), needed to differentiate builds using different flags)
|
193
|
+
BUILD_DIR := obj/generic_noconf
|
194
|
+
endif
|
195
|
+
endif # BUILD_DIR
|
196
|
+
|
167
197
|
|
168
198
|
# macOS linker doesn't support -soname, and use different extension
|
169
199
|
# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
|
170
|
-
ifeq ($(
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
200
|
+
ifeq ($(UNAME), Darwin)
|
201
|
+
SHARED_EXT = dylib
|
202
|
+
SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
|
203
|
+
SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
|
204
|
+
SONAME_FLAGS = -install_name $(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
|
175
205
|
else
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
206
|
+
SONAME_FLAGS = -Wl,-soname=libzstd.$(SHARED_EXT).$(LIBVER_MAJOR)
|
207
|
+
SHARED_EXT = so
|
208
|
+
SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
|
209
|
+
SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
|
180
210
|
endif
|
181
211
|
|
212
|
+
SET_CACHE_DIRECTORY = \
|
213
|
+
+$(MAKE) --no-print-directory $@ \
|
214
|
+
BUILD_DIR=obj/$(HASH_DIR) \
|
215
|
+
CPPFLAGS="$(CPPFLAGS)" \
|
216
|
+
CFLAGS="$(CFLAGS)" \
|
217
|
+
LDFLAGS="$(LDFLAGS)"
|
182
218
|
|
183
|
-
.PHONY: default lib-all all clean install uninstall
|
184
219
|
|
185
|
-
|
220
|
+
.PHONY: all
|
221
|
+
all: lib
|
186
222
|
|
187
|
-
# alias
|
188
|
-
lib-all: all
|
189
223
|
|
190
|
-
|
224
|
+
.PHONY: libzstd.a # must be run every time
|
191
225
|
|
192
|
-
|
193
|
-
|
226
|
+
ifndef BUILD_DIR
|
227
|
+
# determine BUILD_DIR from compilation flags
|
228
|
+
|
229
|
+
libzstd.a:
|
230
|
+
$(SET_CACHE_DIRECTORY)
|
231
|
+
|
232
|
+
else
|
233
|
+
# BUILD_DIR is defined
|
234
|
+
|
235
|
+
ZSTD_STATLIB_DIR := $(BUILD_DIR)/static
|
236
|
+
ZSTD_STATLIB := $(ZSTD_STATLIB_DIR)/libzstd.a
|
237
|
+
ZSTD_STATLIB_OBJ := $(addprefix $(ZSTD_STATLIB_DIR)/,$(ZSTD_LOCAL_OBJ))
|
238
|
+
$(ZSTD_STATLIB): ARFLAGS = rcs
|
239
|
+
$(ZSTD_STATLIB): | $(ZSTD_STATLIB_DIR)
|
240
|
+
$(ZSTD_STATLIB): $(ZSTD_STATLIB_OBJ)
|
194
241
|
@echo compiling static library
|
195
|
-
$(
|
242
|
+
$(AR) $(ARFLAGS) $@ $^
|
243
|
+
|
244
|
+
libzstd.a: $(ZSTD_STATLIB)
|
245
|
+
cp -f $< $@
|
246
|
+
|
247
|
+
endif
|
196
248
|
|
197
249
|
ifneq (,$(filter Windows%,$(TARGET_SYSTEM)))
|
198
250
|
|
199
|
-
LIBZSTD = dll
|
251
|
+
LIBZSTD = dll/libzstd.dll
|
200
252
|
$(LIBZSTD): $(ZSTD_FILES)
|
201
253
|
@echo compiling dynamic library $(LIBVER)
|
202
|
-
$(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -Wl,--out-implib,dll
|
254
|
+
$(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -Wl,--out-implib,dll/libzstd.dll.a -shared $^ -o $@
|
203
255
|
|
204
|
-
else
|
256
|
+
else # not Windows
|
205
257
|
|
206
258
|
LIBZSTD = libzstd.$(SHARED_EXT_VER)
|
207
|
-
$(LIBZSTD)
|
208
|
-
$(LIBZSTD):
|
259
|
+
.PHONY: $(LIBZSTD) # must be run every time
|
260
|
+
$(LIBZSTD): CFLAGS += -fPIC -fvisibility=hidden
|
261
|
+
$(LIBZSTD): LDFLAGS += -shared
|
262
|
+
|
263
|
+
ifndef BUILD_DIR
|
264
|
+
# determine BUILD_DIR from compilation flags
|
265
|
+
|
266
|
+
$(LIBZSTD):
|
267
|
+
$(SET_CACHE_DIRECTORY)
|
268
|
+
|
269
|
+
else
|
270
|
+
# BUILD_DIR is defined
|
271
|
+
|
272
|
+
ZSTD_DYNLIB_DIR := $(BUILD_DIR)/dynamic
|
273
|
+
ZSTD_DYNLIB := $(ZSTD_DYNLIB_DIR)/$(LIBZSTD)
|
274
|
+
ZSTD_DYNLIB_OBJ := $(addprefix $(ZSTD_DYNLIB_DIR)/,$(ZSTD_LOCAL_OBJ))
|
275
|
+
|
276
|
+
$(ZSTD_DYNLIB): | $(ZSTD_DYNLIB_DIR)
|
277
|
+
$(ZSTD_DYNLIB): $(ZSTD_DYNLIB_OBJ)
|
209
278
|
@echo compiling dynamic library $(LIBVER)
|
210
|
-
$(
|
279
|
+
$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
|
211
280
|
@echo creating versioned links
|
212
|
-
|
213
|
-
|
281
|
+
ln -sf $@ libzstd.$(SHARED_EXT_MAJOR)
|
282
|
+
ln -sf $@ libzstd.$(SHARED_EXT)
|
214
283
|
|
215
|
-
|
284
|
+
$(LIBZSTD): $(ZSTD_DYNLIB)
|
285
|
+
cp -f $< $@
|
286
|
+
|
287
|
+
endif # ifndef BUILD_DIR
|
288
|
+
endif # if windows
|
216
289
|
|
217
290
|
.PHONY: libzstd
|
218
291
|
libzstd : $(LIBZSTD)
|
@@ -220,18 +293,42 @@ libzstd : $(LIBZSTD)
|
|
220
293
|
.PHONY: lib
|
221
294
|
lib : libzstd.a libzstd
|
222
295
|
|
223
|
-
|
296
|
+
|
297
|
+
# note : do not define lib-mt or lib-release as .PHONY
|
298
|
+
# make does not consider implicit pattern rule for .PHONY target
|
299
|
+
|
224
300
|
%-mt : CPPFLAGS += -DZSTD_MULTITHREAD
|
225
301
|
%-mt : LDFLAGS += -pthread
|
226
302
|
%-mt : %
|
227
303
|
@echo multi-threading build completed
|
228
304
|
|
229
|
-
.PHONY: lib-release
|
230
305
|
%-release : DEBUGFLAGS :=
|
231
306
|
%-release : %
|
232
307
|
@echo release build completed
|
233
308
|
|
234
309
|
|
310
|
+
# Generate .h dependencies automatically
|
311
|
+
|
312
|
+
DEPFLAGS = -MT $@ -MMD -MP -MF
|
313
|
+
|
314
|
+
$(ZSTD_DYNLIB_DIR)/%.o : %.c $(ZSTD_DYNLIB_DIR)/%.d | $(ZSTD_DYNLIB_DIR)
|
315
|
+
@echo CC $@
|
316
|
+
$(COMPILE.c) $(DEPFLAGS) $(ZSTD_DYNLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
|
317
|
+
|
318
|
+
$(ZSTD_STATLIB_DIR)/%.o : %.c $(ZSTD_STATLIB_DIR)/%.d | $(ZSTD_STATLIB_DIR)
|
319
|
+
@echo CC $@
|
320
|
+
$(COMPILE.c) $(DEPFLAGS) $(ZSTD_STATLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
|
321
|
+
|
322
|
+
MKDIR ?= mkdir
|
323
|
+
$(BUILD_DIR) $(ZSTD_DYNLIB_DIR) $(ZSTD_STATLIB_DIR):
|
324
|
+
$(MKDIR) -p $@
|
325
|
+
|
326
|
+
DEPFILES := $(ZSTD_DYNLIB_OBJ:.o=.d) $(ZSTD_STATLIB_OBJ:.o=.d)
|
327
|
+
$(DEPFILES):
|
328
|
+
|
329
|
+
include $(wildcard $(DEPFILES))
|
330
|
+
|
331
|
+
|
235
332
|
# Special case : building library in single-thread mode _and_ without zstdmt_compress.c
|
236
333
|
ZSTDMT_FILES = compress/zstdmt_compress.c
|
237
334
|
ZSTD_NOMT_FILES = $(filter-out $(ZSTDMT_FILES),$(ZSTD_FILES))
|
@@ -239,22 +336,25 @@ libzstd-nomt: LDFLAGS += -shared -fPIC -fvisibility=hidden
|
|
239
336
|
libzstd-nomt: $(ZSTD_NOMT_FILES)
|
240
337
|
@echo compiling single-thread dynamic library $(LIBVER)
|
241
338
|
@echo files : $(ZSTD_NOMT_FILES)
|
242
|
-
$(
|
339
|
+
$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
|
243
340
|
|
341
|
+
.PHONY: clean
|
244
342
|
clean:
|
245
|
-
$(
|
246
|
-
$(
|
247
|
-
$(
|
248
|
-
$(
|
343
|
+
$(RM) -r *.dSYM # macOS-specific
|
344
|
+
$(RM) core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
|
345
|
+
$(RM) dll/libzstd.dll dll/libzstd.lib libzstd-nomt*
|
346
|
+
$(RM) -r obj/*
|
249
347
|
@echo Cleaning library completed
|
250
348
|
|
251
349
|
#-----------------------------------------------------------------------------
|
252
350
|
# make install is validated only for below listed environments
|
253
351
|
#-----------------------------------------------------------------------------
|
254
|
-
ifneq (,$(filter $(
|
352
|
+
ifneq (,$(filter $(UNAME),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
|
255
353
|
|
256
354
|
all: libzstd.pc
|
257
355
|
|
356
|
+
HAS_EXPLICIT_EXEC_PREFIX := $(if $(or $(EXEC_PREFIX),$(exec_prefix)),1,)
|
357
|
+
|
258
358
|
DESTDIR ?=
|
259
359
|
# directory variables : GNU conventions prefer lowercase
|
260
360
|
# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
|
@@ -268,35 +368,28 @@ LIBDIR ?= $(libdir)
|
|
268
368
|
includedir ?= $(PREFIX)/include
|
269
369
|
INCLUDEDIR ?= $(includedir)
|
270
370
|
|
271
|
-
|
272
|
-
|
371
|
+
PCINCDIR := $(patsubst $(PREFIX)%,%,$(INCLUDEDIR))
|
372
|
+
PCLIBDIR := $(patsubst $(EXEC_PREFIX)%,%,$(LIBDIR))
|
273
373
|
|
274
|
-
|
275
|
-
#
|
276
|
-
|
277
|
-
|
278
|
-
$(error configured libdir ($(LIBDIR)) is outside of prefix ($(PREFIX)), can't generate pkg-config file)
|
279
|
-
endif
|
280
|
-
endif
|
374
|
+
# If we successfully stripped off a prefix, we'll add a reference to the
|
375
|
+
# relevant pc variable.
|
376
|
+
PCINCPREFIX := $(if $(findstring $(INCLUDEDIR),$(PCINCDIR)),,$${prefix})
|
377
|
+
PCLIBPREFIX := $(if $(findstring $(LIBDIR),$(PCLIBDIR)),,$${exec_prefix})
|
281
378
|
|
282
|
-
|
283
|
-
#
|
284
|
-
|
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
|
379
|
+
# If no explicit EXEC_PREFIX was set by the caller, write it out as a reference
|
380
|
+
# to PREFIX, rather than as a resolved value.
|
381
|
+
PCEXEC_PREFIX := $(if $(HAS_EXPLICIT_EXEC_PREFIX),$(EXEC_PREFIX),$${prefix})
|
289
382
|
|
290
|
-
ifneq (,$(filter $(
|
291
|
-
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
383
|
+
ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
|
384
|
+
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
292
385
|
else
|
293
|
-
PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
|
386
|
+
PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
|
294
387
|
endif
|
295
388
|
|
296
|
-
ifneq (,$(filter $(
|
297
|
-
INSTALL ?= ginstall
|
389
|
+
ifneq (,$(filter $(UNAME),SunOS))
|
390
|
+
INSTALL ?= ginstall
|
298
391
|
else
|
299
|
-
INSTALL ?= install
|
392
|
+
INSTALL ?= install
|
300
393
|
endif
|
301
394
|
|
302
395
|
INSTALL_PROGRAM ?= $(INSTALL)
|
@@ -306,49 +399,55 @@ INSTALL_DATA ?= $(INSTALL) -m 644
|
|
306
399
|
libzstd.pc:
|
307
400
|
libzstd.pc: libzstd.pc.in
|
308
401
|
@echo creating pkgconfig
|
309
|
-
|
310
|
-
|
311
|
-
|
402
|
+
@sed $(SED_ERE_OPT) \
|
403
|
+
-e 's|@PREFIX@|$(PREFIX)|' \
|
404
|
+
-e 's|@EXEC_PREFIX@|$(PCEXEC_PREFIX)|' \
|
405
|
+
-e 's|@INCLUDEDIR@|$(PCINCPREFIX)$(PCINCDIR)|' \
|
406
|
+
-e 's|@LIBDIR@|$(PCLIBPREFIX)$(PCLIBDIR)|' \
|
312
407
|
-e 's|@VERSION@|$(VERSION)|' \
|
313
408
|
$< >$@
|
314
409
|
|
410
|
+
.PHONY: install
|
315
411
|
install: install-pc install-static install-shared install-includes
|
316
412
|
@echo zstd static and shared library installed
|
317
413
|
|
318
414
|
install-pc: libzstd.pc
|
319
|
-
$(
|
320
|
-
$(
|
415
|
+
[ -e $(DESTDIR)$(PKGCONFIGDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
|
416
|
+
$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
|
321
417
|
|
322
|
-
install-static:
|
418
|
+
install-static:
|
419
|
+
# only generate libzstd.a if it's not already present
|
420
|
+
[ -e libzstd.a ] || $(MAKE) libzstd.a-release
|
421
|
+
[ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
|
323
422
|
@echo Installing static library
|
324
|
-
$(
|
325
|
-
$(Q)$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
|
423
|
+
$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
|
326
424
|
|
327
|
-
install-shared:
|
425
|
+
install-shared:
|
426
|
+
# only generate libzstd.so if it's not already present
|
427
|
+
[ -e $(LIBZSTD) ] || $(MAKE) libzstd-release
|
428
|
+
[ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
|
328
429
|
@echo Installing shared library
|
329
|
-
$(
|
330
|
-
|
331
|
-
|
332
|
-
$(Q)ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
|
430
|
+
$(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR)
|
431
|
+
ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
|
432
|
+
ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
|
333
433
|
|
334
434
|
install-includes:
|
435
|
+
[ -e $(DESTDIR)$(INCLUDEDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
|
335
436
|
@echo Installing includes
|
336
|
-
$(
|
337
|
-
$(
|
338
|
-
$(
|
339
|
-
$(Q)$(INSTALL_DATA) deprecated/zbuff.h $(DESTDIR)$(INCLUDEDIR) # prototypes generate deprecation warnings
|
340
|
-
$(Q)$(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR)
|
437
|
+
$(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR)
|
438
|
+
$(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR)
|
439
|
+
$(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR)
|
341
440
|
|
441
|
+
.PHONY: uninstall
|
342
442
|
uninstall:
|
343
|
-
$(
|
344
|
-
$(
|
345
|
-
$(
|
346
|
-
$(
|
347
|
-
$(
|
348
|
-
$(
|
349
|
-
$(
|
350
|
-
$(
|
351
|
-
$(Q)$(RM) $(DESTDIR)$(INCLUDEDIR)/zdict.h
|
443
|
+
$(RM) $(DESTDIR)$(LIBDIR)/libzstd.a
|
444
|
+
$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
|
445
|
+
$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
|
446
|
+
$(RM) $(DESTDIR)$(LIBDIR)/$(LIBZSTD)
|
447
|
+
$(RM) $(DESTDIR)$(PKGCONFIGDIR)/libzstd.pc
|
448
|
+
$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd.h
|
449
|
+
$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd_errors.h
|
450
|
+
$(RM) $(DESTDIR)$(INCLUDEDIR)/zdict.h
|
352
451
|
@echo zstd libraries successfully uninstalled
|
353
452
|
|
354
453
|
endif
|