| # ################################################################ |
| # 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 \ |
| -UZSTD_NO_INLINE \ |
| -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 |
| 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_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 |