zstd-ruby 1.4.4.0 → 1.5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +8 -0
  3. data/.github/workflows/ruby.yml +35 -0
  4. data/README.md +2 -2
  5. data/ext/zstdruby/extconf.rb +1 -0
  6. data/ext/zstdruby/libzstd/BUCK +5 -7
  7. data/ext/zstdruby/libzstd/Makefile +241 -173
  8. data/ext/zstdruby/libzstd/README.md +76 -18
  9. data/ext/zstdruby/libzstd/common/bitstream.h +75 -57
  10. data/ext/zstdruby/libzstd/common/compiler.h +196 -20
  11. data/ext/zstdruby/libzstd/common/cpu.h +1 -3
  12. data/ext/zstdruby/libzstd/common/debug.c +11 -31
  13. data/ext/zstdruby/libzstd/common/debug.h +22 -49
  14. data/ext/zstdruby/libzstd/common/entropy_common.c +208 -76
  15. data/ext/zstdruby/libzstd/common/error_private.c +3 -1
  16. data/ext/zstdruby/libzstd/common/error_private.h +87 -4
  17. data/ext/zstdruby/libzstd/common/fse.h +51 -42
  18. data/ext/zstdruby/libzstd/common/fse_decompress.c +149 -57
  19. data/ext/zstdruby/libzstd/common/huf.h +60 -54
  20. data/ext/zstdruby/libzstd/common/mem.h +87 -98
  21. data/ext/zstdruby/libzstd/common/pool.c +23 -17
  22. data/ext/zstdruby/libzstd/common/pool.h +3 -3
  23. data/ext/zstdruby/libzstd/common/portability_macros.h +131 -0
  24. data/ext/zstdruby/libzstd/common/threading.c +10 -8
  25. data/ext/zstdruby/libzstd/common/threading.h +4 -3
  26. data/ext/zstdruby/libzstd/common/xxhash.c +15 -873
  27. data/ext/zstdruby/libzstd/common/xxhash.h +5572 -191
  28. data/ext/zstdruby/libzstd/common/zstd_common.c +10 -10
  29. data/ext/zstdruby/libzstd/common/zstd_deps.h +111 -0
  30. data/ext/zstdruby/libzstd/common/zstd_internal.h +252 -108
  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 +105 -85
  34. data/ext/zstdruby/libzstd/compress/hist.c +41 -63
  35. data/ext/zstdruby/libzstd/compress/hist.h +13 -33
  36. data/ext/zstdruby/libzstd/compress/huf_compress.c +831 -259
  37. data/ext/zstdruby/libzstd/compress/zstd_compress.c +3213 -1007
  38. data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +493 -71
  39. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +21 -16
  40. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +4 -2
  41. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +51 -24
  42. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +10 -3
  43. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +573 -0
  44. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +32 -0
  45. data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +208 -81
  46. data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +315 -137
  47. data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +2 -2
  48. data/ext/zstdruby/libzstd/compress/zstd_fast.c +319 -128
  49. data/ext/zstdruby/libzstd/compress/zstd_fast.h +2 -2
  50. data/ext/zstdruby/libzstd/compress/zstd_lazy.c +1156 -171
  51. data/ext/zstdruby/libzstd/compress/zstd_lazy.h +59 -1
  52. data/ext/zstdruby/libzstd/compress/zstd_ldm.c +331 -206
  53. data/ext/zstdruby/libzstd/compress/zstd_ldm.h +15 -3
  54. data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +106 -0
  55. data/ext/zstdruby/libzstd/compress/zstd_opt.c +403 -226
  56. data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
  57. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +188 -453
  58. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +32 -114
  59. data/ext/zstdruby/libzstd/decompress/huf_decompress.c +1065 -410
  60. data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +571 -0
  61. data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +20 -16
  62. data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +3 -3
  63. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +691 -230
  64. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +1072 -323
  65. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +16 -7
  66. data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +71 -10
  67. data/ext/zstdruby/libzstd/deprecated/zbuff.h +3 -3
  68. data/ext/zstdruby/libzstd/deprecated/zbuff_common.c +2 -2
  69. data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +24 -4
  70. data/ext/zstdruby/libzstd/deprecated/zbuff_decompress.c +1 -1
  71. data/ext/zstdruby/libzstd/dictBuilder/cover.c +57 -40
  72. data/ext/zstdruby/libzstd/dictBuilder/cover.h +20 -9
  73. data/ext/zstdruby/libzstd/dictBuilder/divsufsort.c +1 -1
  74. data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +54 -35
  75. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +151 -57
  76. data/ext/zstdruby/libzstd/dll/example/Makefile +2 -1
  77. data/ext/zstdruby/libzstd/dll/example/README.md +16 -22
  78. data/ext/zstdruby/libzstd/legacy/zstd_legacy.h +4 -4
  79. data/ext/zstdruby/libzstd/legacy/zstd_v01.c +25 -19
  80. data/ext/zstdruby/libzstd/legacy/zstd_v01.h +1 -1
  81. data/ext/zstdruby/libzstd/legacy/zstd_v02.c +18 -14
  82. data/ext/zstdruby/libzstd/legacy/zstd_v02.h +1 -1
  83. data/ext/zstdruby/libzstd/legacy/zstd_v03.c +18 -14
  84. data/ext/zstdruby/libzstd/legacy/zstd_v03.h +1 -1
  85. data/ext/zstdruby/libzstd/legacy/zstd_v04.c +22 -16
  86. data/ext/zstdruby/libzstd/legacy/zstd_v04.h +1 -1
  87. data/ext/zstdruby/libzstd/legacy/zstd_v05.c +29 -25
  88. data/ext/zstdruby/libzstd/legacy/zstd_v05.h +2 -2
  89. data/ext/zstdruby/libzstd/legacy/zstd_v06.c +29 -25
  90. data/ext/zstdruby/libzstd/legacy/zstd_v06.h +1 -1
  91. data/ext/zstdruby/libzstd/legacy/zstd_v07.c +34 -26
  92. data/ext/zstdruby/libzstd/legacy/zstd_v07.h +1 -1
  93. data/ext/zstdruby/libzstd/libzstd.mk +185 -0
  94. data/ext/zstdruby/libzstd/libzstd.pc.in +4 -3
  95. data/ext/zstdruby/libzstd/modulemap/module.modulemap +4 -0
  96. data/ext/zstdruby/libzstd/{dictBuilder/zdict.h → zdict.h} +201 -31
  97. data/ext/zstdruby/libzstd/zstd.h +760 -234
  98. data/ext/zstdruby/libzstd/{common/zstd_errors.h → zstd_errors.h} +3 -1
  99. data/ext/zstdruby/zstdruby.c +2 -2
  100. data/lib/zstd-ruby/version.rb +1 -1
  101. metadata +20 -9
  102. data/.travis.yml +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53be8076094a9ed214cbc86a174eeb3b587dc3d4781f7fbcf8ee280ffd0ca169
4
- data.tar.gz: ebf9bcf8d062447dab0589c1acfe63f2481f9445c78f51653daf1f60750dfdd5
3
+ metadata.gz: 9c5390f204466dadf3276d3d7841d5dcc0c2be4f9cdafd11be705b6304b8cb27
4
+ data.tar.gz: 3538385c093224f15c6199ae51cdedb944a1b6e0ff4e9c3287ea907911fb07b9
5
5
  SHA512:
6
- metadata.gz: 7f3ac7650f5ec553aea615d60737bc092bca9d06c998eecc0570b5d542344f4cfc703335154e845c53927878d424ca244fa494f4bddb3e59f01bbd6111de5172
7
- data.tar.gz: b96f8df37df844f461fab2cd1b60fe9b6a729a1a411f62f1dcef34c9684672ebd7c42963d79abdf5fe1e8d5d443104509492fe9128a7dbf3773e9db180592cbd
6
+ metadata.gz: 8fc0f3ca375ee6b9fd6564eb0807c8d9e5c0f39e19ba9a9692d07c28e55e2fc70a625d3dc682ae402eb7bce76caf114f0c5b103a047f46c88b033bc2bdccc52f
7
+ data.tar.gz: 2bdb03fade1bca81eedcac96a63b5cbaea4774373f06f483ce77978a3795241e523905b6845c5fac0c70465df3575691e70441cca7a68b7f32b81202c82e69c0
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ time: "20:00"
8
+ open-pull-requests-limit: 10
@@ -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.6', '2.7', '3.0', '3.1']
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@168d6a54b412713c0ed60998a78093a270ca8d84
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
  [![Gem Version](https://badge.fury.io/rb/zstd-ruby.svg)](https://badge.fury.io/rb/zstd-ruby)
2
- [![Build Status](https://travis-ci.org/SpringMT/zstd-ruby.svg?branch=master)](https://travis-ci.org/SpringMT/zstd-ruby)
2
+ ![Build Status](https://github.com/SpringMT/zstd-ruby/actions/workflows/ruby.yml/badge.svg?branch=master)
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.4 (https://github.com/facebook/zstd/tree/v1.4.4)
13
+ v1.5.1 (https://github.com/facebook/zstd/tree/v1.5.1)
14
14
 
15
15
  ## Installation
16
16
 
@@ -1,6 +1,7 @@
1
1
  require "mkmf"
2
2
 
3
3
  $CFLAGS = '-I. -O3 -std=c99'
4
+ $CPPFLAGS += " -fdeclspec" if CONFIG['CXX'] =~ /clang/
4
5
 
5
6
  Dir.chdir File.expand_path('..', __FILE__) do
6
7
  $srcs = Dir['**/*.c']
@@ -65,9 +65,7 @@ cxx_library(
65
65
  name='zdict',
66
66
  header_namespace='',
67
67
  visibility=['PUBLIC'],
68
- exported_headers=subdir_glob([
69
- ('dictBuilder', 'zdict.h'),
70
- ]),
68
+ exported_headers=['zdict.h'],
71
69
  headers=subdir_glob([
72
70
  ('dictBuilder', 'divsufsort.h'),
73
71
  ('dictBuilder', 'cover.h'),
@@ -131,10 +129,10 @@ cxx_library(
131
129
  name='errors',
132
130
  header_namespace='',
133
131
  visibility=['PUBLIC'],
134
- exported_headers=subdir_glob([
135
- ('common', 'error_private.h'),
136
- ('common', 'zstd_errors.h'),
137
- ]),
132
+ exported_headers=[
133
+ 'zstd_errors.h',
134
+ 'common/error_private.h',
135
+ ]
138
136
  srcs=['common/error_private.c'],
139
137
  )
140
138
 
@@ -1,216 +1,259 @@
1
1
  # ################################################################
2
- # Copyright (c) 2015-present, Yann Collet, Facebook, Inc.
2
+ # Copyright (c) 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
6
6
  # LICENSE file in the root directory of this source tree) and the GPLv2 (found
7
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.
8
9
  # ################################################################
9
10
 
10
- # Version numbers
11
- LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
12
- LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
13
- LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
14
- LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
15
- LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
16
- LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
17
- LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
18
- LIBVER := $(shell echo $(LIBVER_SCRIPT))
19
- VERSION?= $(LIBVER)
20
- CCVER := $(shell $(CC) --version)
21
-
22
- CPPFLAGS+= -I. -I./common -DXXH_NAMESPACE=ZSTD_
23
- ifeq ($(OS),Windows_NT) # MinGW assumed
24
- CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
25
- endif
26
- CFLAGS ?= -O3
27
- DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
28
- -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
29
- -Wstrict-prototypes -Wundef -Wpointer-arith \
30
- -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
31
- -Wredundant-decls -Wmissing-prototypes -Wc++-compat
32
- CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
33
- FLAGS = $(CPPFLAGS) $(CFLAGS)
34
-
35
- HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
36
- GREP_OPTIONS ?=
37
- ifeq ($HAVE_COLORNEVER, 1)
38
- GREP_OPTIONS += --color=never
39
- endif
40
- GREP = grep $(GREP_OPTIONS)
41
-
42
- ZSTDCOMMON_FILES := $(sort $(wildcard common/*.c))
43
- ZSTDCOMP_FILES := $(sort $(wildcard compress/*.c))
44
- ZSTDDECOMP_FILES := $(sort $(wildcard decompress/*.c))
45
- ZDICT_FILES := $(sort $(wildcard dictBuilder/*.c))
46
- ZDEPR_FILES := $(sort $(wildcard deprecated/*.c))
47
- ZSTD_FILES := $(ZSTDCOMMON_FILES)
48
-
49
- ifeq ($(findstring GCC,$(CCVER)),GCC)
50
- decompress/zstd_decompress_block.o : CFLAGS+=-fno-tree-vectorize
51
- endif
52
-
53
- ZSTD_LEGACY_SUPPORT ?= 5
11
+ # Modules
54
12
  ZSTD_LIB_COMPRESSION ?= 1
55
13
  ZSTD_LIB_DECOMPRESSION ?= 1
56
14
  ZSTD_LIB_DICTBUILDER ?= 1
57
- ZSTD_LIB_DEPRECATED ?= 1
58
- HUF_FORCE_DECOMPRESS_X1 ?= 0
59
- HUF_FORCE_DECOMPRESS_X2 ?= 0
60
- ZSTD_FORCE_DECOMPRESS_SHORT ?= 0
61
- ZSTD_FORCE_DECOMPRESS_LONG ?= 0
62
- ZSTD_NO_INLINE ?= 0
63
- ZSTD_STRIP_ERROR_STRINGS ?= 0
64
- ZSTD_LEGACY_MULTITHREADED_API ?= 0
15
+ ZSTD_LIB_DEPRECATED ?= 0
65
16
 
17
+ # Input variables for libzstd.mk
66
18
  ifeq ($(ZSTD_LIB_COMPRESSION), 0)
67
- ZSTD_LIB_DICTBUILDER = 0
68
- ZSTD_LIB_DEPRECATED = 0
19
+ ZSTD_LIB_DICTBUILDER = 0
20
+ ZSTD_LIB_DEPRECATED = 0
69
21
  endif
70
22
 
71
23
  ifeq ($(ZSTD_LIB_DECOMPRESSION), 0)
72
- ZSTD_LEGACY_SUPPORT = 0
73
- ZSTD_LIB_DEPRECATED = 0
24
+ ZSTD_LEGACY_SUPPORT = 0
25
+ ZSTD_LIB_DEPRECATED = 0
74
26
  endif
75
27
 
28
+ include libzstd.mk
29
+
30
+ ZSTD_FILES := $(ZSTD_COMMON_FILES) $(ZSTD_LEGACY_FILES)
31
+
76
32
  ifneq ($(ZSTD_LIB_COMPRESSION), 0)
77
- ZSTD_FILES += $(ZSTDCOMP_FILES)
33
+ ZSTD_FILES += $(ZSTD_COMPRESS_FILES)
78
34
  endif
79
35
 
80
36
  ifneq ($(ZSTD_LIB_DECOMPRESSION), 0)
81
- ZSTD_FILES += $(ZSTDDECOMP_FILES)
37
+ ZSTD_FILES += $(ZSTD_DECOMPRESS_FILES)
82
38
  endif
83
39
 
84
40
  ifneq ($(ZSTD_LIB_DEPRECATED), 0)
85
- ZSTD_FILES += $(ZDEPR_FILES)
41
+ ZSTD_FILES += $(ZSTD_DEPRECATED_FILES)
86
42
  endif
87
43
 
88
44
  ifneq ($(ZSTD_LIB_DICTBUILDER), 0)
89
- ZSTD_FILES += $(ZDICT_FILES)
90
- endif
91
-
92
- ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
93
- CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
45
+ ZSTD_FILES += $(ZSTD_DICTBUILDER_FILES)
94
46
  endif
95
47
 
96
- ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
97
- CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
98
- endif
48
+ ZSTD_LOCAL_SRC := $(notdir $(ZSTD_FILES))
49
+ ZSTD_LOCAL_OBJ0 := $(ZSTD_LOCAL_SRC:.c=.o)
50
+ ZSTD_LOCAL_OBJ := $(ZSTD_LOCAL_OBJ0:.S=.o)
99
51
 
100
- ifneq ($(ZSTD_FORCE_DECOMPRESS_SHORT), 0)
101
- CFLAGS += -DZSTD_FORCE_DECOMPRESS_SHORT
102
- endif
103
-
104
- ifneq ($(ZSTD_FORCE_DECOMPRESS_LONG), 0)
105
- CFLAGS += -DZSTD_FORCE_DECOMPRESS_LONG
106
- endif
52
+ VERSION := $(ZSTD_VERSION)
107
53
 
108
- ifneq ($(ZSTD_NO_INLINE), 0)
109
- CFLAGS += -DZSTD_NO_INLINE
110
- endif
54
+ # Note: by default, the static library is built single-threaded and dynamic library is built
55
+ # multi-threaded. It is possible to force multi or single threaded builds by appending
56
+ # -mt or -nomt to the build target (like lib-mt for multi-threaded, lib-nomt for single-threaded).
57
+ .PHONY: default
58
+ default: lib-release
111
59
 
112
- ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
113
- CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
114
- endif
60
+ CPPFLAGS_DYNLIB += -DZSTD_MULTITHREAD # dynamic library build defaults to multi-threaded
61
+ LDFLAGS_DYNLIB += -pthread
62
+ CPPFLAGS_STATLIB += # static library build defaults to single-threaded
115
63
 
116
- ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
117
- CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
118
- endif
119
64
 
120
- ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
121
- ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
122
- ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
123
- endif
124
- CPPFLAGS += -I./legacy
65
+ ifeq ($(findstring GCC,$(CCVER)),GCC)
66
+ decompress/zstd_decompress_block.o : CFLAGS+=-fno-tree-vectorize
125
67
  endif
126
- CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
127
68
 
128
- ZSTD_OBJ := $(patsubst %.c,%.o,$(ZSTD_FILES))
129
69
 
130
70
  # macOS linker doesn't support -soname, and use different extension
131
71
  # see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
132
- ifeq ($(shell uname), Darwin)
133
- SHARED_EXT = dylib
134
- SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
135
- SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
136
- SONAME_FLAGS = -install_name $(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
72
+ ifeq ($(UNAME), Darwin)
73
+ SHARED_EXT = dylib
74
+ SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
75
+ SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
76
+ SONAME_FLAGS = -install_name $(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
137
77
  else
138
- SONAME_FLAGS = -Wl,-soname=libzstd.$(SHARED_EXT).$(LIBVER_MAJOR)
139
- SHARED_EXT = so
140
- SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
141
- SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
78
+ ifeq ($(UNAME), AIX)
79
+ SONAME_FLAGS =
80
+ else
81
+ SONAME_FLAGS = -Wl,-soname=libzstd.$(SHARED_EXT).$(LIBVER_MAJOR)
82
+ endif
83
+ SHARED_EXT = so
84
+ SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
85
+ SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
142
86
  endif
143
87
 
144
88
 
145
- .PHONY: default all clean install uninstall
89
+ .PHONY: all
90
+ all: lib
91
+
146
92
 
147
- default: lib-release
93
+ .PHONY: libzstd.a # must be run every time
94
+ libzstd.a: CPPFLAGS += $(CPPFLAGS_STATLIB)
148
95
 
149
- all: lib
96
+ SET_CACHE_DIRECTORY = \
97
+ +$(MAKE) --no-print-directory $@ \
98
+ BUILD_DIR=obj/$(HASH_DIR) \
99
+ CPPFLAGS="$(CPPFLAGS)" \
100
+ CFLAGS="$(CFLAGS)" \
101
+ LDFLAGS="$(LDFLAGS)"
102
+
103
+ ifndef BUILD_DIR
104
+ # determine BUILD_DIR from compilation flags
150
105
 
151
- libzstd.a: ARFLAGS = rcs
152
- libzstd.a: $(ZSTD_OBJ)
153
- @echo compiling static library
154
- @$(AR) $(ARFLAGS) $@ $^
106
+ libzstd.a:
107
+ $(SET_CACHE_DIRECTORY)
155
108
 
156
- libzstd.a-mt: CPPFLAGS += -DZSTD_MULTITHREAD
157
- libzstd.a-mt: libzstd.a
109
+ else
110
+ # BUILD_DIR is defined
111
+
112
+ ZSTD_STATLIB_DIR := $(BUILD_DIR)/static
113
+ ZSTD_STATLIB := $(ZSTD_STATLIB_DIR)/libzstd.a
114
+ ZSTD_STATLIB_OBJ := $(addprefix $(ZSTD_STATLIB_DIR)/,$(ZSTD_LOCAL_OBJ))
115
+ $(ZSTD_STATLIB): ARFLAGS = rcs
116
+ $(ZSTD_STATLIB): | $(ZSTD_STATLIB_DIR)
117
+ $(ZSTD_STATLIB): $(ZSTD_STATLIB_OBJ)
118
+ # Check for multithread flag at target execution time
119
+ $(if $(filter -DZSTD_MULTITHREAD,$(CPPFLAGS)),\
120
+ @echo compiling multi-threaded static library $(LIBVER),\
121
+ @echo compiling single-threaded static library $(LIBVER))
122
+ $(AR) $(ARFLAGS) $@ $^
123
+
124
+ libzstd.a: $(ZSTD_STATLIB)
125
+ cp -f $< $@
126
+
127
+ endif
158
128
 
159
- ifneq (,$(filter Windows%,$(OS)))
129
+ ifneq (,$(filter Windows%,$(TARGET_SYSTEM)))
160
130
 
161
- LIBZSTD = dll\libzstd.dll
131
+ LIBZSTD = dll/libzstd.dll
162
132
  $(LIBZSTD): $(ZSTD_FILES)
163
133
  @echo compiling dynamic library $(LIBVER)
164
- $(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -Wl,--out-implib,dll\libzstd.lib -shared $^ -o $@
134
+ $(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -Wl,--out-implib,dll/libzstd.dll.a -shared $^ -o $@
165
135
 
166
- else
136
+ else # not Windows
167
137
 
168
138
  LIBZSTD = libzstd.$(SHARED_EXT_VER)
169
- $(LIBZSTD): LDFLAGS += -shared -fPIC -fvisibility=hidden
170
- $(LIBZSTD): $(ZSTD_FILES)
171
- @echo compiling dynamic library $(LIBVER)
172
- @$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
139
+ .PHONY: $(LIBZSTD) # must be run every time
140
+ $(LIBZSTD): CPPFLAGS += $(CPPFLAGS_DYNLIB)
141
+ $(LIBZSTD): CFLAGS += -fPIC -fvisibility=hidden
142
+ $(LIBZSTD): LDFLAGS += -shared $(LDFLAGS_DYNLIB)
143
+
144
+ ifndef BUILD_DIR
145
+ # determine BUILD_DIR from compilation flags
146
+
147
+ $(LIBZSTD):
148
+ $(SET_CACHE_DIRECTORY)
149
+
150
+ else
151
+ # BUILD_DIR is defined
152
+
153
+ ZSTD_DYNLIB_DIR := $(BUILD_DIR)/dynamic
154
+ ZSTD_DYNLIB := $(ZSTD_DYNLIB_DIR)/$(LIBZSTD)
155
+ ZSTD_DYNLIB_OBJ := $(addprefix $(ZSTD_DYNLIB_DIR)/,$(ZSTD_LOCAL_OBJ))
156
+
157
+ $(ZSTD_DYNLIB): | $(ZSTD_DYNLIB_DIR)
158
+ $(ZSTD_DYNLIB): $(ZSTD_DYNLIB_OBJ)
159
+ # Check for multithread flag at target execution time
160
+ $(if $(filter -DZSTD_MULTITHREAD,$(CPPFLAGS)),\
161
+ @echo compiling multi-threaded dynamic library $(LIBVER),\
162
+ @echo compiling single-threaded dynamic library $(LIBVER))
163
+ $(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
173
164
  @echo creating versioned links
174
- @ln -sf $@ libzstd.$(SHARED_EXT_MAJOR)
175
- @ln -sf $@ libzstd.$(SHARED_EXT)
165
+ ln -sf $@ libzstd.$(SHARED_EXT_MAJOR)
166
+ ln -sf $@ libzstd.$(SHARED_EXT)
176
167
 
177
- endif
168
+ $(LIBZSTD): $(ZSTD_DYNLIB)
169
+ cp -f $< $@
178
170
 
171
+ endif # ifndef BUILD_DIR
172
+ endif # if windows
179
173
 
174
+ .PHONY: libzstd
180
175
  libzstd : $(LIBZSTD)
181
176
 
182
- libzstd-mt : CPPFLAGS += -DZSTD_MULTITHREAD
183
- libzstd-mt : libzstd
177
+ .PHONY: lib
178
+ lib : libzstd.a libzstd
179
+
180
+
181
+ # note : do not define lib-mt or lib-release as .PHONY
182
+ # make does not consider implicit pattern rule for .PHONY target
183
+
184
+ %-mt : CPPFLAGS_DYNLIB := -DZSTD_MULTITHREAD
185
+ %-mt : CPPFLAGS_STATLIB := -DZSTD_MULTITHREAD
186
+ %-mt : LDFLAGS_DYNLIB := -pthread
187
+ %-mt : %
188
+ @echo multi-threaded build completed
189
+
190
+ %-nomt : CPPFLAGS_DYNLIB :=
191
+ %-nomt : LDFLAGS_DYNLIB :=
192
+ %-nomt : CPPFLAGS_STATLIB :=
193
+ %-nomt : %
194
+ @echo single-threaded build completed
195
+
196
+ %-release : DEBUGFLAGS :=
197
+ %-release : %
198
+ @echo release build completed
199
+
184
200
 
185
- lib: libzstd.a libzstd
201
+ # Generate .h dependencies automatically
186
202
 
187
- lib-mt: CPPFLAGS += -DZSTD_MULTITHREAD
188
- lib-mt: lib
203
+ DEPFLAGS = -MT $@ -MMD -MP -MF
204
+
205
+ $(ZSTD_DYNLIB_DIR)/%.o : %.c $(ZSTD_DYNLIB_DIR)/%.d | $(ZSTD_DYNLIB_DIR)
206
+ @echo CC $@
207
+ $(COMPILE.c) $(DEPFLAGS) $(ZSTD_DYNLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
208
+
209
+ $(ZSTD_STATLIB_DIR)/%.o : %.c $(ZSTD_STATLIB_DIR)/%.d | $(ZSTD_STATLIB_DIR)
210
+ @echo CC $@
211
+ $(COMPILE.c) $(DEPFLAGS) $(ZSTD_STATLIB_DIR)/$*.d $(OUTPUT_OPTION) $<
212
+
213
+ $(ZSTD_DYNLIB_DIR)/%.o : %.S | $(ZSTD_DYNLIB_DIR)
214
+ @echo AS $@
215
+ $(COMPILE.c) $(OUTPUT_OPTION) $<
216
+
217
+ $(ZSTD_STATLIB_DIR)/%.o : %.S | $(ZSTD_STATLIB_DIR)
218
+ @echo AS $@
219
+ $(COMPILE.c) $(OUTPUT_OPTION) $<
220
+
221
+ MKDIR ?= mkdir
222
+ $(BUILD_DIR) $(ZSTD_DYNLIB_DIR) $(ZSTD_STATLIB_DIR):
223
+ $(MKDIR) -p $@
224
+
225
+ DEPFILES := $(ZSTD_DYNLIB_OBJ:.o=.d) $(ZSTD_STATLIB_OBJ:.o=.d)
226
+ $(DEPFILES):
227
+
228
+ include $(wildcard $(DEPFILES))
189
229
 
190
- lib-release lib-release-mt: DEBUGFLAGS :=
191
- lib-release: lib
192
- lib-release-mt: lib-mt
193
230
 
194
231
  # Special case : building library in single-thread mode _and_ without zstdmt_compress.c
195
232
  ZSTDMT_FILES = compress/zstdmt_compress.c
196
233
  ZSTD_NOMT_FILES = $(filter-out $(ZSTDMT_FILES),$(ZSTD_FILES))
197
- libzstd-nomt: LDFLAGS += -shared -fPIC -fvisibility=hidden
234
+ libzstd-nomt: CFLAGS += -fPIC -fvisibility=hidden
235
+ libzstd-nomt: LDFLAGS += -shared
198
236
  libzstd-nomt: $(ZSTD_NOMT_FILES)
199
237
  @echo compiling single-thread dynamic library $(LIBVER)
200
238
  @echo files : $(ZSTD_NOMT_FILES)
201
- @$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
239
+ $(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
202
240
 
241
+ .PHONY: clean
203
242
  clean:
204
- @$(RM) -r *.dSYM # macOS-specific
205
- @$(RM) core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
206
- @$(RM) dll/libzstd.dll dll/libzstd.lib libzstd-nomt*
207
- @$(RM) common/*.o compress/*.o decompress/*.o dictBuilder/*.o legacy/*.o deprecated/*.o
243
+ $(RM) -r *.dSYM # macOS-specific
244
+ $(RM) core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
245
+ $(RM) dll/libzstd.dll dll/libzstd.lib libzstd-nomt*
246
+ $(RM) -r obj/*
208
247
  @echo Cleaning library completed
209
248
 
210
249
  #-----------------------------------------------------------------------------
211
- # make install is validated only for Linux, macOS, BSD, Hurd and Solaris targets
250
+ # make install is validated only for below listed environments
212
251
  #-----------------------------------------------------------------------------
213
- ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
252
+ ifneq (,$(filter $(UNAME),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku AIX))
253
+
254
+ lib: libzstd.pc
255
+
256
+ HAS_EXPLICIT_EXEC_PREFIX := $(if $(or $(EXEC_PREFIX),$(exec_prefix)),1,)
214
257
 
215
258
  DESTDIR ?=
216
259
  # directory variables : GNU conventions prefer lowercase
@@ -219,71 +262,96 @@ DESTDIR ?=
219
262
  prefix ?= /usr/local
220
263
  PREFIX ?= $(prefix)
221
264
  exec_prefix ?= $(PREFIX)
222
- libdir ?= $(exec_prefix)/lib
265
+ EXEC_PREFIX ?= $(exec_prefix)
266
+ libdir ?= $(EXEC_PREFIX)/lib
223
267
  LIBDIR ?= $(libdir)
224
268
  includedir ?= $(PREFIX)/include
225
269
  INCLUDEDIR ?= $(includedir)
226
270
 
227
- ifneq (,$(filter $(shell uname),FreeBSD NetBSD DragonFly))
228
- PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
271
+ PCINCDIR := $(patsubst $(PREFIX)%,%,$(INCLUDEDIR))
272
+ PCLIBDIR := $(patsubst $(EXEC_PREFIX)%,%,$(LIBDIR))
273
+
274
+ # If we successfully stripped off a prefix, we'll add a reference to the
275
+ # relevant pc variable.
276
+ PCINCPREFIX := $(if $(findstring $(INCLUDEDIR),$(PCINCDIR)),,$${prefix})
277
+ PCLIBPREFIX := $(if $(findstring $(LIBDIR),$(PCLIBDIR)),,$${exec_prefix})
278
+
279
+ # If no explicit EXEC_PREFIX was set by the caller, write it out as a reference
280
+ # to PREFIX, rather than as a resolved value.
281
+ PCEXEC_PREFIX := $(if $(HAS_EXPLICIT_EXEC_PREFIX),$(EXEC_PREFIX),$${prefix})
282
+
283
+ ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
284
+ PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
229
285
  else
230
- PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
286
+ PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
231
287
  endif
232
288
 
233
- ifneq (,$(filter $(shell uname),SunOS))
234
- INSTALL ?= ginstall
289
+ ifneq (,$(filter $(UNAME),SunOS))
290
+ INSTALL ?= ginstall
235
291
  else
236
- INSTALL ?= install
292
+ INSTALL ?= install
237
293
  endif
238
294
 
239
295
  INSTALL_PROGRAM ?= $(INSTALL)
240
296
  INSTALL_DATA ?= $(INSTALL) -m 644
241
297
 
242
298
 
243
- libzstd.pc:
244
299
  libzstd.pc: libzstd.pc.in
245
300
  @echo creating pkgconfig
246
- @sed -e 's|@PREFIX@|$(PREFIX)|' \
247
- -e 's|@VERSION@|$(VERSION)|' \
248
- $< >$@
249
-
301
+ @sed $(SED_ERE_OPT) \
302
+ -e 's|@PREFIX@|$(PREFIX)|' \
303
+ -e 's|@EXEC_PREFIX@|$(PCEXEC_PREFIX)|' \
304
+ -e 's|@INCLUDEDIR@|$(PCINCPREFIX)$(PCINCDIR)|' \
305
+ -e 's|@LIBDIR@|$(PCLIBPREFIX)$(PCLIBDIR)|' \
306
+ -e 's|@VERSION@|$(VERSION)|' \
307
+ -e 's|@LIBS_PRIVATE@|$(LDFLAGS_DYNLIB)|' \
308
+ $< >$@
309
+
310
+ .PHONY: install
250
311
  install: install-pc install-static install-shared install-includes
251
312
  @echo zstd static and shared library installed
252
313
 
314
+ .PHONY: install-pc
253
315
  install-pc: libzstd.pc
254
- @$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
255
- @$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
256
-
257
- install-static: libzstd.a
316
+ [ -e $(DESTDIR)$(PKGCONFIGDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
317
+ $(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
318
+
319
+ .PHONY: install-static
320
+ install-static:
321
+ # only generate libzstd.a if it's not already present
322
+ [ -e libzstd.a ] || $(MAKE) libzstd.a-release
323
+ [ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
258
324
  @echo Installing static library
259
- @$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
260
- @$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
325
+ $(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
261
326
 
262
- install-shared: libzstd
327
+ .PHONY: install-shared
328
+ install-shared:
329
+ # only generate libzstd.so if it's not already present
330
+ [ -e $(LIBZSTD) ] || $(MAKE) libzstd-release
331
+ [ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
263
332
  @echo Installing shared library
264
- @$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/
265
- @$(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR)
266
- @ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
267
- @ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
333
+ $(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR)
334
+ ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
335
+ ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
268
336
 
337
+ .PHONY: install-includes
269
338
  install-includes:
339
+ [ -e $(DESTDIR)$(INCLUDEDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
270
340
  @echo Installing includes
271
- @$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/
272
- @$(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR)
273
- @$(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR)
274
- @$(INSTALL_DATA) deprecated/zbuff.h $(DESTDIR)$(INCLUDEDIR) # prototypes generate deprecation warnings
275
- @$(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR)
341
+ $(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR)
342
+ $(INSTALL_DATA) zstd_errors.h $(DESTDIR)$(INCLUDEDIR)
343
+ $(INSTALL_DATA) zdict.h $(DESTDIR)$(INCLUDEDIR)
276
344
 
345
+ .PHONY: uninstall
277
346
  uninstall:
278
- @$(RM) $(DESTDIR)$(LIBDIR)/libzstd.a
279
- @$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
280
- @$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
281
- @$(RM) $(DESTDIR)$(LIBDIR)/$(LIBZSTD)
282
- @$(RM) $(DESTDIR)$(PKGCONFIGDIR)/libzstd.pc
283
- @$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd.h
284
- @$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd_errors.h
285
- @$(RM) $(DESTDIR)$(INCLUDEDIR)/zbuff.h # Deprecated streaming functions
286
- @$(RM) $(DESTDIR)$(INCLUDEDIR)/zdict.h
347
+ $(RM) $(DESTDIR)$(LIBDIR)/libzstd.a
348
+ $(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
349
+ $(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
350
+ $(RM) $(DESTDIR)$(LIBDIR)/$(LIBZSTD)
351
+ $(RM) $(DESTDIR)$(PKGCONFIGDIR)/libzstd.pc
352
+ $(RM) $(DESTDIR)$(INCLUDEDIR)/zstd.h
353
+ $(RM) $(DESTDIR)$(INCLUDEDIR)/zstd_errors.h
354
+ $(RM) $(DESTDIR)$(INCLUDEDIR)/zdict.h
287
355
  @echo zstd libraries successfully uninstalled
288
356
 
289
357
  endif