xref: /freebsd/sys/contrib/openzfs/module/Kbuild.in (revision d2a8fad3579763bd288260c8c465ab9eb448d465)
1eda14cbcSMatt Macy# When integrated in to a monolithic kernel the spl module must appear
2eda14cbcSMatt Macy# first.  This ensures its module initialization function is run before
3eda14cbcSMatt Macy# any of the other module initialization functions which depend on it.
4eda14cbcSMatt Macy
5eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
6eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -Wmissing-prototypes
7eda14cbcSMatt MacyZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@  @NO_FORMAT_ZERO_LENGTH@
8eda14cbcSMatt Macy
9eda14cbcSMatt Macyifneq ($(KBUILD_EXTMOD),)
10eda14cbcSMatt Macyzfs_include = @abs_top_srcdir@/include
11716fd348SMartin Matuskaicp_include = @abs_srcdir@/icp/include
12716fd348SMartin Matuskazstd_include = @abs_srcdir@/zstd/include
13eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
14eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -I@abs_top_builddir@/include
15716fd348SMartin Matuskasrc = @abs_srcdir@
16716fd348SMartin Matuskaobj = @abs_builddir@
17eda14cbcSMatt Macyelse
18eda14cbcSMatt Macyzfs_include = $(srctree)/include/zfs
19e2df9bb4SMartin Matuskaicp_include = $(src)/icp/include
20e2df9bb4SMartin Matuskazstd_include = $(src)/zstd/include
21eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -include $(zfs_include)/zfs_config.h
22eda14cbcSMatt Macyendif
23eda14cbcSMatt Macy
24eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/kernel
25eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/spl
26eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/zfs
27eda14cbcSMatt MacyZFS_MODULE_CFLAGS += -I$(zfs_include)
28eda14cbcSMatt MacyZFS_MODULE_CPPFLAGS += -D_KERNEL
29eda14cbcSMatt MacyZFS_MODULE_CPPFLAGS += @KERNEL_DEBUG_CPPFLAGS@
30eda14cbcSMatt Macy
31716fd348SMartin Matuska# KASAN enables -Werror=frame-larger-than=1024, which
32716fd348SMartin Matuska# breaks oh so many parts of our build.
33716fd348SMartin Matuskaifeq ($(CONFIG_KASAN),y)
34716fd348SMartin MatuskaZFS_MODULE_CFLAGS += -Wno-error=frame-larger-than=
35716fd348SMartin Matuskaendif
36716fd348SMartin Matuska
374e8d558cSMartin Matuska# Generated binary search code is particularly bad with this optimization.
384e8d558cSMartin Matuska# Oddly, range_tree.c is not affected when unrolling is not done and dsl_scan.c
394e8d558cSMartin Matuska# is not affected when unrolling is done.
404e8d558cSMartin Matuska# Disable it until the following upstream issue is resolved:
414e8d558cSMartin Matuska# https://github.com/llvm/llvm-project/issues/62790
424e8d558cSMartin Matuskaifeq ($(CONFIG_X86),y)
434e8d558cSMartin Matuskaifeq ($(CONFIG_CC_IS_CLANG),y)
444e8d558cSMartin MatuskaCFLAGS_zfs/dsl_scan.o += -mllvm -x86-cmov-converter=false
454e8d558cSMartin MatuskaCFLAGS_zfs/metaslab.o += -mllvm -x86-cmov-converter=false
464e8d558cSMartin MatuskaCFLAGS_zfs/range_tree.o += -mllvm -x86-cmov-converter=false
474e8d558cSMartin MatuskaCFLAGS_zfs/zap_micro.o += -mllvm -x86-cmov-converter=false
484e8d558cSMartin Matuskaendif
494e8d558cSMartin Matuskaendif
504e8d558cSMartin Matuska
51eda14cbcSMatt Macyifneq ($(KBUILD_EXTMOD),)
52eda14cbcSMatt Macy@CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include
53eda14cbcSMatt Macy@CONFIG_QAT_TRUE@KBUILD_EXTRA_SYMBOLS += @QAT_SYMBOLS@
54eda14cbcSMatt Macyendif
55eda14cbcSMatt Macy
56716fd348SMartin Matuskaasflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
57716fd348SMartin Matuskaccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
58eda14cbcSMatt Macy
59bb2d13b6SMartin Matuskaifeq ($(CONFIG_ARM64),y)
60bb2d13b6SMartin MatuskaCFLAGS_REMOVE_zcommon/zfs_fletcher_aarch64_neon.o += -mgeneral-regs-only
61bb2d13b6SMartin MatuskaCFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neon.o += -mgeneral-regs-only
62bb2d13b6SMartin MatuskaCFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neonx2.o += -mgeneral-regs-only
63bb2d13b6SMartin Matuskaendif
64bb2d13b6SMartin Matuska
65716fd348SMartin Matuska# Suppress unused-value warnings in sparc64 architecture headers
66716fd348SMartin Matuskaccflags-$(CONFIG_SPARC64) += -Wno-unused-value
67716fd348SMartin Matuska
68716fd348SMartin Matuska
69716fd348SMartin Matuskaobj-$(CONFIG_ZFS) := spl.o zfs.o
70716fd348SMartin Matuska
71716fd348SMartin MatuskaSPL_OBJS := \
72716fd348SMartin Matuska	spl-atomic.o \
73716fd348SMartin Matuska	spl-condvar.o \
74716fd348SMartin Matuska	spl-cred.o \
75716fd348SMartin Matuska	spl-err.o \
76716fd348SMartin Matuska	spl-generic.o \
77716fd348SMartin Matuska	spl-kmem-cache.o \
78716fd348SMartin Matuska	spl-kmem.o \
79716fd348SMartin Matuska	spl-kstat.o \
80716fd348SMartin Matuska	spl-proc.o \
81716fd348SMartin Matuska	spl-procfs-list.o \
82b356da80SMartin Matuska	spl-shrinker.o \
83716fd348SMartin Matuska	spl-taskq.o \
84716fd348SMartin Matuska	spl-thread.o \
85716fd348SMartin Matuska	spl-trace.o \
86716fd348SMartin Matuska	spl-tsd.o \
87716fd348SMartin Matuska	spl-vmem.o \
88716fd348SMartin Matuska	spl-xdr.o \
891f1e2261SMartin Matuska	spl-zlib.o \
901f1e2261SMartin Matuska	spl-zone.o
91716fd348SMartin Matuska
92716fd348SMartin Matuskaspl-objs += $(addprefix os/linux/spl/,$(SPL_OBJS))
93716fd348SMartin Matuska
94716fd348SMartin Matuskazfs-objs += avl/avl.o
95716fd348SMartin Matuska
96716fd348SMartin MatuskaICP_OBJS := \
97716fd348SMartin Matuska	algs/aes/aes_impl.o \
98716fd348SMartin Matuska	algs/aes/aes_impl_generic.o \
99716fd348SMartin Matuska	algs/aes/aes_modes.o \
1001f1e2261SMartin Matuska	algs/blake3/blake3.o \
1011f1e2261SMartin Matuska	algs/blake3/blake3_generic.o \
1021f1e2261SMartin Matuska	algs/blake3/blake3_impl.o \
103716fd348SMartin Matuska	algs/edonr/edonr.o \
104716fd348SMartin Matuska	algs/modes/ccm.o \
105716fd348SMartin Matuska	algs/modes/gcm.o \
106716fd348SMartin Matuska	algs/modes/gcm_generic.o \
107716fd348SMartin Matuska	algs/modes/modes.o \
1082a58b312SMartin Matuska	algs/sha2/sha2_generic.o \
1092a58b312SMartin Matuska	algs/sha2/sha256_impl.o \
1102a58b312SMartin Matuska	algs/sha2/sha512_impl.o \
111716fd348SMartin Matuska	algs/skein/skein.o \
112716fd348SMartin Matuska	algs/skein/skein_block.o \
113716fd348SMartin Matuska	algs/skein/skein_iv.o \
114716fd348SMartin Matuska	api/kcf_cipher.o \
115716fd348SMartin Matuska	api/kcf_ctxops.o \
116716fd348SMartin Matuska	api/kcf_mac.o \
117716fd348SMartin Matuska	core/kcf_callprov.o \
118716fd348SMartin Matuska	core/kcf_mech_tabs.o \
119716fd348SMartin Matuska	core/kcf_prov_lib.o \
120716fd348SMartin Matuska	core/kcf_prov_tabs.o \
121716fd348SMartin Matuska	core/kcf_sched.o \
122716fd348SMartin Matuska	illumos-crypto.o \
123716fd348SMartin Matuska	io/aes.o \
124716fd348SMartin Matuska	io/sha2_mod.o \
125716fd348SMartin Matuska	spi/kcf_spi.o
126716fd348SMartin Matuska
127716fd348SMartin MatuskaICP_OBJS_X86_64 := \
128716fd348SMartin Matuska	asm-x86_64/aes/aes_aesni.o \
129716fd348SMartin Matuska	asm-x86_64/aes/aes_amd64.o \
130716fd348SMartin Matuska	asm-x86_64/aes/aeskey.o \
1311f1e2261SMartin Matuska	asm-x86_64/blake3/blake3_avx2.o \
1321f1e2261SMartin Matuska	asm-x86_64/blake3/blake3_avx512.o \
1331f1e2261SMartin Matuska	asm-x86_64/blake3/blake3_sse2.o \
1341f1e2261SMartin Matuska	asm-x86_64/blake3/blake3_sse41.o \
1352a58b312SMartin Matuska	asm-x86_64/sha2/sha256-x86_64.o \
1362a58b312SMartin Matuska	asm-x86_64/sha2/sha512-x86_64.o \
137716fd348SMartin Matuska	asm-x86_64/modes/aesni-gcm-x86_64.o \
138716fd348SMartin Matuska	asm-x86_64/modes/gcm_pclmulqdq.o \
1392a58b312SMartin Matuska	asm-x86_64/modes/ghash-x86_64.o
1401f1e2261SMartin Matuska
141716fd348SMartin MatuskaICP_OBJS_X86 := \
142716fd348SMartin Matuska	algs/aes/aes_impl_aesni.o \
143716fd348SMartin Matuska	algs/aes/aes_impl_x86-64.o \
144716fd348SMartin Matuska	algs/modes/gcm_pclmulqdq.o
145716fd348SMartin Matuska
1462a58b312SMartin MatuskaICP_OBJS_ARM := \
1472a58b312SMartin Matuska	asm-arm/sha2/sha256-armv7.o \
1482a58b312SMartin Matuska	asm-arm/sha2/sha512-armv7.o
1491f1e2261SMartin Matuska
1501f1e2261SMartin MatuskaICP_OBJS_ARM64 := \
1511f1e2261SMartin Matuska	asm-aarch64/blake3/b3_aarch64_sse2.o \
1522a58b312SMartin Matuska	asm-aarch64/blake3/b3_aarch64_sse41.o \
1532a58b312SMartin Matuska	asm-aarch64/sha2/sha256-armv8.o \
1542a58b312SMartin Matuska	asm-aarch64/sha2/sha512-armv8.o
1551f1e2261SMartin Matuska
1561f1e2261SMartin MatuskaICP_OBJS_PPC_PPC64 := \
1571f1e2261SMartin Matuska	asm-ppc64/blake3/b3_ppc64le_sse2.o \
1582a58b312SMartin Matuska	asm-ppc64/blake3/b3_ppc64le_sse41.o \
1592a58b312SMartin Matuska	asm-ppc64/sha2/sha256-p8.o \
1602a58b312SMartin Matuska	asm-ppc64/sha2/sha512-p8.o \
1612a58b312SMartin Matuska	asm-ppc64/sha2/sha256-ppc.o \
1622a58b312SMartin Matuska	asm-ppc64/sha2/sha512-ppc.o
1631f1e2261SMartin Matuska
164716fd348SMartin Matuskazfs-objs             += $(addprefix icp/,$(ICP_OBJS))
165716fd348SMartin Matuskazfs-$(CONFIG_X86)    += $(addprefix icp/,$(ICP_OBJS_X86))
1661f1e2261SMartin Matuskazfs-$(CONFIG_UML_X86)+= $(addprefix icp/,$(ICP_OBJS_X86))
167716fd348SMartin Matuskazfs-$(CONFIG_X86_64) += $(addprefix icp/,$(ICP_OBJS_X86_64))
1682a58b312SMartin Matuskazfs-$(CONFIG_ARM)    += $(addprefix icp/,$(ICP_OBJS_ARM))
1691f1e2261SMartin Matuskazfs-$(CONFIG_ARM64)  += $(addprefix icp/,$(ICP_OBJS_ARM64))
1701f1e2261SMartin Matuskazfs-$(CONFIG_PPC)    += $(addprefix icp/,$(ICP_OBJS_PPC_PPC64))
1711f1e2261SMartin Matuskazfs-$(CONFIG_PPC64)  += $(addprefix icp/,$(ICP_OBJS_PPC_PPC64))
172716fd348SMartin Matuska
1731f1e2261SMartin Matuska$(addprefix $(obj)/icp/,$(ICP_OBJS) $(ICP_OBJS_X86) $(ICP_OBJS_X86_64) \
17415f0b8c3SMartin Matuska	$(ICP_OBJS_ARM64) $(ICP_OBJS_PPC_PPC64)) : asflags-y += -I$(icp_include) -I$(zfs_include)/os/linux/spl -I$(zfs_include)
1751f1e2261SMartin Matuska
1761f1e2261SMartin Matuska$(addprefix $(obj)/icp/,$(ICP_OBJS) $(ICP_OBJS_X86) $(ICP_OBJS_X86_64) \
17715f0b8c3SMartin Matuska	$(ICP_OBJS_ARM64) $(ICP_OBJS_PPC_PPC64)) : ccflags-y += -I$(icp_include) -I$(zfs_include)/os/linux/spl -I$(zfs_include)
178716fd348SMartin Matuska
179dbd5678dSMartin Matuska# Suppress objtool "return with modified stack frame" warnings.
180716fd348SMartin MatuskaOBJECT_FILES_NON_STANDARD_aesni-gcm-x86_64.o := y
1811f1e2261SMartin Matuska
1822a58b312SMartin Matuska# Suppress objtool "unsupported stack pointer realignment" warnings.
183716fd348SMartin Matuska# See #6950 for the reasoning.
1842a58b312SMartin MatuskaOBJECT_FILES_NON_STANDARD_sha256-x86_64.o := y
1852a58b312SMartin MatuskaOBJECT_FILES_NON_STANDARD_sha512-x86_64.o := y
186716fd348SMartin Matuska
187716fd348SMartin MatuskaLUA_OBJS := \
188716fd348SMartin Matuska	lapi.o \
189716fd348SMartin Matuska	lauxlib.o \
190716fd348SMartin Matuska	lbaselib.o \
191716fd348SMartin Matuska	lcode.o \
192716fd348SMartin Matuska	lcompat.o \
193716fd348SMartin Matuska	lcorolib.o \
194716fd348SMartin Matuska	lctype.o \
195716fd348SMartin Matuska	ldebug.o \
196716fd348SMartin Matuska	ldo.o \
197716fd348SMartin Matuska	lfunc.o \
198716fd348SMartin Matuska	lgc.o \
199716fd348SMartin Matuska	llex.o \
200716fd348SMartin Matuska	lmem.o \
201716fd348SMartin Matuska	lobject.o \
202716fd348SMartin Matuska	lopcodes.o \
203716fd348SMartin Matuska	lparser.o \
204716fd348SMartin Matuska	lstate.o \
205716fd348SMartin Matuska	lstring.o \
206716fd348SMartin Matuska	lstrlib.o \
207716fd348SMartin Matuska	ltable.o \
208716fd348SMartin Matuska	ltablib.o \
209716fd348SMartin Matuska	ltm.o \
210716fd348SMartin Matuska	lvm.o \
211716fd348SMartin Matuska	lzio.o \
212716fd348SMartin Matuska	setjmp/setjmp.o
213716fd348SMartin Matuska
214716fd348SMartin Matuskazfs-objs += $(addprefix lua/,$(LUA_OBJS))
215716fd348SMartin Matuska
216716fd348SMartin Matuska
217716fd348SMartin MatuskaNVPAIR_OBJS := \
218716fd348SMartin Matuska	fnvpair.o \
219716fd348SMartin Matuska	nvpair.o \
220716fd348SMartin Matuska	nvpair_alloc_fixed.o \
221716fd348SMartin Matuska	nvpair_alloc_spl.o
222716fd348SMartin Matuska
223716fd348SMartin Matuskazfs-objs += $(addprefix nvpair/,$(NVPAIR_OBJS))
224716fd348SMartin Matuska
225716fd348SMartin Matuska
226716fd348SMartin MatuskaUNICODE_OBJS := \
2275c65a0a9SMartin Matuska	u8_textprep.o
228716fd348SMartin Matuska
229716fd348SMartin Matuskazfs-objs += $(addprefix unicode/,$(UNICODE_OBJS))
230716fd348SMartin Matuska
231716fd348SMartin Matuska
232716fd348SMartin MatuskaZCOMMON_OBJS := \
233716fd348SMartin Matuska	cityhash.o \
2347a7741afSMartin Matuska	simd_stat.o \
235716fd348SMartin Matuska	zfeature_common.o \
236716fd348SMartin Matuska	zfs_comutil.o \
237716fd348SMartin Matuska	zfs_deleg.o \
238716fd348SMartin Matuska	zfs_fletcher.o \
239716fd348SMartin Matuska	zfs_fletcher_superscalar.o \
240716fd348SMartin Matuska	zfs_fletcher_superscalar4.o \
241716fd348SMartin Matuska	zfs_namecheck.o \
242716fd348SMartin Matuska	zfs_prop.o \
243e2df9bb4SMartin Matuska	zfs_valstr.o \
244716fd348SMartin Matuska	zpool_prop.o \
245716fd348SMartin Matuska	zprop_common.o
246716fd348SMartin Matuska
247716fd348SMartin MatuskaZCOMMON_OBJS_X86 := \
248716fd348SMartin Matuska	zfs_fletcher_avx512.o \
249716fd348SMartin Matuska	zfs_fletcher_intel.o \
250716fd348SMartin Matuska	zfs_fletcher_sse.o
251716fd348SMartin Matuska
252716fd348SMartin MatuskaZCOMMON_OBJS_ARM64 := \
253716fd348SMartin Matuska	zfs_fletcher_aarch64_neon.o
254716fd348SMartin Matuska
255716fd348SMartin Matuskazfs-objs            += $(addprefix zcommon/,$(ZCOMMON_OBJS))
256716fd348SMartin Matuskazfs-$(CONFIG_X86)   += $(addprefix zcommon/,$(ZCOMMON_OBJS_X86))
2571f1e2261SMartin Matuskazfs-$(CONFIG_UML_X86)+= $(addprefix zcommon/,$(ZCOMMON_OBJS_X86))
258716fd348SMartin Matuskazfs-$(CONFIG_ARM64) += $(addprefix zcommon/,$(ZCOMMON_OBJS_ARM64))
259716fd348SMartin Matuska
260716fd348SMartin Matuska
261716fd348SMartin Matuska# Zstd uses -O3 by default, so we should follow
262716fd348SMartin MatuskaZFS_ZSTD_FLAGS := -O3
263716fd348SMartin Matuska
264716fd348SMartin Matuska# -fno-tree-vectorize gets set for gcc in zstd/common/compiler.h
265716fd348SMartin Matuska# Set it for other compilers, too.
266716fd348SMartin MatuskaZFS_ZSTD_FLAGS += -fno-tree-vectorize
267716fd348SMartin Matuska
268716fd348SMartin Matuska# SSE register return with SSE disabled if -march=znverX is passed
269716fd348SMartin MatuskaZFS_ZSTD_FLAGS += -U__BMI__
270716fd348SMartin Matuska
271716fd348SMartin Matuska# Quiet warnings about frame size due to unused code in unmodified zstd lib
272716fd348SMartin MatuskaZFS_ZSTD_FLAGS += -Wframe-larger-than=20480
273716fd348SMartin Matuska
274716fd348SMartin MatuskaZSTD_OBJS := \
275716fd348SMartin Matuska	zfs_zstd.o \
276716fd348SMartin Matuska	zstd_sparc.o
277716fd348SMartin Matuska
278716fd348SMartin MatuskaZSTD_UPSTREAM_OBJS := \
279716fd348SMartin Matuska	lib/common/entropy_common.o \
280716fd348SMartin Matuska	lib/common/error_private.o \
281716fd348SMartin Matuska	lib/common/fse_decompress.o \
282716fd348SMartin Matuska	lib/common/pool.o \
283716fd348SMartin Matuska	lib/common/zstd_common.o \
284716fd348SMartin Matuska	lib/compress/fse_compress.o \
285716fd348SMartin Matuska	lib/compress/hist.o \
286716fd348SMartin Matuska	lib/compress/huf_compress.o \
287716fd348SMartin Matuska	lib/compress/zstd_compress.o \
288716fd348SMartin Matuska	lib/compress/zstd_compress_literals.o \
289716fd348SMartin Matuska	lib/compress/zstd_compress_sequences.o \
290716fd348SMartin Matuska	lib/compress/zstd_compress_superblock.o \
291716fd348SMartin Matuska	lib/compress/zstd_double_fast.o \
292716fd348SMartin Matuska	lib/compress/zstd_fast.o \
293716fd348SMartin Matuska	lib/compress/zstd_lazy.o \
294716fd348SMartin Matuska	lib/compress/zstd_ldm.o \
295716fd348SMartin Matuska	lib/compress/zstd_opt.o \
296716fd348SMartin Matuska	lib/decompress/huf_decompress.o \
297716fd348SMartin Matuska	lib/decompress/zstd_ddict.o \
298716fd348SMartin Matuska	lib/decompress/zstd_decompress.o \
299716fd348SMartin Matuska	lib/decompress/zstd_decompress_block.o
300716fd348SMartin Matuska
301716fd348SMartin Matuskazfs-objs += $(addprefix zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS))
302716fd348SMartin Matuska
303716fd348SMartin Matuska# Disable aarch64 neon SIMD instructions for kernel mode
304716fd348SMartin Matuska$(addprefix $(obj)/zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS)) : ccflags-y += -I$(zstd_include) $(ZFS_ZSTD_FLAGS)
305716fd348SMartin Matuska$(addprefix $(obj)/zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS)) : asflags-y += -I$(zstd_include)
306716fd348SMartin Matuska$(addprefix $(obj)/zstd/,$(ZSTD_UPSTREAM_OBJS)) : ccflags-y += -include $(zstd_include)/aarch64_compat.h -include $(zstd_include)/zstd_compat_wrapper.h -Wp,-w
307716fd348SMartin Matuska$(obj)/zstd/zfs_zstd.o : ccflags-y += -include $(zstd_include)/zstd_compat_wrapper.h
308716fd348SMartin Matuska
309716fd348SMartin Matuska
310716fd348SMartin MatuskaZFS_OBJS := \
311716fd348SMartin Matuska	abd.o \
312716fd348SMartin Matuska	aggsum.o \
313716fd348SMartin Matuska	arc.o \
3141f1e2261SMartin Matuska	blake3_zfs.o \
315716fd348SMartin Matuska	blkptr.o \
316716fd348SMartin Matuska	bplist.o \
317716fd348SMartin Matuska	bpobj.o \
318716fd348SMartin Matuska	bptree.o \
319716fd348SMartin Matuska	bqueue.o \
3202a58b312SMartin Matuska	brt.o \
321716fd348SMartin Matuska	btree.o \
322716fd348SMartin Matuska	dataset_kstats.o \
323716fd348SMartin Matuska	dbuf.o \
324716fd348SMartin Matuska	dbuf_stats.o \
325716fd348SMartin Matuska	ddt.o \
326e2df9bb4SMartin Matuska	ddt_log.o \
3274fefe1b7SMartin Matuska	ddt_stats.o \
328716fd348SMartin Matuska	ddt_zap.o \
329716fd348SMartin Matuska	dmu.o \
3307a7741afSMartin Matuska	dmu_direct.o \
331716fd348SMartin Matuska	dmu_diff.o \
332716fd348SMartin Matuska	dmu_object.o \
333716fd348SMartin Matuska	dmu_objset.o \
334716fd348SMartin Matuska	dmu_recv.o \
335716fd348SMartin Matuska	dmu_redact.o \
336716fd348SMartin Matuska	dmu_send.o \
337716fd348SMartin Matuska	dmu_traverse.o \
338716fd348SMartin Matuska	dmu_tx.o \
339716fd348SMartin Matuska	dmu_zfetch.o \
340716fd348SMartin Matuska	dnode.o \
341716fd348SMartin Matuska	dnode_sync.o \
342716fd348SMartin Matuska	dsl_bookmark.o \
343716fd348SMartin Matuska	dsl_crypt.o \
344716fd348SMartin Matuska	dsl_dataset.o \
345716fd348SMartin Matuska	dsl_deadlist.o \
346716fd348SMartin Matuska	dsl_deleg.o \
347716fd348SMartin Matuska	dsl_destroy.o \
348716fd348SMartin Matuska	dsl_dir.o \
349716fd348SMartin Matuska	dsl_pool.o \
350716fd348SMartin Matuska	dsl_prop.o \
351716fd348SMartin Matuska	dsl_scan.o \
352716fd348SMartin Matuska	dsl_synctask.o \
353716fd348SMartin Matuska	dsl_userhold.o \
354716fd348SMartin Matuska	edonr_zfs.o \
355716fd348SMartin Matuska	fm.o \
356716fd348SMartin Matuska	gzip.o \
357716fd348SMartin Matuska	hkdf.o \
358716fd348SMartin Matuska	lz4.o \
359716fd348SMartin Matuska	lz4_zfs.o \
360716fd348SMartin Matuska	lzjb.o \
361716fd348SMartin Matuska	metaslab.o \
362716fd348SMartin Matuska	mmp.o \
363716fd348SMartin Matuska	multilist.o \
364716fd348SMartin Matuska	objlist.o \
365716fd348SMartin Matuska	pathname.o \
366716fd348SMartin Matuska	range_tree.o \
367716fd348SMartin Matuska	refcount.o \
368716fd348SMartin Matuska	rrwlock.o \
369716fd348SMartin Matuska	sa.o \
3702a58b312SMartin Matuska	sha2_zfs.o \
371716fd348SMartin Matuska	skein_zfs.o \
372716fd348SMartin Matuska	spa.o \
373716fd348SMartin Matuska	spa_checkpoint.o \
374716fd348SMartin Matuska	spa_config.o \
375716fd348SMartin Matuska	spa_errlog.o \
376716fd348SMartin Matuska	spa_history.o \
377716fd348SMartin Matuska	spa_log_spacemap.o \
378716fd348SMartin Matuska	spa_misc.o \
379716fd348SMartin Matuska	spa_stats.o \
380716fd348SMartin Matuska	space_map.o \
381716fd348SMartin Matuska	space_reftree.o \
382716fd348SMartin Matuska	txg.o \
383716fd348SMartin Matuska	uberblock.o \
384716fd348SMartin Matuska	unique.o \
385716fd348SMartin Matuska	vdev.o \
386716fd348SMartin Matuska	vdev_draid.o \
387716fd348SMartin Matuska	vdev_draid_rand.o \
388*d2a8fad3SMartin Matuska	vdev_file.o \
389716fd348SMartin Matuska	vdev_indirect.o \
390716fd348SMartin Matuska	vdev_indirect_births.o \
391716fd348SMartin Matuska	vdev_indirect_mapping.o \
392716fd348SMartin Matuska	vdev_initialize.o \
393716fd348SMartin Matuska	vdev_label.o \
394716fd348SMartin Matuska	vdev_mirror.o \
395716fd348SMartin Matuska	vdev_missing.o \
396716fd348SMartin Matuska	vdev_queue.o \
397716fd348SMartin Matuska	vdev_raidz.o \
398716fd348SMartin Matuska	vdev_raidz_math.o \
399716fd348SMartin Matuska	vdev_raidz_math_scalar.o \
400716fd348SMartin Matuska	vdev_rebuild.o \
401716fd348SMartin Matuska	vdev_removal.o \
402716fd348SMartin Matuska	vdev_root.o \
403716fd348SMartin Matuska	vdev_trim.o \
404716fd348SMartin Matuska	zap.o \
405716fd348SMartin Matuska	zap_leaf.o \
406716fd348SMartin Matuska	zap_micro.o \
407716fd348SMartin Matuska	zcp.o \
408716fd348SMartin Matuska	zcp_get.o \
409716fd348SMartin Matuska	zcp_global.o \
410716fd348SMartin Matuska	zcp_iter.o \
411716fd348SMartin Matuska	zcp_set.o \
412716fd348SMartin Matuska	zcp_synctask.o \
413716fd348SMartin Matuska	zfeature.o \
414716fd348SMartin Matuska	zfs_byteswap.o \
4151f1e2261SMartin Matuska	zfs_chksum.o \
416716fd348SMartin Matuska	zfs_fm.o \
417716fd348SMartin Matuska	zfs_fuid.o \
4182a58b312SMartin Matuska	zfs_impl.o \
419716fd348SMartin Matuska	zfs_ioctl.o \
420716fd348SMartin Matuska	zfs_log.o \
421716fd348SMartin Matuska	zfs_onexit.o \
422716fd348SMartin Matuska	zfs_quota.o \
423716fd348SMartin Matuska	zfs_ratelimit.o \
424716fd348SMartin Matuska	zfs_replay.o \
425716fd348SMartin Matuska	zfs_rlock.o \
426716fd348SMartin Matuska	zfs_sa.o \
427716fd348SMartin Matuska	zfs_vnops.o \
4287a7741afSMartin Matuska	zfs_znode.o \
429716fd348SMartin Matuska	zil.o \
430716fd348SMartin Matuska	zio.o \
431716fd348SMartin Matuska	zio_checksum.o \
432716fd348SMartin Matuska	zio_compress.o \
433716fd348SMartin Matuska	zio_inject.o \
434716fd348SMartin Matuska	zle.o \
435716fd348SMartin Matuska	zrlock.o \
436716fd348SMartin Matuska	zthr.o \
437716fd348SMartin Matuska	zvol.o
438716fd348SMartin Matuska
439716fd348SMartin MatuskaZFS_OBJS_OS := \
440716fd348SMartin Matuska	abd_os.o \
441716fd348SMartin Matuska	arc_os.o \
442716fd348SMartin Matuska	mmp_os.o \
443716fd348SMartin Matuska	policy.o \
444716fd348SMartin Matuska	qat.o \
445716fd348SMartin Matuska	qat_compress.o \
446716fd348SMartin Matuska	qat_crypt.o \
447716fd348SMartin Matuska	spa_misc_os.o \
448716fd348SMartin Matuska	trace.o \
449716fd348SMartin Matuska	vdev_disk.o \
450b59a0cdeSMartin Matuska	vdev_raidz.o \
451e716630dSMartin Matuska	vdev_label_os.o \
452716fd348SMartin Matuska	zfs_acl.o \
453716fd348SMartin Matuska	zfs_ctldir.o \
454716fd348SMartin Matuska	zfs_debug.o \
455716fd348SMartin Matuska	zfs_dir.o \
456716fd348SMartin Matuska	zfs_file_os.o \
457716fd348SMartin Matuska	zfs_ioctl_os.o \
458716fd348SMartin Matuska	zfs_racct.o \
459716fd348SMartin Matuska	zfs_sysfs.o \
460716fd348SMartin Matuska	zfs_uio.o \
461716fd348SMartin Matuska	zfs_vfsops.o \
462716fd348SMartin Matuska	zfs_vnops_os.o \
4637a7741afSMartin Matuska	zfs_znode_os.o \
464716fd348SMartin Matuska	zio_crypt.o \
465716fd348SMartin Matuska	zpl_ctldir.o \
466716fd348SMartin Matuska	zpl_export.o \
467716fd348SMartin Matuska	zpl_file.o \
468315ee00fSMartin Matuska	zpl_file_range.o \
469716fd348SMartin Matuska	zpl_inode.o \
470716fd348SMartin Matuska	zpl_super.o \
471716fd348SMartin Matuska	zpl_xattr.o \
472716fd348SMartin Matuska	zvol_os.o
473716fd348SMartin Matuska
474716fd348SMartin MatuskaZFS_OBJS_X86 := \
475716fd348SMartin Matuska	vdev_raidz_math_avx2.o \
476716fd348SMartin Matuska	vdev_raidz_math_avx512bw.o \
477716fd348SMartin Matuska	vdev_raidz_math_avx512f.o \
478716fd348SMartin Matuska	vdev_raidz_math_sse2.o \
479716fd348SMartin Matuska	vdev_raidz_math_ssse3.o
480716fd348SMartin Matuska
481716fd348SMartin MatuskaZFS_OBJS_ARM64 := \
482716fd348SMartin Matuska	vdev_raidz_math_aarch64_neon.o \
483716fd348SMartin Matuska	vdev_raidz_math_aarch64_neonx2.o
484716fd348SMartin Matuska
485716fd348SMartin MatuskaZFS_OBJS_PPC_PPC64 := \
486716fd348SMartin Matuska	vdev_raidz_math_powerpc_altivec.o
487716fd348SMartin Matuska
488716fd348SMartin Matuskazfs-objs            += $(addprefix zfs/,$(ZFS_OBJS)) $(addprefix os/linux/zfs/,$(ZFS_OBJS_OS))
489716fd348SMartin Matuskazfs-$(CONFIG_X86)   += $(addprefix zfs/,$(ZFS_OBJS_X86))
4901f1e2261SMartin Matuskazfs-$(CONFIG_UML_X86)+= $(addprefix zfs/,$(ZFS_OBJS_X86))
491716fd348SMartin Matuskazfs-$(CONFIG_ARM64) += $(addprefix zfs/,$(ZFS_OBJS_ARM64))
492716fd348SMartin Matuskazfs-$(CONFIG_PPC)   += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64))
493716fd348SMartin Matuskazfs-$(CONFIG_PPC64) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64))
494716fd348SMartin Matuska
49547bb16f8SMartin MatuskaUBSAN_SANITIZE_zap_leaf.o := n
49647bb16f8SMartin MatuskaUBSAN_SANITIZE_zap_micro.o := n
49747bb16f8SMartin MatuskaUBSAN_SANITIZE_sa.o := n
49875e1fea6SMartin MatuskaUBSAN_SANITIZE_zfs/zap_micro.o := n
499ce4dcb97SMartin MatuskaUBSAN_SANITIZE_zfs/sa.o := n
50047bb16f8SMartin Matuska
501716fd348SMartin Matuska# Suppress incorrect warnings from versions of objtool which are not
502716fd348SMartin Matuska# aware of x86 EVEX prefix instructions used for AVX512.
503716fd348SMartin MatuskaOBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512bw.o := y
504716fd348SMartin MatuskaOBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512f.o := y
505716fd348SMartin Matuska
506716fd348SMartin Matuskaifeq ($(CONFIG_ALTIVEC),y)
507716fd348SMartin Matuska$(obj)/zfs/vdev_raidz_math_powerpc_altivec.o : c_flags += -maltivec
508eda14cbcSMatt Macyendif
509