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