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