The zstd_common module was added upstream in commit https://github.com/torvalds/linux/commit/637a642f5ca5e850186bb64ac75ebb0f124b458d. But the kernel specific code was inlined into the library. This commit switches it to use the out of line method that we use for the other modules.
107 lines
3.5 KiB
Makefile
107 lines
3.5 KiB
Makefile
# ################################################################
|
|
# Copyright (c) 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.
|
|
# ################################################################
|
|
|
|
.PHONY: libzstd
|
|
libzstd:
|
|
rm -rf linux
|
|
mkdir -p linux
|
|
mkdir -p linux/include/linux
|
|
mkdir -p linux/lib/zstd
|
|
../freestanding_lib/freestanding.py \
|
|
--source-lib ../../lib \
|
|
--output-lib linux/lib/zstd \
|
|
--xxhash '<linux/xxhash.h>' \
|
|
--xxh64-state 'struct xxh64_state' \
|
|
--xxh64-prefix 'xxh64' \
|
|
--rewrite-include '<limits\.h>=<linux/limits.h>' \
|
|
--rewrite-include '<stddef\.h>=<linux/types.h>' \
|
|
--rewrite-include '"\.\./zstd.h"=<linux/zstd.h>' \
|
|
--rewrite-include '"(\.\./)?zstd_errors.h"=<linux/zstd_errors.h>' \
|
|
--sed 's,/\*\*\*,/* *,g' \
|
|
--sed 's,/\*\*,/*,g' \
|
|
-DZSTD_NO_INTRINSICS \
|
|
-DZSTD_NO_UNUSED_FUNCTIONS \
|
|
-DZSTD_LEGACY_SUPPORT=0 \
|
|
-DZSTD_STATIC_LINKING_ONLY \
|
|
-DFSE_STATIC_LINKING_ONLY \
|
|
-DHUF_STATIC_LINKING_ONLY \
|
|
-DXXH_STATIC_LINKING_ONLY \
|
|
-DMEM_FORCE_MEMORY_ACCESS=0 \
|
|
-D__GNUC__ \
|
|
-D__linux__=1 \
|
|
-DSTATIC_BMI2=0 \
|
|
-DZSTD_ADDRESS_SANITIZER=0 \
|
|
-DZSTD_MEMORY_SANITIZER=0 \
|
|
-DZSTD_DATAFLOW_SANITIZER=0 \
|
|
-DZSTD_COMPRESS_HEAPMODE=1 \
|
|
-UNO_PREFETCH \
|
|
-U__cplusplus \
|
|
-UZSTD_DLL_EXPORT \
|
|
-UZSTD_DLL_IMPORT \
|
|
-U__ICCARM__ \
|
|
-UZSTD_MULTITHREAD \
|
|
-U_MSC_VER \
|
|
-U_WIN32 \
|
|
-RZSTDLIB_VISIBILITY= \
|
|
-RZSTDERRORLIB_VISIBILITY= \
|
|
-RZSTD_FALLTHROUGH=fallthrough \
|
|
-DZSTD_HAVE_WEAK_SYMBOLS=0 \
|
|
-DZSTD_TRACE=0 \
|
|
-DZSTD_NO_TRACE \
|
|
-DZSTD_LINUX_KERNEL
|
|
mv linux/lib/zstd/zstd.h linux/include/linux/zstd_lib.h
|
|
mv linux/lib/zstd/zstd_errors.h linux/include/linux/
|
|
cp linux_zstd.h linux/include/linux/zstd.h
|
|
cp zstd_common_module.c linux/lib/zstd
|
|
cp zstd_compress_module.c linux/lib/zstd
|
|
cp zstd_decompress_module.c linux/lib/zstd
|
|
cp decompress_sources.h linux/lib/zstd
|
|
cp linux.mk linux/lib/zstd/Makefile
|
|
|
|
LINUX ?= $(HOME)/repos/linux
|
|
|
|
.PHONY: import
|
|
import: libzstd
|
|
rm -f $(LINUX)/include/linux/zstd.h
|
|
rm -f $(LINUX)/include/linux/zstd_errors.h
|
|
rm -rf $(LINUX)/lib/zstd
|
|
cp linux/include/linux/zstd.h $(LINUX)/include/linux
|
|
cp linux/include/linux/zstd_lib.h $(LINUX)/include/linux
|
|
cp linux/include/linux/zstd_errors.h $(LINUX)/include/linux
|
|
cp -r linux/lib/zstd $(LINUX)/lib
|
|
|
|
import-upstream:
|
|
rm -rf $(LINUX)/lib/zstd
|
|
mkdir $(LINUX)/lib/zstd
|
|
cp ../../lib/zstd.h $(LINUX)/include/linux/zstd_lib.h
|
|
cp -r ../../lib/common $(LINUX)/lib/zstd
|
|
cp -r ../../lib/compress $(LINUX)/lib/zstd
|
|
cp -r ../../lib/decompress $(LINUX)/lib/zstd
|
|
mv $(LINUX)/lib/zstd/zstd_errors.h $(LINUX)/include/linux
|
|
rm $(LINUX)/lib/zstd/common/threading.*
|
|
rm $(LINUX)/lib/zstd/common/pool.*
|
|
rm $(LINUX)/lib/zstd/common/xxhash.*
|
|
rm $(LINUX)/lib/zstd/compress/zstdmt_*
|
|
|
|
DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
|
|
-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
|
|
-Wstrict-prototypes -Wundef -Wpointer-arith \
|
|
-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
|
|
-Wredundant-decls -Wmissing-prototypes -Wc++-compat \
|
|
-Wimplicit-fallthrough
|
|
|
|
.PHONY: test
|
|
test: libzstd
|
|
$(MAKE) -C test run-test CFLAGS="-O3 $(CFLAGS) $(DEBUGFLAGS) -Werror" -j
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) -rf linux test/test test/static_test
|