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