| /* |
| * Copyright (c) Meta Platforms, Inc. and affiliates. |
| * All rights reserved. |
| * |
| * This source code is licensed under both the BSD-style license (found in the |
| * LICENSE file in the root directory of this source tree) and the GPLv2 (found |
| * in the COPYING file in the root directory of this source tree). |
| * You may select, at your option, one of the above-listed licenses. |
| */ |
| |
| /* This file provides common libc dependencies that zstd requires. |
| * The purpose is to allow replacing this file with a custom implementation |
| * to compile zstd without libc support. |
| */ |
| |
| /* Need: |
| * NULL |
| * INT_MAX |
| * UINT_MAX |
| * ZSTD_memcpy() |
| * ZSTD_memset() |
| * ZSTD_memmove() |
| */ |
| #ifndef ZSTD_DEPS_COMMON |
| #define ZSTD_DEPS_COMMON |
| |
| #include <limits.h> |
| #include <stddef.h> |
| #include <string.h> |
| |
| #if defined(__GNUC__) && __GNUC__ >= 4 |
| # define ZSTD_memcpy(d,s,l) __builtin_memcpy((d),(s),(l)) |
| # define ZSTD_memmove(d,s,l) __builtin_memmove((d),(s),(l)) |
| # define ZSTD_memset(p,v,l) __builtin_memset((p),(v),(l)) |
| #else |
| # define ZSTD_memcpy(d,s,l) memcpy((d),(s),(l)) |
| # define ZSTD_memmove(d,s,l) memmove((d),(s),(l)) |
| # define ZSTD_memset(p,v,l) memset((p),(v),(l)) |
| #endif |
| |
| #endif /* ZSTD_DEPS_COMMON */ |
| |
| /* Need: |
| * ZSTD_malloc() |
| * ZSTD_free() |
| * ZSTD_calloc() |
| */ |
| #ifdef ZSTD_DEPS_NEED_MALLOC |
| #ifndef ZSTD_DEPS_MALLOC |
| #define ZSTD_DEPS_MALLOC |
| |
| #include <stdlib.h> |
| |
| #define ZSTD_malloc(s) malloc(s) |
| #define ZSTD_calloc(n,s) calloc((n), (s)) |
| #define ZSTD_free(p) free((p)) |
| |
| #endif /* ZSTD_DEPS_MALLOC */ |
| #endif /* ZSTD_DEPS_NEED_MALLOC */ |
| |
| /* |
| * Provides 64-bit math support. |
| * Need: |
| * U64 ZSTD_div64(U64 dividend, U32 divisor) |
| */ |
| #ifdef ZSTD_DEPS_NEED_MATH64 |
| #ifndef ZSTD_DEPS_MATH64 |
| #define ZSTD_DEPS_MATH64 |
| |
| #define ZSTD_div64(dividend, divisor) ((dividend) / (divisor)) |
| |
| #endif /* ZSTD_DEPS_MATH64 */ |
| #endif /* ZSTD_DEPS_NEED_MATH64 */ |
| |
| /* Need: |
| * assert() |
| */ |
| #ifdef ZSTD_DEPS_NEED_ASSERT |
| #ifndef ZSTD_DEPS_ASSERT |
| #define ZSTD_DEPS_ASSERT |
| |
| #include <assert.h> |
| |
| #endif /* ZSTD_DEPS_ASSERT */ |
| #endif /* ZSTD_DEPS_NEED_ASSERT */ |
| |
| /* Need: |
| * ZSTD_DEBUG_PRINT() |
| */ |
| #ifdef ZSTD_DEPS_NEED_IO |
| #ifndef ZSTD_DEPS_IO |
| #define ZSTD_DEPS_IO |
| |
| #include <stdio.h> |
| #define ZSTD_DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__) |
| |
| #endif /* ZSTD_DEPS_IO */ |
| #endif /* ZSTD_DEPS_NEED_IO */ |
| |
| /* Only requested when <stdint.h> is known to be present. |
| * Need: |
| * intptr_t |
| */ |
| #ifdef ZSTD_DEPS_NEED_STDINT |
| #ifndef ZSTD_DEPS_STDINT |
| #define ZSTD_DEPS_STDINT |
| |
| #include <stdint.h> |
| |
| #endif /* ZSTD_DEPS_STDINT */ |
| #endif /* ZSTD_DEPS_NEED_STDINT */ |