| ifneq ($(KBUILD_EXTMOD),) |
| src = @abs_srcdir@ |
| obj = @abs_builddir@ |
| zstd_include = $(src)/include |
| else |
| zstd_include = $(srctree)/$(src)/include |
| endif |
| |
| MODULE := zzstd |
| |
| obj-$(CONFIG_ZFS) := $(MODULE).o |
| |
| asflags-y := -I$(zstd_include) |
| ccflags-y := -I$(zstd_include) |
| |
| # Zstd uses -O3 by default, so we should follow |
| ccflags-y += -O3 |
| |
| # -fno-tree-vectorize gets set for gcc in zstd/common/compiler.h |
| # Set it for other compilers, too. |
| $(obj)/lib/zstd.o: c_flags += -fno-tree-vectorize |
| |
| # SSE register return with SSE disabled if -march=znverX is passed |
| $(obj)/lib/zstd.o: c_flags += -U__BMI__ |
| |
| # Quiet warnings about frame size due to unused code in unmodified zstd lib |
| $(obj)/lib/zstd.o: c_flags += -Wframe-larger-than=20480 |
| |
| # Disable aarch64 neon SIMD instructions for kernel mode |
| $(obj)/lib/zstd.o: c_flags += -include $(zstd_include)/aarch64_compat.h -include $(zstd_include)/zstd_compat_wrapper.h -Wp,-w |
| |
| $(obj)/zfs_zstd.o: c_flags += -include $(zstd_include)/zstd_compat_wrapper.h |
| |
| $(MODULE)-objs += zfs_zstd.o |
| $(MODULE)-objs += lib/zstd.o |
| $(MODULE)-objs += zstd_sparc.o |
| |
| all: |
| mkdir -p lib |
| |
| gensymbols: |
| @OBJDUMP@ -t lib/zstd.o | awk '$$2 == "g" && !/ zfs_/ {print "#define\t" $$6 " zfs_" $$6}' | sort >> include/zstd_compat_wrapper.h |
| |
| checksymbols: |
| @OBJDUMP@ -t lib/zstd.o | awk '/file format/ {print} $$2 == "g" && (!/ zfs_/ && !/ __pfx_zfs_/) {++ret; print} END {exit ret}' |