Instead of using packed attribute hack, just use aligned attribute. It improves code generation on armv6 and armv7, and slightly improves code generation on aarch64. GCC generates identical code to regular aligned access on ARMv6 for all versions between 4.5 and trunk, except GCC 5 which is buggy and generates the same (bad) code as packed access: https://gcc.godbolt.org/z/hq37rz7sb
110 lines
3.5 KiB
Makefile
110 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' \
|
|
--spdx \
|
|
-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 \
|
|
-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_DISABLE_ASM \
|
|
-DZSTD_LINUX_KERNEL
|
|
rm linux/lib/zstd/decompress/huf_decompress_amd64.S
|
|
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
|
|
$(MAKE) -C test clean
|