2023-07-02 03:30:38 +00:00
|
|
|
// clang-format off
|
|
|
|
/*
|
|
|
|
* 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 "libc/limits.h"
|
|
|
|
#include "libc/sysv/consts/_posix.h"
|
|
|
|
#include "libc/sysv/consts/iov.h"
|
|
|
|
#include "libc/sysv/consts/limits.h"
|
|
|
|
#include "libc/sysv/consts/xopen.h"
|
|
|
|
#include "libc/thread/thread.h"
|
|
|
|
|
|
|
|
#include "libc/mem/alg.h"
|
|
|
|
#include "libc/mem/mem.h"
|
|
|
|
#include "libc/str/str.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 "libc/calls/calls.h"
|
|
|
|
#include "libc/calls/termios.h"
|
|
|
|
#include "libc/fmt/conv.h"
|
|
|
|
#include "libc/limits.h"
|
|
|
|
#include "libc/mem/alg.h"
|
|
|
|
#include "libc/mem/alloca.h"
|
|
|
|
#include "libc/mem/mem.h"
|
|
|
|
#include "libc/runtime/runtime.h"
|
|
|
|
#include "libc/stdio/dprintf.h"
|
|
|
|
#include "libc/stdio/rand.h"
|
2023-09-06 10:54:42 +00:00
|
|
|
#include "libc/temp.h"
|
2023-07-02 03:30:38 +00:00
|
|
|
#include "libc/str/str.h"
|
|
|
|
#include "libc/sysv/consts/exit.h"
|
|
|
|
#include "third_party/musl/crypt.h"
|
|
|
|
#include "third_party/musl/rand48.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 "libc/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 "libc/calls/calls.h"
|
|
|
|
#include "libc/calls/weirdtypes.h"
|
|
|
|
#include "libc/fmt/fmt.h"
|
|
|
|
#include "libc/stdio/dprintf.h"
|
|
|
|
#include "libc/stdio/stdio.h"
|
2023-09-06 10:54:42 +00:00
|
|
|
#include "libc/temp.h"
|
2023-07-02 03:30:38 +00:00
|
|
|
#include "third_party/musl/tempnam.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 "libc/inttypes.h"
|
|
|
|
#include "libc/limits.h"
|
|
|
|
#include "libc/literal.h"
|
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_STDINT */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_STDINT */
|