Move portability macros to `lib/common/portability_macros.h`. This file only contains platform/feature detection (e.g. 0/1 macros). This file is shared between C and ASM code, so it cannot include any C code. Rename `HUF_` ASM macros to be `ZSTD_` prefixed, and move to the new header. Restrict `ZSTD_ASM_SUPPORTED` to `__GNUC__`, because we need the GAS assembler. Finally, only include the ASM code if we are actually going to use it. This disables it on all Windows platforms, which should resolve the problem brought up in Issue #2789.
87 lines
2.5 KiB
C
87 lines
2.5 KiB
C
/**
|
|
* \file zstd.c
|
|
* Single-file Zstandard library.
|
|
*
|
|
* Generate using:
|
|
* \code
|
|
* combine.sh -r ../../lib -o zstd.c zstd-in.c
|
|
* \endcode
|
|
*/
|
|
/*
|
|
* Copyright (c) 2016-2021, Yann Collet, Facebook, Inc.
|
|
* 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.
|
|
*/
|
|
/*
|
|
* Settings to bake for the single library file.
|
|
*
|
|
* Note: It's important that none of these affects 'zstd.h' (only the
|
|
* implementation files we're amalgamating).
|
|
*
|
|
* Note: MEM_MODULE stops xxhash redefining BYTE, U16, etc., which are also
|
|
* defined in mem.h (breaking C99 compatibility).
|
|
*
|
|
* Note: the undefs for xxHash allow Zstd's implementation to coincide with with
|
|
* standalone xxHash usage (with global defines).
|
|
*
|
|
* Note: multithreading is enabled for all platforms apart from Emscripten.
|
|
*/
|
|
#define DEBUGLEVEL 0
|
|
#define MEM_MODULE
|
|
#undef XXH_NAMESPACE
|
|
#define XXH_NAMESPACE ZSTD_
|
|
#undef XXH_PRIVATE_API
|
|
#define XXH_PRIVATE_API
|
|
#undef XXH_INLINE_ALL
|
|
#define XXH_INLINE_ALL
|
|
#define ZSTD_LEGACY_SUPPORT 0
|
|
#ifndef __EMSCRIPTEN__
|
|
#define ZSTD_MULTITHREAD
|
|
#endif
|
|
#define ZSTD_TRACE 0
|
|
/* TODO: Can't amalgamate ASM function */
|
|
#define ZSTD_DISABLE_ASM 1
|
|
|
|
/* Include zstd_deps.h first with all the options we need enabled. */
|
|
#define ZSTD_DEPS_NEED_MALLOC
|
|
#define ZSTD_DEPS_NEED_MATH64
|
|
#include "common/zstd_deps.h"
|
|
|
|
#include "common/debug.c"
|
|
#include "common/entropy_common.c"
|
|
#include "common/error_private.c"
|
|
#include "common/fse_decompress.c"
|
|
#include "common/threading.c"
|
|
#include "common/pool.c"
|
|
#include "common/zstd_common.c"
|
|
|
|
#include "compress/fse_compress.c"
|
|
#include "compress/hist.c"
|
|
#include "compress/huf_compress.c"
|
|
#include "compress/zstd_compress_literals.c"
|
|
#include "compress/zstd_compress_sequences.c"
|
|
#include "compress/zstd_compress_superblock.c"
|
|
#include "compress/zstd_compress.c"
|
|
#include "compress/zstd_double_fast.c"
|
|
#include "compress/zstd_fast.c"
|
|
#include "compress/zstd_lazy.c"
|
|
#include "compress/zstd_ldm.c"
|
|
#include "compress/zstd_opt.c"
|
|
#ifdef ZSTD_MULTITHREAD
|
|
#include "compress/zstdmt_compress.c"
|
|
#endif
|
|
|
|
#include "decompress/huf_decompress.c"
|
|
#include "decompress/zstd_ddict.c"
|
|
#include "decompress/zstd_decompress.c"
|
|
#include "decompress/zstd_decompress_block.c"
|
|
|
|
#include "dictBuilder/cover.c"
|
|
#include "dictBuilder/divsufsort.c"
|
|
#include "dictBuilder/fastcover.c"
|
|
#include "dictBuilder/zdict.c"
|