The optimal parser is unlikely to be used in the linux kernel in practice. There is no reason these functions should be force inlined, since we aren't gaining anything, and are losing build size. | Compiler | Before (Bytes) | After (Bytes) | Delta (Bytes) | |----------|----------------|---------------|---------------| | gcc-11 | 1142090 | 952754 | -189336 | | clang-12 | 1228402 | 976290 | -252112 | This is a temporary solution pending the resolution of PR #2862 in the `dev` branch.
106 lines
3.4 KiB
Makefile
106 lines
3.4 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_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
|