extzstd 0.3.1 → 0.3.3
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/README.md +28 -14
- data/contrib/zstd/CHANGELOG +301 -56
- data/contrib/zstd/CONTRIBUTING.md +169 -72
- data/contrib/zstd/LICENSE +4 -4
- data/contrib/zstd/Makefile +116 -87
- data/contrib/zstd/Package.swift +36 -0
- data/contrib/zstd/README.md +62 -32
- data/contrib/zstd/TESTING.md +2 -3
- data/contrib/zstd/appveyor.yml +52 -136
- data/contrib/zstd/lib/BUCK +5 -7
- data/contrib/zstd/lib/Makefile +225 -222
- data/contrib/zstd/lib/README.md +51 -6
- data/contrib/zstd/lib/common/allocations.h +55 -0
- data/contrib/zstd/lib/common/bits.h +200 -0
- data/contrib/zstd/lib/common/bitstream.h +45 -62
- data/contrib/zstd/lib/common/compiler.h +205 -22
- data/contrib/zstd/lib/common/cpu.h +1 -3
- data/contrib/zstd/lib/common/debug.c +1 -1
- data/contrib/zstd/lib/common/debug.h +12 -19
- data/contrib/zstd/lib/common/entropy_common.c +172 -48
- data/contrib/zstd/lib/common/error_private.c +10 -2
- data/contrib/zstd/lib/common/error_private.h +82 -3
- data/contrib/zstd/lib/common/fse.h +37 -86
- data/contrib/zstd/lib/common/fse_decompress.c +117 -92
- data/contrib/zstd/lib/common/huf.h +99 -166
- data/contrib/zstd/lib/common/mem.h +124 -142
- data/contrib/zstd/lib/common/pool.c +54 -27
- data/contrib/zstd/lib/common/pool.h +10 -4
- data/contrib/zstd/lib/common/portability_macros.h +156 -0
- data/contrib/zstd/lib/common/threading.c +74 -19
- data/contrib/zstd/lib/common/threading.h +5 -10
- data/contrib/zstd/lib/common/xxhash.c +7 -847
- data/contrib/zstd/lib/common/xxhash.h +5568 -167
- data/contrib/zstd/lib/common/zstd_common.c +2 -37
- data/contrib/zstd/lib/common/zstd_deps.h +111 -0
- data/contrib/zstd/lib/common/zstd_internal.h +132 -187
- data/contrib/zstd/lib/common/zstd_trace.h +163 -0
- data/contrib/zstd/lib/compress/clevels.h +134 -0
- data/contrib/zstd/lib/compress/fse_compress.c +83 -157
- data/contrib/zstd/lib/compress/hist.c +27 -29
- data/contrib/zstd/lib/compress/hist.h +2 -2
- data/contrib/zstd/lib/compress/huf_compress.c +916 -279
- data/contrib/zstd/lib/compress/zstd_compress.c +3773 -1019
- data/contrib/zstd/lib/compress/zstd_compress_internal.h +610 -203
- data/contrib/zstd/lib/compress/zstd_compress_literals.c +119 -42
- data/contrib/zstd/lib/compress/zstd_compress_literals.h +16 -6
- data/contrib/zstd/lib/compress/zstd_compress_sequences.c +42 -19
- data/contrib/zstd/lib/compress/zstd_compress_sequences.h +1 -1
- data/contrib/zstd/lib/compress/zstd_compress_superblock.c +49 -317
- data/contrib/zstd/lib/compress/zstd_compress_superblock.h +1 -1
- data/contrib/zstd/lib/compress/zstd_cwksp.h +320 -103
- data/contrib/zstd/lib/compress/zstd_double_fast.c +388 -151
- data/contrib/zstd/lib/compress/zstd_double_fast.h +3 -2
- data/contrib/zstd/lib/compress/zstd_fast.c +729 -265
- data/contrib/zstd/lib/compress/zstd_fast.h +3 -2
- data/contrib/zstd/lib/compress/zstd_lazy.c +1270 -251
- data/contrib/zstd/lib/compress/zstd_lazy.h +61 -1
- data/contrib/zstd/lib/compress/zstd_ldm.c +324 -219
- data/contrib/zstd/lib/compress/zstd_ldm.h +9 -2
- data/contrib/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
- data/contrib/zstd/lib/compress/zstd_opt.c +481 -209
- data/contrib/zstd/lib/compress/zstd_opt.h +1 -1
- data/contrib/zstd/lib/compress/zstdmt_compress.c +181 -457
- data/contrib/zstd/lib/compress/zstdmt_compress.h +34 -113
- data/contrib/zstd/lib/decompress/huf_decompress.c +1199 -565
- data/contrib/zstd/lib/decompress/huf_decompress_amd64.S +576 -0
- data/contrib/zstd/lib/decompress/zstd_ddict.c +12 -12
- data/contrib/zstd/lib/decompress/zstd_ddict.h +2 -2
- data/contrib/zstd/lib/decompress/zstd_decompress.c +627 -157
- data/contrib/zstd/lib/decompress/zstd_decompress_block.c +1086 -326
- data/contrib/zstd/lib/decompress/zstd_decompress_block.h +19 -5
- data/contrib/zstd/lib/decompress/zstd_decompress_internal.h +62 -13
- data/contrib/zstd/lib/deprecated/zbuff.h +1 -1
- data/contrib/zstd/lib/deprecated/zbuff_common.c +1 -1
- data/contrib/zstd/lib/deprecated/zbuff_compress.c +24 -4
- data/contrib/zstd/lib/deprecated/zbuff_decompress.c +3 -1
- data/contrib/zstd/lib/dictBuilder/cover.c +73 -52
- data/contrib/zstd/lib/dictBuilder/cover.h +7 -6
- data/contrib/zstd/lib/dictBuilder/divsufsort.c +1 -1
- data/contrib/zstd/lib/dictBuilder/fastcover.c +44 -35
- data/contrib/zstd/lib/dictBuilder/zdict.c +103 -111
- data/contrib/zstd/lib/legacy/zstd_legacy.h +8 -1
- data/contrib/zstd/lib/legacy/zstd_v01.c +21 -54
- data/contrib/zstd/lib/legacy/zstd_v01.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v02.c +29 -70
- data/contrib/zstd/lib/legacy/zstd_v02.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v03.c +30 -73
- data/contrib/zstd/lib/legacy/zstd_v03.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v04.c +29 -71
- data/contrib/zstd/lib/legacy/zstd_v04.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v05.c +40 -86
- data/contrib/zstd/lib/legacy/zstd_v05.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v06.c +47 -88
- data/contrib/zstd/lib/legacy/zstd_v06.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v07.c +40 -83
- data/contrib/zstd/lib/legacy/zstd_v07.h +1 -1
- data/contrib/zstd/lib/libzstd.mk +214 -0
- data/contrib/zstd/lib/libzstd.pc.in +7 -6
- data/contrib/zstd/lib/module.modulemap +35 -0
- data/contrib/zstd/lib/{dictBuilder/zdict.h → zdict.h} +203 -34
- data/contrib/zstd/lib/zstd.h +1217 -287
- data/contrib/zstd/lib/{common/zstd_errors.h → zstd_errors.h} +28 -8
- data/ext/extconf.rb +7 -6
- data/ext/extzstd.c +19 -10
- data/ext/extzstd.h +6 -0
- data/ext/libzstd_conf.h +0 -1
- data/ext/zstd_decompress_asm.S +1 -0
- data/gemstub.rb +3 -21
- data/lib/extzstd/version.rb +6 -1
- data/lib/extzstd.rb +0 -2
- data/test/test_basic.rb +0 -5
- metadata +18 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Meta Platforms, Inc. and affiliates.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -184,7 +184,7 @@ ZSTDLIBv07_API size_t ZSTDv07_insertBlock(ZSTDv07_DCtx* dctx, const void* blockS
|
|
|
184
184
|
low-level memory access routines
|
|
185
185
|
Copyright (C) 2013-2015, Yann Collet.
|
|
186
186
|
|
|
187
|
-
BSD 2-Clause License (
|
|
187
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
188
188
|
|
|
189
189
|
Redistribution and use in source and binary forms, with or without
|
|
190
190
|
modification, are permitted provided that the following conditions are
|
|
@@ -242,7 +242,11 @@ extern "C" {
|
|
|
242
242
|
* Basic Types
|
|
243
243
|
*****************************************************************/
|
|
244
244
|
#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
|
|
245
|
-
#
|
|
245
|
+
# if defined(_AIX)
|
|
246
|
+
# include <inttypes.h>
|
|
247
|
+
# else
|
|
248
|
+
# include <stdint.h> /* intptr_t */
|
|
249
|
+
# endif
|
|
246
250
|
typedef uint8_t BYTE;
|
|
247
251
|
typedef uint16_t U16;
|
|
248
252
|
typedef int16_t S16;
|
|
@@ -264,27 +268,6 @@ extern "C" {
|
|
|
264
268
|
/*-**************************************************************
|
|
265
269
|
* Memory I/O
|
|
266
270
|
*****************************************************************/
|
|
267
|
-
/* MEM_FORCE_MEMORY_ACCESS :
|
|
268
|
-
* By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable.
|
|
269
|
-
* Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal.
|
|
270
|
-
* The below switch allow to select different access method for improved performance.
|
|
271
|
-
* Method 0 (default) : use `memcpy()`. Safe and portable.
|
|
272
|
-
* Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable).
|
|
273
|
-
* This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`.
|
|
274
|
-
* Method 2 : direct access. This method is portable but violate C standard.
|
|
275
|
-
* It can generate buggy code on targets depending on alignment.
|
|
276
|
-
* In some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6)
|
|
277
|
-
* See http://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details.
|
|
278
|
-
* Prefer these methods in priority order (0 > 1 > 2)
|
|
279
|
-
*/
|
|
280
|
-
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
|
281
|
-
# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
|
|
282
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
|
283
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
|
284
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
|
285
|
-
# define MEM_FORCE_MEMORY_ACCESS 1
|
|
286
|
-
# endif
|
|
287
|
-
#endif
|
|
288
271
|
|
|
289
272
|
MEM_STATIC unsigned MEM_32bits(void) { return sizeof(size_t)==4; }
|
|
290
273
|
MEM_STATIC unsigned MEM_64bits(void) { return sizeof(size_t)==8; }
|
|
@@ -295,33 +278,6 @@ MEM_STATIC unsigned MEM_isLittleEndian(void)
|
|
|
295
278
|
return one.c[0];
|
|
296
279
|
}
|
|
297
280
|
|
|
298
|
-
#if defined(MEM_FORCE_MEMORY_ACCESS) && (MEM_FORCE_MEMORY_ACCESS==2)
|
|
299
|
-
|
|
300
|
-
/* violates C standard, by lying on structure alignment.
|
|
301
|
-
Only use if no other choice to achieve best performance on target platform */
|
|
302
|
-
MEM_STATIC U16 MEM_read16(const void* memPtr) { return *(const U16*) memPtr; }
|
|
303
|
-
MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
|
|
304
|
-
MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
|
|
305
|
-
|
|
306
|
-
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
|
|
307
|
-
|
|
308
|
-
#elif defined(MEM_FORCE_MEMORY_ACCESS) && (MEM_FORCE_MEMORY_ACCESS==1)
|
|
309
|
-
|
|
310
|
-
/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
|
|
311
|
-
/* currently only defined for gcc and icc */
|
|
312
|
-
typedef union { U16 u16; U32 u32; U64 u64; size_t st; } __attribute__((packed)) unalign;
|
|
313
|
-
|
|
314
|
-
MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
|
|
315
|
-
MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
|
|
316
|
-
MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
|
|
317
|
-
|
|
318
|
-
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
|
|
319
|
-
|
|
320
|
-
#else
|
|
321
|
-
|
|
322
|
-
/* default method, safe and standard.
|
|
323
|
-
can sometimes prove slower */
|
|
324
|
-
|
|
325
281
|
MEM_STATIC U16 MEM_read16(const void* memPtr)
|
|
326
282
|
{
|
|
327
283
|
U16 val; memcpy(&val, memPtr, sizeof(val)); return val;
|
|
@@ -342,8 +298,6 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
|
|
|
342
298
|
memcpy(memPtr, &value, sizeof(value));
|
|
343
299
|
}
|
|
344
300
|
|
|
345
|
-
#endif /* MEM_FORCE_MEMORY_ACCESS */
|
|
346
|
-
|
|
347
301
|
MEM_STATIC U32 MEM_swap32(U32 in)
|
|
348
302
|
{
|
|
349
303
|
#if defined(_MSC_VER) /* Visual Studio */
|
|
@@ -438,7 +392,7 @@ MEM_STATIC size_t MEM_readLEST(const void* memPtr)
|
|
|
438
392
|
header file (to include)
|
|
439
393
|
Copyright (C) 2013-2016, Yann Collet.
|
|
440
394
|
|
|
441
|
-
BSD 2-Clause License (
|
|
395
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
442
396
|
|
|
443
397
|
Redistribution and use in source and binary forms, with or without
|
|
444
398
|
modification, are permitted provided that the following conditions are
|
|
@@ -526,9 +480,8 @@ MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, unsigned nbBits);
|
|
|
526
480
|
MEM_STATIC unsigned BITv07_highbit32 (U32 val)
|
|
527
481
|
{
|
|
528
482
|
# if defined(_MSC_VER) /* Visual */
|
|
529
|
-
unsigned long r
|
|
530
|
-
_BitScanReverse
|
|
531
|
-
return (unsigned) r;
|
|
483
|
+
unsigned long r;
|
|
484
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
|
532
485
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
|
533
486
|
return __builtin_clz (val) ^ 31;
|
|
534
487
|
# else /* Software version */
|
|
@@ -596,7 +549,7 @@ MEM_STATIC size_t BITv07_initDStream(BITv07_DStream_t* bitD, const void* srcBuff
|
|
|
596
549
|
}
|
|
597
550
|
|
|
598
551
|
/*! BITv07_lookBitsFast() :
|
|
599
|
-
* unsafe version; only works
|
|
552
|
+
* unsafe version; only works if nbBits >= 1 */
|
|
600
553
|
MEM_STATIC size_t BITv07_lookBitsFast(const BITv07_DStream_t* bitD, U32 nbBits)
|
|
601
554
|
{
|
|
602
555
|
U32 const bitMask = sizeof(bitD->bitContainer)*8 - 1;
|
|
@@ -616,7 +569,7 @@ MEM_STATIC size_t BITv07_readBits(BITv07_DStream_t* bitD, U32 nbBits)
|
|
|
616
569
|
}
|
|
617
570
|
|
|
618
571
|
/*! BITv07_readBitsFast() :
|
|
619
|
-
* unsafe version; only works
|
|
572
|
+
* unsafe version; only works if nbBits >= 1 */
|
|
620
573
|
MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, U32 nbBits)
|
|
621
574
|
{
|
|
622
575
|
size_t const value = BITv07_lookBitsFast(bitD, nbBits);
|
|
@@ -670,7 +623,7 @@ MEM_STATIC unsigned BITv07_endOfDStream(const BITv07_DStream_t* DStream)
|
|
|
670
623
|
Public Prototypes declaration
|
|
671
624
|
Copyright (C) 2013-2016, Yann Collet.
|
|
672
625
|
|
|
673
|
-
BSD 2-Clause License (
|
|
626
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
674
627
|
|
|
675
628
|
Redistribution and use in source and binary forms, with or without
|
|
676
629
|
modification, are permitted provided that the following conditions are
|
|
@@ -978,7 +931,7 @@ MEM_STATIC BYTE FSEv07_decodeSymbolFast(FSEv07_DState_t* DStatePtr, BITv07_DStre
|
|
|
978
931
|
header file
|
|
979
932
|
Copyright (C) 2013-2016, Yann Collet.
|
|
980
933
|
|
|
981
|
-
BSD 2-Clause License (
|
|
934
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
982
935
|
|
|
983
936
|
Redistribution and use in source and binary forms, with or without
|
|
984
937
|
modification, are permitted provided that the following conditions are
|
|
@@ -1151,7 +1104,7 @@ size_t HUFv07_decompress1X4_usingDTable(void* dst, size_t maxDstSize, const void
|
|
|
1151
1104
|
Common functions of New Generation Entropy library
|
|
1152
1105
|
Copyright (C) 2016, Yann Collet.
|
|
1153
1106
|
|
|
1154
|
-
BSD 2-Clause License (
|
|
1107
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
1155
1108
|
|
|
1156
1109
|
Redistribution and use in source and binary forms, with or without
|
|
1157
1110
|
modification, are permitted provided that the following conditions are
|
|
@@ -1375,7 +1328,7 @@ size_t HUFv07_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
|
1375
1328
|
FSE : Finite State Entropy decoder
|
|
1376
1329
|
Copyright (C) 2013-2015, Yann Collet.
|
|
1377
1330
|
|
|
1378
|
-
BSD 2-Clause License (
|
|
1331
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
1379
1332
|
|
|
1380
1333
|
Redistribution and use in source and binary forms, with or without
|
|
1381
1334
|
modification, are permitted provided that the following conditions are
|
|
@@ -1699,7 +1652,7 @@ size_t FSEv07_decompress(void* dst, size_t maxDstSize, const void* cSrc, size_t
|
|
|
1699
1652
|
Huffman decoder, part of New Generation Entropy library
|
|
1700
1653
|
Copyright (C) 2013-2016, Yann Collet.
|
|
1701
1654
|
|
|
1702
|
-
BSD 2-Clause License (
|
|
1655
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
1703
1656
|
|
|
1704
1657
|
Redistribution and use in source and binary forms, with or without
|
|
1705
1658
|
modification, are permitted provided that the following conditions are
|
|
@@ -2577,7 +2530,7 @@ size_t HUFv07_decompress1X_DCtx (HUFv07_DTable* dctx, void* dst, size_t dstSize,
|
|
|
2577
2530
|
Common functions of Zstd compression library
|
|
2578
2531
|
Copyright (C) 2015-2016, Yann Collet.
|
|
2579
2532
|
|
|
2580
|
-
BSD 2-Clause License (
|
|
2533
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
2581
2534
|
|
|
2582
2535
|
Redistribution and use in source and binary forms, with or without
|
|
2583
2536
|
modification, are permitted provided that the following conditions are
|
|
@@ -2601,7 +2554,7 @@ size_t HUFv07_decompress1X_DCtx (HUFv07_DTable* dctx, void* dst, size_t dstSize,
|
|
|
2601
2554
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
2602
2555
|
|
|
2603
2556
|
You can contact the author at :
|
|
2604
|
-
- zstd homepage :
|
|
2557
|
+
- zstd homepage : https://facebook.github.io/zstd/
|
|
2605
2558
|
*/
|
|
2606
2559
|
|
|
2607
2560
|
|
|
@@ -2647,7 +2600,7 @@ static void ZSTDv07_defaultFreeFunction(void* opaque, void* address)
|
|
|
2647
2600
|
Header File for include
|
|
2648
2601
|
Copyright (C) 2014-2016, Yann Collet.
|
|
2649
2602
|
|
|
2650
|
-
BSD 2-Clause License (
|
|
2603
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
2651
2604
|
|
|
2652
2605
|
Redistribution and use in source and binary forms, with or without
|
|
2653
2606
|
modification, are permitted provided that the following conditions are
|
|
@@ -2717,7 +2670,7 @@ typedef enum { bt_compressed, bt_raw, bt_rle, bt_end } blockType_t;
|
|
|
2717
2670
|
#define MIN_SEQUENCES_SIZE 1 /* nbSeq==0 */
|
|
2718
2671
|
#define MIN_CBLOCK_SIZE (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */
|
|
2719
2672
|
|
|
2720
|
-
#define
|
|
2673
|
+
#define ZSTD_HUFFDTABLE_CAPACITY_LOG 12
|
|
2721
2674
|
typedef enum { lbt_huffman, lbt_repeat, lbt_raw, lbt_rle } litBlockType_t;
|
|
2722
2675
|
|
|
2723
2676
|
#define LONGNBSEQ 0x7F00
|
|
@@ -2854,7 +2807,7 @@ static const ZSTDv07_customMem defaultCustomMem = { ZSTDv07_defaultAllocFunction
|
|
|
2854
2807
|
zstd - standard compression library
|
|
2855
2808
|
Copyright (C) 2014-2016, Yann Collet.
|
|
2856
2809
|
|
|
2857
|
-
BSD 2-Clause License (
|
|
2810
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
2858
2811
|
|
|
2859
2812
|
Redistribution and use in source and binary forms, with or without
|
|
2860
2813
|
modification, are permitted provided that the following conditions are
|
|
@@ -2878,7 +2831,7 @@ static const ZSTDv07_customMem defaultCustomMem = { ZSTDv07_defaultAllocFunction
|
|
|
2878
2831
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
2879
2832
|
|
|
2880
2833
|
You can contact the author at :
|
|
2881
|
-
- zstd homepage :
|
|
2834
|
+
- zstd homepage : https://facebook.github.io/zstd
|
|
2882
2835
|
*/
|
|
2883
2836
|
|
|
2884
2837
|
/* ***************************************************************
|
|
@@ -2931,7 +2884,7 @@ struct ZSTDv07_DCtx_s
|
|
|
2931
2884
|
FSEv07_DTable LLTable[FSEv07_DTABLE_SIZE_U32(LLFSELog)];
|
|
2932
2885
|
FSEv07_DTable OffTable[FSEv07_DTABLE_SIZE_U32(OffFSELog)];
|
|
2933
2886
|
FSEv07_DTable MLTable[FSEv07_DTABLE_SIZE_U32(MLFSELog)];
|
|
2934
|
-
HUFv07_DTable hufTable[HUFv07_DTABLE_SIZE(
|
|
2887
|
+
HUFv07_DTable hufTable[HUFv07_DTABLE_SIZE(ZSTD_HUFFDTABLE_CAPACITY_LOG)]; /* can accommodate HUFv07_decompress4X */
|
|
2935
2888
|
const void* previousDstEnd;
|
|
2936
2889
|
const void* base;
|
|
2937
2890
|
const void* vBase;
|
|
@@ -2967,7 +2920,7 @@ size_t ZSTDv07_decompressBegin(ZSTDv07_DCtx* dctx)
|
|
|
2967
2920
|
dctx->base = NULL;
|
|
2968
2921
|
dctx->vBase = NULL;
|
|
2969
2922
|
dctx->dictEnd = NULL;
|
|
2970
|
-
dctx->hufTable[0] = (HUFv07_DTable)((
|
|
2923
|
+
dctx->hufTable[0] = (HUFv07_DTable)((ZSTD_HUFFDTABLE_CAPACITY_LOG)*0x1000001);
|
|
2971
2924
|
dctx->litEntropy = dctx->fseEntropy = 0;
|
|
2972
2925
|
dctx->dictID = 0;
|
|
2973
2926
|
{ int i; for (i=0; i<ZSTDv07_REP_NUM; i++) dctx->rep[i] = repStartValue[i]; }
|
|
@@ -3254,7 +3207,7 @@ typedef struct
|
|
|
3254
3207
|
* Provides the size of compressed block from block header `src` */
|
|
3255
3208
|
static size_t ZSTDv07_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr)
|
|
3256
3209
|
{
|
|
3257
|
-
const BYTE* const in = (const BYTE*
|
|
3210
|
+
const BYTE* const in = (const BYTE*)src;
|
|
3258
3211
|
U32 cSize;
|
|
3259
3212
|
|
|
3260
3213
|
if (srcSize < ZSTDv07_blockHeaderSize) return ERROR(srcSize_wrong);
|
|
@@ -3449,7 +3402,7 @@ static size_t ZSTDv07_decodeSeqHeaders(int* nbSeqPtr,
|
|
|
3449
3402
|
FSEv07_DTable* DTableLL, FSEv07_DTable* DTableML, FSEv07_DTable* DTableOffb, U32 flagRepeatTable,
|
|
3450
3403
|
const void* src, size_t srcSize)
|
|
3451
3404
|
{
|
|
3452
|
-
const BYTE* const istart = (const BYTE*
|
|
3405
|
+
const BYTE* const istart = (const BYTE*)src;
|
|
3453
3406
|
const BYTE* const iend = istart + srcSize;
|
|
3454
3407
|
const BYTE* ip = istart;
|
|
3455
3408
|
|
|
@@ -3599,11 +3552,14 @@ size_t ZSTDv07_execSequence(BYTE* op,
|
|
|
3599
3552
|
const BYTE* match = oLitEnd - sequence.offset;
|
|
3600
3553
|
|
|
3601
3554
|
/* check */
|
|
3602
|
-
|
|
3603
|
-
if (
|
|
3555
|
+
assert(oend >= op);
|
|
3556
|
+
if (sequence.litLength + WILDCOPY_OVERLENGTH > (size_t)(oend - op)) return ERROR(dstSize_tooSmall);
|
|
3557
|
+
if (sequenceLength > (size_t)(oend - op)) return ERROR(dstSize_tooSmall);
|
|
3558
|
+
assert(litLimit >= *litPtr);
|
|
3559
|
+
if (sequence.litLength > (size_t)(litLimit - *litPtr)) return ERROR(corruption_detected);;
|
|
3604
3560
|
|
|
3605
3561
|
/* copy Literals */
|
|
3606
|
-
ZSTDv07_wildcopy(op, *litPtr, sequence.litLength); /* note : since oLitEnd <= oend-WILDCOPY_OVERLENGTH, no risk of overwrite beyond oend */
|
|
3562
|
+
ZSTDv07_wildcopy(op, *litPtr, (ptrdiff_t)sequence.litLength); /* note : since oLitEnd <= oend-WILDCOPY_OVERLENGTH, no risk of overwrite beyond oend */
|
|
3607
3563
|
op = oLitEnd;
|
|
3608
3564
|
*litPtr = iLitEnd; /* update for next sequence */
|
|
3609
3565
|
|
|
@@ -3617,7 +3573,7 @@ size_t ZSTDv07_execSequence(BYTE* op,
|
|
|
3617
3573
|
return sequenceLength;
|
|
3618
3574
|
}
|
|
3619
3575
|
/* span extDict & currentPrefixSegment */
|
|
3620
|
-
{ size_t const length1 = dictEnd - match;
|
|
3576
|
+
{ size_t const length1 = (size_t)(dictEnd - match);
|
|
3621
3577
|
memmove(oLitEnd, match, length1);
|
|
3622
3578
|
op = oLitEnd + length1;
|
|
3623
3579
|
sequence.matchLength -= length1;
|
|
@@ -3668,7 +3624,7 @@ static size_t ZSTDv07_decompressSequences(
|
|
|
3668
3624
|
{
|
|
3669
3625
|
const BYTE* ip = (const BYTE*)seqStart;
|
|
3670
3626
|
const BYTE* const iend = ip + seqSize;
|
|
3671
|
-
BYTE* const ostart = (BYTE*
|
|
3627
|
+
BYTE* const ostart = (BYTE*)dst;
|
|
3672
3628
|
BYTE* const oend = ostart + maxDstSize;
|
|
3673
3629
|
BYTE* op = ostart;
|
|
3674
3630
|
const BYTE* litPtr = dctx->litPtr;
|
|
@@ -3795,7 +3751,7 @@ static size_t ZSTDv07_decompressFrame(ZSTDv07_DCtx* dctx,
|
|
|
3795
3751
|
{
|
|
3796
3752
|
const BYTE* ip = (const BYTE*)src;
|
|
3797
3753
|
const BYTE* const iend = ip + srcSize;
|
|
3798
|
-
BYTE* const ostart = (BYTE*
|
|
3754
|
+
BYTE* const ostart = (BYTE*)dst;
|
|
3799
3755
|
BYTE* const oend = ostart + dstCapacity;
|
|
3800
3756
|
BYTE* op = ostart;
|
|
3801
3757
|
size_t remainingSize = srcSize;
|
|
@@ -4253,7 +4209,7 @@ ZSTDLIBv07_API size_t ZSTDv07_decompress_usingDDict(ZSTDv07_DCtx* dctx,
|
|
|
4253
4209
|
Buffered version of Zstd compression library
|
|
4254
4210
|
Copyright (C) 2015-2016, Yann Collet.
|
|
4255
4211
|
|
|
4256
|
-
BSD 2-Clause License (
|
|
4212
|
+
BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
4257
4213
|
|
|
4258
4214
|
Redistribution and use in source and binary forms, with or without
|
|
4259
4215
|
modification, are permitted provided that the following conditions are
|
|
@@ -4277,7 +4233,7 @@ ZSTDLIBv07_API size_t ZSTDv07_decompress_usingDDict(ZSTDv07_DCtx* dctx,
|
|
|
4277
4233
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
4278
4234
|
|
|
4279
4235
|
You can contact the author at :
|
|
4280
|
-
- zstd homepage :
|
|
4236
|
+
- zstd homepage : https://facebook.github.io/zstd/
|
|
4281
4237
|
*/
|
|
4282
4238
|
|
|
4283
4239
|
|
|
@@ -4417,7 +4373,8 @@ size_t ZBUFFv07_decompressContinue(ZBUFFv07_DCtx* zbd,
|
|
|
4417
4373
|
if (hSize != 0) {
|
|
4418
4374
|
size_t const toLoad = hSize - zbd->lhSize; /* if hSize!=0, hSize > zbd->lhSize */
|
|
4419
4375
|
if (toLoad > (size_t)(iend-ip)) { /* not enough input to load full header */
|
|
4420
|
-
|
|
4376
|
+
if (ip != NULL)
|
|
4377
|
+
memcpy(zbd->headerBuffer + zbd->lhSize, ip, iend-ip);
|
|
4421
4378
|
zbd->lhSize += iend-ip;
|
|
4422
4379
|
*dstCapacityPtr = 0;
|
|
4423
4380
|
return (hSize - zbd->lhSize) + ZSTDv07_blockHeaderSize; /* remaining header bytes + next block header */
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# ################################################################
|
|
2
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
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
|
+
##################################################################
|
|
12
|
+
# Input Variables
|
|
13
|
+
##################################################################
|
|
14
|
+
|
|
15
|
+
# Zstd lib directory
|
|
16
|
+
LIBZSTD ?= ./
|
|
17
|
+
|
|
18
|
+
# ZSTD_LIB_MINIFY is a helper variable that
|
|
19
|
+
# configures a bunch of other variables to space-optimized defaults.
|
|
20
|
+
ZSTD_LIB_MINIFY ?= 0
|
|
21
|
+
|
|
22
|
+
# Legacy support
|
|
23
|
+
ifneq ($(ZSTD_LIB_MINIFY), 0)
|
|
24
|
+
ZSTD_LEGACY_SUPPORT ?= 0
|
|
25
|
+
else
|
|
26
|
+
ZSTD_LEGACY_SUPPORT ?= 5
|
|
27
|
+
endif
|
|
28
|
+
ZSTD_LEGACY_MULTITHREADED_API ?= 0
|
|
29
|
+
|
|
30
|
+
# Build size optimizations
|
|
31
|
+
ifneq ($(ZSTD_LIB_MINIFY), 0)
|
|
32
|
+
HUF_FORCE_DECOMPRESS_X1 ?= 1
|
|
33
|
+
HUF_FORCE_DECOMPRESS_X2 ?= 0
|
|
34
|
+
ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 1
|
|
35
|
+
ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG ?= 0
|
|
36
|
+
ZSTD_NO_INLINE ?= 1
|
|
37
|
+
ZSTD_STRIP_ERROR_STRINGS ?= 1
|
|
38
|
+
else
|
|
39
|
+
HUF_FORCE_DECOMPRESS_X1 ?= 0
|
|
40
|
+
HUF_FORCE_DECOMPRESS_X2 ?= 0
|
|
41
|
+
ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 0
|
|
42
|
+
ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG ?= 0
|
|
43
|
+
ZSTD_NO_INLINE ?= 0
|
|
44
|
+
ZSTD_STRIP_ERROR_STRINGS ?= 0
|
|
45
|
+
endif
|
|
46
|
+
|
|
47
|
+
# Assembly support
|
|
48
|
+
ZSTD_NO_ASM ?= 0
|
|
49
|
+
|
|
50
|
+
##################################################################
|
|
51
|
+
# libzstd helpers
|
|
52
|
+
##################################################################
|
|
53
|
+
|
|
54
|
+
VOID ?= /dev/null
|
|
55
|
+
|
|
56
|
+
# Make 4.3 doesn't support '\#' anymore (https://lwn.net/Articles/810071/)
|
|
57
|
+
NUM_SYMBOL := \#
|
|
58
|
+
|
|
59
|
+
# define silent mode as default (verbose mode with V=1 or VERBOSE=1)
|
|
60
|
+
$(V)$(VERBOSE).SILENT:
|
|
61
|
+
|
|
62
|
+
# When cross-compiling from linux to windows,
|
|
63
|
+
# one might need to specify TARGET_SYSTEM as "Windows."
|
|
64
|
+
# Building from Fedora fails without it.
|
|
65
|
+
# (but Ubuntu and Debian don't need to set anything)
|
|
66
|
+
TARGET_SYSTEM ?= $(OS)
|
|
67
|
+
|
|
68
|
+
# Version numbers
|
|
69
|
+
LIBVER_SRC := $(LIBZSTD)/zstd.h
|
|
70
|
+
LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
|
71
|
+
LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
|
72
|
+
LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
|
73
|
+
LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
|
|
74
|
+
LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
|
|
75
|
+
LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
|
|
76
|
+
LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
|
|
77
|
+
LIBVER := $(shell echo $(LIBVER_SCRIPT))
|
|
78
|
+
CCVER := $(shell $(CC) --version)
|
|
79
|
+
ZSTD_VERSION?= $(LIBVER)
|
|
80
|
+
|
|
81
|
+
ifneq ($(ZSTD_LIB_MINIFY), 0)
|
|
82
|
+
HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
|
|
83
|
+
ifneq ($(HAVE_CC_OZ), 0)
|
|
84
|
+
# Some compilers (clang) support an even more space-optimized setting.
|
|
85
|
+
CFLAGS += -Oz
|
|
86
|
+
else
|
|
87
|
+
CFLAGS += -Os
|
|
88
|
+
endif
|
|
89
|
+
CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
|
|
90
|
+
-DDYNAMIC_BMI2=0 -DNDEBUG
|
|
91
|
+
else
|
|
92
|
+
CFLAGS ?= -O3
|
|
93
|
+
endif
|
|
94
|
+
|
|
95
|
+
DEBUGLEVEL ?= 0
|
|
96
|
+
CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -DDEBUGLEVEL=$(DEBUGLEVEL)
|
|
97
|
+
ifeq ($(TARGET_SYSTEM),Windows_NT) # MinGW assumed
|
|
98
|
+
CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
|
|
99
|
+
endif
|
|
100
|
+
DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
|
|
101
|
+
-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
|
|
102
|
+
-Wstrict-prototypes -Wundef -Wpointer-arith \
|
|
103
|
+
-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
|
|
104
|
+
-Wredundant-decls -Wmissing-prototypes -Wc++-compat
|
|
105
|
+
CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
|
|
106
|
+
ASFLAGS += $(DEBUGFLAGS) $(MOREFLAGS) $(CFLAGS)
|
|
107
|
+
LDFLAGS += $(MOREFLAGS)
|
|
108
|
+
FLAGS = $(CPPFLAGS) $(CFLAGS) $(ASFLAGS) $(LDFLAGS)
|
|
109
|
+
|
|
110
|
+
ifndef ALREADY_APPENDED_NOEXECSTACK
|
|
111
|
+
export ALREADY_APPENDED_NOEXECSTACK := 1
|
|
112
|
+
ifeq ($(shell echo "int main(int argc, char* argv[]) { (void)argc; (void)argv; return 0; }" | $(CC) $(FLAGS) -z noexecstack -x c -Werror - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
|
|
113
|
+
LDFLAGS += -z noexecstack
|
|
114
|
+
endif
|
|
115
|
+
ifeq ($(shell echo | $(CC) $(FLAGS) -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
|
|
116
|
+
CFLAGS += -Wa,--noexecstack
|
|
117
|
+
# CFLAGS are also added to ASFLAGS
|
|
118
|
+
else ifeq ($(shell echo | $(CC) $(FLAGS) -Qunused-arguments -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
|
|
119
|
+
# See e.g.: https://github.com/android/ndk/issues/171
|
|
120
|
+
CFLAGS += -Qunused-arguments -Wa,--noexecstack
|
|
121
|
+
# CFLAGS are also added to ASFLAGS
|
|
122
|
+
endif
|
|
123
|
+
endif
|
|
124
|
+
|
|
125
|
+
ifeq ($(shell echo "int main(int argc, char* argv[]) { (void)argc; (void)argv; return 0; }" | $(CC) $(FLAGS) -z cet-report=error -x c -Werror - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
|
|
126
|
+
LDFLAGS += -z cet-report=error
|
|
127
|
+
endif
|
|
128
|
+
|
|
129
|
+
HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
|
130
|
+
GREP_OPTIONS ?=
|
|
131
|
+
ifeq ($(HAVE_COLORNEVER), 1)
|
|
132
|
+
GREP_OPTIONS += --color=never
|
|
133
|
+
endif
|
|
134
|
+
GREP = grep $(GREP_OPTIONS)
|
|
135
|
+
|
|
136
|
+
ZSTD_COMMON_FILES := $(sort $(wildcard $(LIBZSTD)/common/*.c))
|
|
137
|
+
ZSTD_COMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/compress/*.c))
|
|
138
|
+
ZSTD_DECOMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*.c))
|
|
139
|
+
ZSTD_DICTBUILDER_FILES := $(sort $(wildcard $(LIBZSTD)/dictBuilder/*.c))
|
|
140
|
+
ZSTD_DEPRECATED_FILES := $(sort $(wildcard $(LIBZSTD)/deprecated/*.c))
|
|
141
|
+
ZSTD_LEGACY_FILES :=
|
|
142
|
+
|
|
143
|
+
ZSTD_DECOMPRESS_AMD64_ASM_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*_amd64.S))
|
|
144
|
+
|
|
145
|
+
ifneq ($(ZSTD_NO_ASM), 0)
|
|
146
|
+
CPPFLAGS += -DZSTD_DISABLE_ASM
|
|
147
|
+
else
|
|
148
|
+
# Unconditionally add the ASM files they are disabled by
|
|
149
|
+
# macros in the .S file.
|
|
150
|
+
ZSTD_DECOMPRESS_FILES += $(ZSTD_DECOMPRESS_AMD64_ASM_FILES)
|
|
151
|
+
endif
|
|
152
|
+
|
|
153
|
+
ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
|
|
154
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
|
|
155
|
+
endif
|
|
156
|
+
|
|
157
|
+
ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
|
|
158
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
|
|
159
|
+
endif
|
|
160
|
+
|
|
161
|
+
ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT), 0)
|
|
162
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT
|
|
163
|
+
endif
|
|
164
|
+
|
|
165
|
+
ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG), 0)
|
|
166
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG
|
|
167
|
+
endif
|
|
168
|
+
|
|
169
|
+
ifneq ($(ZSTD_NO_INLINE), 0)
|
|
170
|
+
CFLAGS += -DZSTD_NO_INLINE
|
|
171
|
+
endif
|
|
172
|
+
|
|
173
|
+
ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
|
|
174
|
+
CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
|
|
175
|
+
endif
|
|
176
|
+
|
|
177
|
+
ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
|
|
178
|
+
CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
|
|
179
|
+
endif
|
|
180
|
+
|
|
181
|
+
ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
|
|
182
|
+
ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
|
183
|
+
ZSTD_LEGACY_FILES += $(shell ls $(LIBZSTD)/legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
|
184
|
+
endif
|
|
185
|
+
endif
|
|
186
|
+
CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
|
|
187
|
+
|
|
188
|
+
UNAME := $(shell uname)
|
|
189
|
+
|
|
190
|
+
ifndef BUILD_DIR
|
|
191
|
+
ifeq ($(UNAME), Darwin)
|
|
192
|
+
ifeq ($(shell md5 < /dev/null > /dev/null; echo $$?), 0)
|
|
193
|
+
HASH ?= md5
|
|
194
|
+
endif
|
|
195
|
+
else ifeq ($(UNAME), FreeBSD)
|
|
196
|
+
HASH ?= gmd5sum
|
|
197
|
+
else ifeq ($(UNAME), NetBSD)
|
|
198
|
+
HASH ?= md5 -n
|
|
199
|
+
else ifeq ($(UNAME), OpenBSD)
|
|
200
|
+
HASH ?= md5
|
|
201
|
+
endif
|
|
202
|
+
HASH ?= md5sum
|
|
203
|
+
|
|
204
|
+
HASH_DIR = conf_$(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ZSTD_FILES) | $(HASH) | cut -f 1 -d " " )
|
|
205
|
+
HAVE_HASH :=$(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
|
|
206
|
+
ifeq ($(HAVE_HASH),0)
|
|
207
|
+
$(info warning : could not find HASH ($(HASH)), needed to differentiate builds using different flags)
|
|
208
|
+
BUILD_DIR := obj/generic_noconf
|
|
209
|
+
endif
|
|
210
|
+
endif # BUILD_DIR
|
|
211
|
+
|
|
212
|
+
ZSTD_SUBDIR := $(LIBZSTD)/common $(LIBZSTD)/compress $(LIBZSTD)/decompress $(LIBZSTD)/dictBuilder $(LIBZSTD)/legacy $(LIBZSTD)/deprecated
|
|
213
|
+
vpath %.c $(ZSTD_SUBDIR)
|
|
214
|
+
vpath %.S $(ZSTD_SUBDIR)
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# ZSTD - standard compression algorithm
|
|
2
|
-
# Copyright (
|
|
3
|
-
# BSD 2-Clause License (
|
|
2
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
# BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
|
4
4
|
|
|
5
5
|
prefix=@PREFIX@
|
|
6
|
-
exec_prefix
|
|
7
|
-
includedir
|
|
8
|
-
libdir
|
|
6
|
+
exec_prefix=@EXEC_PREFIX@
|
|
7
|
+
includedir=@INCLUDEDIR@
|
|
8
|
+
libdir=@LIBDIR@
|
|
9
9
|
|
|
10
10
|
Name: zstd
|
|
11
11
|
Description: fast lossless compression algorithm library
|
|
12
|
-
URL:
|
|
12
|
+
URL: https://facebook.github.io/zstd/
|
|
13
13
|
Version: @VERSION@
|
|
14
14
|
Libs: -L${libdir} -lzstd
|
|
15
|
+
Libs.private: @LIBS_PRIVATE@
|
|
15
16
|
Cflags: -I${includedir}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module libzstd [extern_c] {
|
|
2
|
+
header "zstd.h"
|
|
3
|
+
export *
|
|
4
|
+
config_macros [exhaustive] \
|
|
5
|
+
/* zstd.h */ \
|
|
6
|
+
ZSTD_STATIC_LINKING_ONLY, \
|
|
7
|
+
ZSTDLIB_VISIBILITY, \
|
|
8
|
+
ZSTDLIB_VISIBLE, \
|
|
9
|
+
ZSTDLIB_HIDDEN, \
|
|
10
|
+
ZSTD_DLL_EXPORT, \
|
|
11
|
+
ZSTDLIB_STATIC_API, \
|
|
12
|
+
ZSTD_DISABLE_DEPRECATE_WARNINGS, \
|
|
13
|
+
ZSTD_CLEVEL_DEFAULT, \
|
|
14
|
+
/* zdict.h */ \
|
|
15
|
+
ZDICT_STATIC_LINKING_ONLY, \
|
|
16
|
+
ZDICTLIB_VISIBLE, \
|
|
17
|
+
ZDICTLIB_HIDDEN, \
|
|
18
|
+
ZDICTLIB_VISIBILITY, \
|
|
19
|
+
ZDICTLIB_STATIC_API, \
|
|
20
|
+
ZDICT_DISABLE_DEPRECATE_WARNINGS, \
|
|
21
|
+
/* zstd_errors.h */ \
|
|
22
|
+
ZSTDERRORLIB_VISIBLE, \
|
|
23
|
+
ZSTDERRORLIB_HIDDEN, \
|
|
24
|
+
ZSTDERRORLIB_VISIBILITY
|
|
25
|
+
|
|
26
|
+
module dictbuilder [extern_c] {
|
|
27
|
+
header "zdict.h"
|
|
28
|
+
export *
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module errors [extern_c] {
|
|
32
|
+
header "zstd_errors.h"
|
|
33
|
+
export *
|
|
34
|
+
}
|
|
35
|
+
}
|