xref: /dflybsd-src/contrib/zstd/lib/common/zstd_deps.h (revision a28cd43d19e8b720a6c852a4bbc5ae147a26165a)
1*a28cd43dSSascha Wildner /*
2*a28cd43dSSascha Wildner  * Copyright (c) 2016-2020, Facebook, Inc.
3*a28cd43dSSascha Wildner  * All rights reserved.
4*a28cd43dSSascha Wildner  *
5*a28cd43dSSascha Wildner  * This source code is licensed under both the BSD-style license (found in the
6*a28cd43dSSascha Wildner  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*a28cd43dSSascha Wildner  * in the COPYING file in the root directory of this source tree).
8*a28cd43dSSascha Wildner  * You may select, at your option, one of the above-listed licenses.
9*a28cd43dSSascha Wildner  */
10*a28cd43dSSascha Wildner 
11*a28cd43dSSascha Wildner /* This file provides common libc dependencies that zstd requires.
12*a28cd43dSSascha Wildner  * The purpose is to allow replacing this file with a custom implementation
13*a28cd43dSSascha Wildner  * to compile zstd without libc support.
14*a28cd43dSSascha Wildner  */
15*a28cd43dSSascha Wildner 
16*a28cd43dSSascha Wildner /* Need:
17*a28cd43dSSascha Wildner  * NULL
18*a28cd43dSSascha Wildner  * INT_MAX
19*a28cd43dSSascha Wildner  * UINT_MAX
20*a28cd43dSSascha Wildner  * ZSTD_memcpy()
21*a28cd43dSSascha Wildner  * ZSTD_memset()
22*a28cd43dSSascha Wildner  * ZSTD_memmove()
23*a28cd43dSSascha Wildner  */
24*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_COMMON
25*a28cd43dSSascha Wildner #define ZSTD_DEPS_COMMON
26*a28cd43dSSascha Wildner 
27*a28cd43dSSascha Wildner #include <limits.h>
28*a28cd43dSSascha Wildner #include <stddef.h>
29*a28cd43dSSascha Wildner #include <string.h>
30*a28cd43dSSascha Wildner 
31*a28cd43dSSascha Wildner #if defined(__GNUC__) && __GNUC__ >= 4
32*a28cd43dSSascha Wildner # define ZSTD_memcpy(d,s,l) __builtin_memcpy((d),(s),(l))
33*a28cd43dSSascha Wildner # define ZSTD_memmove(d,s,l) __builtin_memmove((d),(s),(l))
34*a28cd43dSSascha Wildner # define ZSTD_memset(p,v,l) __builtin_memset((p),(v),(l))
35*a28cd43dSSascha Wildner #else
36*a28cd43dSSascha Wildner # define ZSTD_memcpy(d,s,l) memcpy((d),(s),(l))
37*a28cd43dSSascha Wildner # define ZSTD_memmove(d,s,l) memmove((d),(s),(l))
38*a28cd43dSSascha Wildner # define ZSTD_memset(p,v,l) memset((p),(v),(l))
39*a28cd43dSSascha Wildner #endif
40*a28cd43dSSascha Wildner 
41*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_COMMON */
42*a28cd43dSSascha Wildner 
43*a28cd43dSSascha Wildner /* Need:
44*a28cd43dSSascha Wildner  * ZSTD_malloc()
45*a28cd43dSSascha Wildner  * ZSTD_free()
46*a28cd43dSSascha Wildner  * ZSTD_calloc()
47*a28cd43dSSascha Wildner  */
48*a28cd43dSSascha Wildner #ifdef ZSTD_DEPS_NEED_MALLOC
49*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_MALLOC
50*a28cd43dSSascha Wildner #define ZSTD_DEPS_MALLOC
51*a28cd43dSSascha Wildner 
52*a28cd43dSSascha Wildner #include <stdlib.h>
53*a28cd43dSSascha Wildner 
54*a28cd43dSSascha Wildner #define ZSTD_malloc(s) malloc(s)
55*a28cd43dSSascha Wildner #define ZSTD_calloc(n,s) calloc((n), (s))
56*a28cd43dSSascha Wildner #define ZSTD_free(p) free((p))
57*a28cd43dSSascha Wildner 
58*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_MALLOC */
59*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_NEED_MALLOC */
60*a28cd43dSSascha Wildner 
61*a28cd43dSSascha Wildner /*
62*a28cd43dSSascha Wildner  * Provides 64-bit math support.
63*a28cd43dSSascha Wildner  * Need:
64*a28cd43dSSascha Wildner  * U64 ZSTD_div64(U64 dividend, U32 divisor)
65*a28cd43dSSascha Wildner  */
66*a28cd43dSSascha Wildner #ifdef ZSTD_DEPS_NEED_MATH64
67*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_MATH64
68*a28cd43dSSascha Wildner #define ZSTD_DEPS_MATH64
69*a28cd43dSSascha Wildner 
70*a28cd43dSSascha Wildner #define ZSTD_div64(dividend, divisor) ((dividend) / (divisor))
71*a28cd43dSSascha Wildner 
72*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_MATH64 */
73*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_NEED_MATH64 */
74*a28cd43dSSascha Wildner 
75*a28cd43dSSascha Wildner /* Need:
76*a28cd43dSSascha Wildner  * assert()
77*a28cd43dSSascha Wildner  */
78*a28cd43dSSascha Wildner #ifdef ZSTD_DEPS_NEED_ASSERT
79*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_ASSERT
80*a28cd43dSSascha Wildner #define ZSTD_DEPS_ASSERT
81*a28cd43dSSascha Wildner 
82*a28cd43dSSascha Wildner #include <assert.h>
83*a28cd43dSSascha Wildner 
84*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_ASSERT */
85*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_NEED_ASSERT */
86*a28cd43dSSascha Wildner 
87*a28cd43dSSascha Wildner /* Need:
88*a28cd43dSSascha Wildner  * ZSTD_DEBUG_PRINT()
89*a28cd43dSSascha Wildner  */
90*a28cd43dSSascha Wildner #ifdef ZSTD_DEPS_NEED_IO
91*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_IO
92*a28cd43dSSascha Wildner #define ZSTD_DEPS_IO
93*a28cd43dSSascha Wildner 
94*a28cd43dSSascha Wildner #include <stdio.h>
95*a28cd43dSSascha Wildner #define ZSTD_DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__)
96*a28cd43dSSascha Wildner 
97*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_IO */
98*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_NEED_IO */
99*a28cd43dSSascha Wildner 
100*a28cd43dSSascha Wildner /* Only requested when <stdint.h> is known to be present.
101*a28cd43dSSascha Wildner  * Need:
102*a28cd43dSSascha Wildner  * intptr_t
103*a28cd43dSSascha Wildner  */
104*a28cd43dSSascha Wildner #ifdef ZSTD_DEPS_NEED_STDINT
105*a28cd43dSSascha Wildner #ifndef ZSTD_DEPS_STDINT
106*a28cd43dSSascha Wildner #define ZSTD_DEPS_STDINT
107*a28cd43dSSascha Wildner 
108*a28cd43dSSascha Wildner #include <stdint.h>
109*a28cd43dSSascha Wildner 
110*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_STDINT */
111*a28cd43dSSascha Wildner #endif /* ZSTD_DEPS_NEED_STDINT */
112