zstdlib 0.13.0-x86-linux

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.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +6 -0
  3. data/CHANGES.md +107 -0
  4. data/Gemfile +3 -0
  5. data/README.md +107 -0
  6. data/Rakefile +59 -0
  7. data/ext/zstdlib_c/extconf.rb +59 -0
  8. data/ext/zstdlib_c/ruby/zlib-2.2/zstdlib.c +4675 -0
  9. data/ext/zstdlib_c/ruby/zlib-2.3/zstdlib.c +4702 -0
  10. data/ext/zstdlib_c/ruby/zlib-2.4/zstdlib.c +4859 -0
  11. data/ext/zstdlib_c/ruby/zlib-2.5/zstdlib.c +4864 -0
  12. data/ext/zstdlib_c/ruby/zlib-2.6/zstdlib.c +4906 -0
  13. data/ext/zstdlib_c/ruby/zlib-2.7/zstdlib.c +4895 -0
  14. data/ext/zstdlib_c/ruby/zlib-3.0/zstdlib.c +4994 -0
  15. data/ext/zstdlib_c/ruby/zlib-3.1/zstdlib.c +5076 -0
  16. data/ext/zstdlib_c/ruby/zlib-3.2/zstdlib.c +5090 -0
  17. data/ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c +5090 -0
  18. data/ext/zstdlib_c/zlib-1.3.1/adler32.c +164 -0
  19. data/ext/zstdlib_c/zlib-1.3.1/compress.c +75 -0
  20. data/ext/zstdlib_c/zlib-1.3.1/crc32.c +1049 -0
  21. data/ext/zstdlib_c/zlib-1.3.1/crc32.h +9446 -0
  22. data/ext/zstdlib_c/zlib-1.3.1/deflate.c +2139 -0
  23. data/ext/zstdlib_c/zlib-1.3.1/deflate.h +377 -0
  24. data/ext/zstdlib_c/zlib-1.3.1/gzclose.c +23 -0
  25. data/ext/zstdlib_c/zlib-1.3.1/gzguts.h +214 -0
  26. data/ext/zstdlib_c/zlib-1.3.1/gzlib.c +582 -0
  27. data/ext/zstdlib_c/zlib-1.3.1/gzread.c +602 -0
  28. data/ext/zstdlib_c/zlib-1.3.1/gzwrite.c +631 -0
  29. data/ext/zstdlib_c/zlib-1.3.1/infback.c +628 -0
  30. data/ext/zstdlib_c/zlib-1.3.1/inffast.c +320 -0
  31. data/ext/zstdlib_c/zlib-1.3.1/inffast.h +11 -0
  32. data/ext/zstdlib_c/zlib-1.3.1/inffixed.h +94 -0
  33. data/ext/zstdlib_c/zlib-1.3.1/inflate.c +1526 -0
  34. data/ext/zstdlib_c/zlib-1.3.1/inflate.h +126 -0
  35. data/ext/zstdlib_c/zlib-1.3.1/inftrees.c +299 -0
  36. data/ext/zstdlib_c/zlib-1.3.1/inftrees.h +62 -0
  37. data/ext/zstdlib_c/zlib-1.3.1/trees.c +1117 -0
  38. data/ext/zstdlib_c/zlib-1.3.1/trees.h +128 -0
  39. data/ext/zstdlib_c/zlib-1.3.1/uncompr.c +85 -0
  40. data/ext/zstdlib_c/zlib-1.3.1/zconf.h +543 -0
  41. data/ext/zstdlib_c/zlib-1.3.1/zlib.h +1938 -0
  42. data/ext/zstdlib_c/zlib-1.3.1/zutil.c +299 -0
  43. data/ext/zstdlib_c/zlib-1.3.1/zutil.h +254 -0
  44. data/ext/zstdlib_c/zlib.mk +14 -0
  45. data/ext/zstdlib_c/zlibwrapper/zlibwrapper.c +10 -0
  46. data/ext/zstdlib_c/zlibwrapper.mk +14 -0
  47. data/ext/zstdlib_c/zstd-1.5.6/lib/common/allocations.h +55 -0
  48. data/ext/zstdlib_c/zstd-1.5.6/lib/common/bits.h +200 -0
  49. data/ext/zstdlib_c/zstd-1.5.6/lib/common/bitstream.h +457 -0
  50. data/ext/zstdlib_c/zstd-1.5.6/lib/common/compiler.h +450 -0
  51. data/ext/zstdlib_c/zstd-1.5.6/lib/common/cpu.h +249 -0
  52. data/ext/zstdlib_c/zstd-1.5.6/lib/common/debug.c +30 -0
  53. data/ext/zstdlib_c/zstd-1.5.6/lib/common/debug.h +116 -0
  54. data/ext/zstdlib_c/zstd-1.5.6/lib/common/entropy_common.c +340 -0
  55. data/ext/zstdlib_c/zstd-1.5.6/lib/common/error_private.c +63 -0
  56. data/ext/zstdlib_c/zstd-1.5.6/lib/common/error_private.h +168 -0
  57. data/ext/zstdlib_c/zstd-1.5.6/lib/common/fse.h +640 -0
  58. data/ext/zstdlib_c/zstd-1.5.6/lib/common/fse_decompress.c +313 -0
  59. data/ext/zstdlib_c/zstd-1.5.6/lib/common/huf.h +286 -0
  60. data/ext/zstdlib_c/zstd-1.5.6/lib/common/mem.h +426 -0
  61. data/ext/zstdlib_c/zstd-1.5.6/lib/common/pool.c +371 -0
  62. data/ext/zstdlib_c/zstd-1.5.6/lib/common/pool.h +90 -0
  63. data/ext/zstdlib_c/zstd-1.5.6/lib/common/portability_macros.h +158 -0
  64. data/ext/zstdlib_c/zstd-1.5.6/lib/common/threading.c +182 -0
  65. data/ext/zstdlib_c/zstd-1.5.6/lib/common/threading.h +150 -0
  66. data/ext/zstdlib_c/zstd-1.5.6/lib/common/xxhash.c +18 -0
  67. data/ext/zstdlib_c/zstd-1.5.6/lib/common/xxhash.h +7020 -0
  68. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_common.c +48 -0
  69. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_deps.h +111 -0
  70. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_internal.h +392 -0
  71. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_trace.h +163 -0
  72. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/clevels.h +134 -0
  73. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/fse_compress.c +625 -0
  74. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/hist.c +181 -0
  75. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/hist.h +75 -0
  76. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/huf_compress.c +1464 -0
  77. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress.c +7153 -0
  78. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_internal.h +1534 -0
  79. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_literals.c +235 -0
  80. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_literals.h +39 -0
  81. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_sequences.c +442 -0
  82. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_sequences.h +54 -0
  83. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_superblock.c +688 -0
  84. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_superblock.h +32 -0
  85. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_cwksp.h +748 -0
  86. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_double_fast.c +770 -0
  87. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_double_fast.h +50 -0
  88. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_fast.c +968 -0
  89. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_fast.h +38 -0
  90. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_lazy.c +2199 -0
  91. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_lazy.h +202 -0
  92. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm.c +730 -0
  93. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm.h +117 -0
  94. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm_geartab.h +106 -0
  95. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_opt.c +1576 -0
  96. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_opt.h +80 -0
  97. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstdmt_compress.c +1882 -0
  98. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstdmt_compress.h +113 -0
  99. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/huf_decompress.c +1944 -0
  100. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/huf_decompress_amd64.S +595 -0
  101. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_ddict.c +244 -0
  102. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_ddict.h +44 -0
  103. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress.c +2407 -0
  104. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_block.c +2215 -0
  105. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_block.h +73 -0
  106. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_internal.h +240 -0
  107. data/ext/zstdlib_c/zstd-1.5.6/lib/zdict.h +474 -0
  108. data/ext/zstdlib_c/zstd-1.5.6/lib/zstd.h +3089 -0
  109. data/ext/zstdlib_c/zstd-1.5.6/lib/zstd_errors.h +114 -0
  110. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzclose.c +26 -0
  111. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzcompatibility.h +68 -0
  112. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzguts.h +229 -0
  113. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzlib.c +587 -0
  114. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzread.c +637 -0
  115. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzwrite.c +631 -0
  116. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/zstd_zlibwrapper.c +1200 -0
  117. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/zstd_zlibwrapper.h +91 -0
  118. data/ext/zstdlib_c/zstd.mk +15 -0
  119. data/lib/2.4/zstdlib_c.so +0 -0
  120. data/lib/2.5/zstdlib_c.so +0 -0
  121. data/lib/2.6/zstdlib_c.so +0 -0
  122. data/lib/2.7/zstdlib_c.so +0 -0
  123. data/lib/3.0/zstdlib_c.so +0 -0
  124. data/lib/3.1/zstdlib_c.so +0 -0
  125. data/lib/3.2/zstdlib_c.so +0 -0
  126. data/lib/3.3/zstdlib_c.so +0 -0
  127. data/lib/zstdlib.rb +6 -0
  128. data/test/zstdlib_test.rb +21 -0
  129. metadata +243 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2fb52ee73594a2ce8766f1974754e68454c30c07684cc7f4272350add6b90427
4
+ data.tar.gz: 90b580f359534445b8cfcdabfc63c38e1795b1f8b551514a6ced1fe6b8d950cf
5
+ SHA512:
6
+ metadata.gz: 02d9a4103d519b739781d9148fdc5face963753c02ea4d1411ae1695a6f00420a9796192fca01934e47f1f133bbee98f1aa5b4798dade17953ddc99866a211d4
7
+ data.tar.gz: cb6e4d70dc53e94111e416d6043c1df8a0204176b1e42873ebc754222ffc15705dbff59302df4776a0ba5f8061ab230db4bfe551f3408df6ec74191ed54efdd4
data/.yardopts ADDED
@@ -0,0 +1,6 @@
1
+ --no-private
2
+ --protected
3
+ --readme README.md
4
+ -m markdown
5
+ -
6
+ *.md
data/CHANGES.md ADDED
@@ -0,0 +1,107 @@
1
+ # 0.13.0
2
+
3
+ Updated Zstd to `1.5.6`
4
+
5
+ Upgraded rake-compiler-dock to `1.5.0`
6
+
7
+
8
+ # 0.12.0
9
+
10
+ Updated Zlib to `1.3.1`
11
+
12
+ Added support for MRI Ruby version `3.3`
13
+
14
+ Upgraded rake-compiler-dock to `1.4.0`
15
+
16
+
17
+ # 0.11.0
18
+
19
+ Updated Zstd to `1.5.5`
20
+
21
+ Added support for MRI Ruby version `3.2`
22
+
23
+
24
+ # 0.10.0
25
+
26
+ Updated Zlib to `1.2.12`
27
+
28
+
29
+ # 0.9.0
30
+
31
+ Updated Zstd to `1.5.2`
32
+
33
+ Added support for MRI Ruby versions `3.0-3.1`
34
+
35
+ Upgraded rake-compiler-dock to `1.2.0`
36
+
37
+ Implemented deployment of system-specific compiled gems for for x32/x64 Windows and x64/ARM64 MacOS platforms
38
+
39
+
40
+ # 0.8.0
41
+
42
+ Zstd version update to `1.5.0`
43
+
44
+
45
+ # 0.7.0
46
+
47
+ Zstd version update to `1.4.5`
48
+
49
+
50
+ # 0.6.0
51
+
52
+ Added support for MRI Ruby version `2.7`
53
+
54
+ Upgraded rake-compiler-dock to `1.0.0`
55
+
56
+
57
+ # 0.5.0
58
+
59
+ Zstd version update to `1.4.4`
60
+
61
+
62
+ # 0.4.0
63
+
64
+ Zstd version update to `1.4.3`
65
+
66
+ Relocated to GitHub.
67
+
68
+
69
+ # 0.3.0
70
+
71
+ Zstd version update to `1.4.2`
72
+
73
+
74
+ # 0.2.0
75
+
76
+ Zstd version update to `1.4.0`
77
+
78
+ Documentation updates.
79
+
80
+
81
+ # 0.1.2
82
+
83
+ Implemented `Zstdlib::ZSTD_VERSION` constant and `Zstdlib.zstd_version` module method for Zstd version retrieval.
84
+
85
+ Documentation updates.
86
+
87
+
88
+ # 0.1.1
89
+
90
+ Pick up the most recent compatible source for _zstdlib_ Ruby extension module instead of target Ruby version.
91
+
92
+ Replaced (most) references to `Zlib` with `Zstdlib` within extractable documentation.
93
+
94
+ Fixed a few missing methods on Ruby side.
95
+
96
+ Documentation updates.
97
+
98
+
99
+ # 0.1.0
100
+
101
+ Initial release.
102
+
103
+ Zstd version: `1.3.8`
104
+
105
+ Zlib version: `1.2.11`
106
+
107
+ Supported MRI Ruby versions: `2.2-2.6`
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # [Zstdlib](https://github.com/okhlybov/zstdlib) - a Zstandard data compression library binding for Ruby
2
+
3
+ _zstdlib_ is native Ruby extension for [Zstandard](https://facebook.github.io/zstd/) data compression library.
4
+
5
+ _zstdlib_ is currently available for the [MRI Ruby](https://www.ruby-lang.org/) platform.
6
+
7
+ ## Why bother?
8
+
9
+ Unlike the other Zstd bindings available for Ruby, *Zstdlib* utilizes Zstd's native *Zlib* compatibility layer.
10
+
11
+ This specifically means that `Zstdlib` module is and will be (mostly) API-compatible with standard Ruby `Zlib` module and thus _zstdlib_ can be used as a drop-in replacement for _zlib_: just replace `Zlib` with `Zstdlib` throughout the source code and you're in!
12
+
13
+ Streams produced by `Zstdlib::Deflate` class can be decompressed with standard _zstd_ utility and hence can be written to _.zst_ or _.zstd_ files.
14
+ Conversely, the `Zstdlib::Inflate` class can handle data from such files.
15
+
16
+ ## Use cases
17
+
18
+ ### Simple string compression
19
+ ````ruby
20
+ require 'zstdlib'
21
+ data = Zstdlib.deflate('Hello Zstd')
22
+ ````
23
+
24
+ ### Incremental data compression
25
+ ````ruby
26
+ require 'zstdlib'
27
+ zstd = Zstdlib::Deflate.new
28
+ data = String.new
29
+ data << zstd.deflate('Hello')
30
+ data << zstd.deflate('Zstd')
31
+ data << zstd.finish
32
+ ````
33
+
34
+ ### Simple string decompression
35
+ ````ruby
36
+ require 'zstdlib'
37
+ data = Zstdlib.inflate(compressed_data)
38
+ ````
39
+
40
+ ## Technical notes
41
+
42
+ _zstdlib_ covers the following parts of _zlib_:
43
+
44
+ - `ZStream`, `Inflate` and `Deflate` classes
45
+ - Various `Zlib::` constants (`DEFAULT_COMPRESSION` etc.)
46
+ - `Zlib::` exception classes (`Error` and its descendants)
47
+
48
+ Note that _zstdlib_ currently omits Gzip file support with its `GzipFile`, `GzipReader` and `GzipWriter` classes
49
+ and associated constants although this may be changed in future.
50
+
51
+ There exist `Zstdlib::ZSTD_VERSION` constant and `Zstdlib.zstd_version` module method which can be used to obtain shipped Zstd library version.
52
+
53
+
54
+ ### General guidelines
55
+
56
+ In order to enable Zstd (de)compression capability in existing code, simply replace _zlib_ with _zstdlib_ in require statements and
57
+ `Zlib` with `Zstdlib` module references throughout the code.
58
+
59
+ The rest of the _zlib_-aware code should work unchanged.
60
+
61
+ For further information refer to documentation on _zlib_ .
62
+
63
+
64
+ ### Notes on compression levels
65
+
66
+ If unsure do not pass anything to constructor in order to use `DEFAULT_COMPRESSION` level which works for both _zlib_ ans _zstdlib_.
67
+
68
+ Contrary to _zlib_ the `NO_COMPRESSION` constant in _zstdlib_ is an equivalent to `BEST_SPEED` as Zstd always compresses data.
69
+
70
+ The `BEST_COMPRESSION` constant is adjusted to reflect Zstd-specific compression level range.
71
+ Anyways this level is recommended against due to abysmal performance not to be expected from the *fast* state-of-the-art compression algorithm.
72
+ The Zstd documentation (currently) recommends using *19* as the level for optimal *best* compression.
73
+
74
+ The `BEST_SPEED` constant remains unchanged.
75
+
76
+ ## Availability
77
+
78
+ _zstdlib_ home page on [GitHub](https://github.com/okhlybov/zstdlib).
79
+
80
+ Source code and system-specific compiled gems can be obtained from [rubygems.org](https://rubygems.org/gems/zstdlib).
81
+
82
+ The system-specific gems are currently provided for x32/x64 Windows and x64/ARM64 MacOS platforms.
83
+
84
+ Note that these gems are built with the [rake-compiler-dock](https://github.com/rake-compiler/rake-compiler-dock)
85
+ infrastructure the minimum supported Ruby version is raised to 2.4.
86
+ All other installations including Linux will use the source gem and hence require the compilation step with locally installed development tools.
87
+
88
+ ## Release history
89
+
90
+ For user-visible changes refer to [change log](CHANGES.md).
91
+
92
+ ## Caveats
93
+
94
+ This module is in testing phase so things beyond basic interface might not work as expected.
95
+
96
+ Documentation extracted from _zstdlib_ still contains traces of old zlib-related pieces.
97
+ Just keep this in mind and substitute *zlib* with *zstdlib* upon browsing.
98
+
99
+ Gzip _.gz_ file support, although available in Zstd's Zlib compatibility layer, is currently disabled.
100
+
101
+ Zstd's external compression dictionaries capability is not (yet) implemented.
102
+
103
+ # The end
104
+
105
+ Cheers,
106
+
107
+ Oleg A. Khlybov <[fougas@mail.ru](mailto:fougas@mail.ru)>
data/Rakefile ADDED
@@ -0,0 +1,59 @@
1
+ require 'rake/testtask'
2
+ require 'bundler/gem_tasks'
3
+ require 'rake/extensiontask'
4
+ require 'rake_compiler_dock'
5
+
6
+
7
+ spec = Gem::Specification.load('zstdlib.gemspec')
8
+
9
+
10
+ platforms = %w[x86-mingw32 x64-mingw-ucrt x64-mingw32 x86-linux x86_64-linux x86_64-darwin arm64-darwin]
11
+
12
+
13
+ Rake::ExtensionTask.new('zstdlib_c', spec) do |t|
14
+ t.cross_compile = true
15
+ t.cross_platform = platforms
16
+ t.cross_config_options << '--enable-cross-build'
17
+ end
18
+
19
+
20
+ namespace "gem" do
21
+ platforms.each do |platform|
22
+ desc "build native gem for #{platform}"
23
+ # This runs on a host
24
+ task platform do
25
+ RakeCompilerDock.sh(<<~EOF, platform: platform)
26
+ gem install bundler --no-document &&
27
+ bundle &&
28
+ bundle exec rake gem:#{platform}:buildit
29
+ EOF
30
+ end
31
+
32
+ namespace platform do
33
+ # This runs in the rake-compiler-dock docker container
34
+ task "buildit" do
35
+ # Use Task#invoke because the pkg/*gem task is defined at runtime
36
+ Rake::Task["native:#{platform}"].invoke
37
+ Rake::Task["pkg/#{spec.full_name}-#{Gem::Platform.new(platform)}.gem"].invoke
38
+ end
39
+ end
40
+ end
41
+
42
+ #
43
+ desc "build native gem for all platforms"
44
+ multitask 'all' => platforms
45
+
46
+ end
47
+
48
+
49
+ Rake::TestTask.new(:test) do |t|
50
+ t.libs << 'test'
51
+ t.libs << 'lib'
52
+ t.test_files = FileList['test/*_test.rb']
53
+ end
54
+
55
+
56
+ Gem::PackageTask.new(spec)
57
+
58
+
59
+ # Build system explained: https://github.com/flavorjones/ruby-c-extensions-explained/tree/main/precompiled
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'mkmf'
4
+ require 'fileutils'
5
+
6
+ include RbConfig
7
+ include FileUtils
8
+
9
+ ZSTD_VERSION = '1.5.6'
10
+ ZLIB_VERSION = '1.3.1'
11
+
12
+ RB_VERSION = CONFIG['MAJOR']+'.'+CONFIG['MINOR']
13
+
14
+ # Review requirements with every new zlib module release!
15
+ ZMOD_VERSION = if RB_VERSION >= '2.5' then '3.3'
16
+ elsif RB_VERSION >= '2.3' then '3.2'
17
+ else RB_VERSION
18
+ end
19
+
20
+ # For cross compiling
21
+ ENV['CC'] = RbConfig::CONFIG['CC']
22
+ ENV['LD'] = RbConfig::CONFIG['LD']
23
+
24
+ root = File.dirname(__FILE__)
25
+
26
+ zmod = File.expand_path "ruby/zlib-#{ZMOD_VERSION}", root
27
+ zlib = File.expand_path "zlib-#{ZLIB_VERSION}", root
28
+ zstd = File.expand_path "zstd-#{ZSTD_VERSION}/lib", root
29
+ zlibwrapper = File.expand_path "zstd-#{ZSTD_VERSION}/zlibWrapper", root
30
+
31
+ cp "#{zmod}/zstdlib.c", 'zstdlib.c'
32
+
33
+ $srcs = ['zstdlib.c']
34
+
35
+ $CFLAGS += ' -fomit-frame-pointer -ffast-math -O3'
36
+ $CPPFLAGS += " -I#{zlib} -I#{zlibwrapper} -I#{zstd} -DZWRAP_USE_ZSTD=1 -DGZIP_SUPPORT=1"
37
+ $LDFLAGS += ' -s'
38
+ $LOCAL_LIBS += ' libzlibwrapper.a libz.a libzstd.a'
39
+
40
+ create_makefile('zstdlib_c')
41
+
42
+ File.open('Makefile', 'a') do |file|
43
+ file << %~
44
+
45
+ export CC LD AR CFLAGS CPPFLAGS
46
+
47
+ $(DLLIB) : libz.a libzstd.a libzlibwrapper.a
48
+
49
+ libzstd.a :
50
+ \texport SRCDIR=#{zstd} && mkdir -p zstd && $(MAKE) -C zstd -f #{File.expand_path root}/zstd.mk
51
+
52
+ libz.a :
53
+ \texport SRCDIR=#{zlib} && mkdir -p zlib && $(MAKE) -C zlib -f #{File.expand_path root}/zlib.mk
54
+
55
+ libzlibwrapper.a :
56
+ \texport SRCDIR=#{zlibwrapper} && mkdir -p zlibwrapper && $(MAKE) -C zlibwrapper -f #{File.expand_path root}/zlibwrapper.mk
57
+
58
+ ~
59
+ end