]> git.proxmox.com Git - mirror_zfs.git/blame - module/Kbuild.in
udev: zvol_id: simplify/modernise
[mirror_zfs.git] / module / Kbuild.in
CommitLineData
71504277
AS
1# When integrated in to a monolithic kernel the spl module must appear
2# first. This ensures its module initialization function is run before
3# any of the other module initialization functions which depend on it.
71504277
AS
4
5ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
ae7b167a 6ZFS_MODULE_CFLAGS += -Wmissing-prototypes
71504277
AS
7ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @NO_FORMAT_ZERO_LENGTH@
8
9ifneq ($(KBUILD_EXTMOD),)
10zfs_include = @abs_top_srcdir@/include
ad9e7676
AZ
11icp_include = @abs_srcdir@/icp/include
12zstd_include = @abs_srcdir@/zstd/include
71504277 13ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
109d2c93 14ZFS_MODULE_CFLAGS += -I@abs_top_builddir@/include
ad9e7676
AZ
15src = @abs_srcdir@
16obj = @abs_builddir@
71504277
AS
17else
18zfs_include = $(srctree)/include/zfs
ad9e7676
AZ
19icp_include = $(srctree)/$(src)/icp/include
20zstd_include = $(srctree)/$(src)/zstd/include
71504277
AS
21ZFS_MODULE_CFLAGS += -include $(zfs_include)/zfs_config.h
22endif
23
24ZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/kernel
25ZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/spl
26ZFS_MODULE_CFLAGS += -I$(zfs_include)/os/linux/zfs
27ZFS_MODULE_CFLAGS += -I$(zfs_include)
28ZFS_MODULE_CPPFLAGS += -D_KERNEL
29ZFS_MODULE_CPPFLAGS += @KERNEL_DEBUG_CPPFLAGS@
30
31ifneq ($(KBUILD_EXTMOD),)
32@CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include
33@CONFIG_QAT_TRUE@KBUILD_EXTRA_SYMBOLS += @QAT_SYMBOLS@
34endif
35
ad9e7676
AZ
36asflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
37ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
38
39# Suppress unused-value warnings in sparc64 architecture headers
40ccflags-$(CONFIG_SPARC64) += -Wno-unused-value
41
42
43obj-$(CONFIG_ZFS) := spl.o zfs.o
44
45SPL_OBJS := \
46 spl-atomic.o \
47 spl-condvar.o \
48 spl-cred.o \
49 spl-err.o \
50 spl-generic.o \
51 spl-kmem-cache.o \
52 spl-kmem.o \
53 spl-kstat.o \
54 spl-proc.o \
55 spl-procfs-list.o \
56 spl-taskq.o \
57 spl-thread.o \
58 spl-trace.o \
59 spl-tsd.o \
60 spl-vmem.o \
61 spl-xdr.o \
62 spl-zlib.o
63
64spl-objs += $(addprefix os/linux/spl/,$(SPL_OBJS))
65
66zfs-objs += avl/avl.o
67
68ICP_OBJS := \
69 algs/aes/aes_impl.o \
70 algs/aes/aes_impl_generic.o \
71 algs/aes/aes_modes.o \
72 algs/edonr/edonr.o \
73 algs/modes/cbc.o \
74 algs/modes/ccm.o \
75 algs/modes/ctr.o \
76 algs/modes/ecb.o \
77 algs/modes/gcm.o \
78 algs/modes/gcm_generic.o \
79 algs/modes/modes.o \
80 algs/sha2/sha2.o \
81 algs/skein/skein.o \
82 algs/skein/skein_block.o \
83 algs/skein/skein_iv.o \
84 api/kcf_cipher.o \
85 api/kcf_ctxops.o \
86 api/kcf_mac.o \
87 core/kcf_callprov.o \
88 core/kcf_mech_tabs.o \
89 core/kcf_prov_lib.o \
90 core/kcf_prov_tabs.o \
91 core/kcf_sched.o \
92 illumos-crypto.o \
93 io/aes.o \
94 io/sha2_mod.o \
95 io/skein_mod.o \
96 spi/kcf_spi.o
97
98ICP_OBJS_X86_64 := \
99 asm-x86_64/aes/aes_aesni.o \
100 asm-x86_64/aes/aes_amd64.o \
101 asm-x86_64/aes/aeskey.o \
102 asm-x86_64/modes/aesni-gcm-x86_64.o \
103 asm-x86_64/modes/gcm_pclmulqdq.o \
104 asm-x86_64/modes/ghash-x86_64.o \
105 asm-x86_64/sha2/sha256_impl.o \
106 asm-x86_64/sha2/sha512_impl.o
107
108ICP_OBJS_X86 := \
109 algs/aes/aes_impl_aesni.o \
110 algs/aes/aes_impl_x86-64.o \
111 algs/modes/gcm_pclmulqdq.o
112
113zfs-objs += $(addprefix icp/,$(ICP_OBJS))
114zfs-$(CONFIG_X86) += $(addprefix icp/,$(ICP_OBJS_X86))
115zfs-$(CONFIG_X86_64) += $(addprefix icp/,$(ICP_OBJS_X86_64))
116
117$(addprefix $(obj)/icp/,$(ICP_OBJS) $(ICP_OBJS_X86) $(ICP_OBJS_X86_64)) : asflags-y += -I$(icp_include)
118$(addprefix $(obj)/icp/,$(ICP_OBJS) $(ICP_OBJS_X86) $(ICP_OBJS_X86_64)) : ccflags-y += -I$(icp_include)
119
120# Suppress objtool "can't find jump dest instruction at" warnings. They
121# are caused by the constants which are defined in the text section of the
122# assembly file using .byte instructions (e.g. bswap_mask). The objtool
123# utility tries to interpret them as opcodes and obviously fails doing so.
124OBJECT_FILES_NON_STANDARD_aesni-gcm-x86_64.o := y
125OBJECT_FILES_NON_STANDARD_ghash-x86_64.o := y
126# Suppress objtool "unsupported stack pointer realignment" warnings. We are
127# not using a DRAP register while aligning the stack to a 64 byte boundary.
128# See #6950 for the reasoning.
129OBJECT_FILES_NON_STANDARD_sha256_impl.o := y
130OBJECT_FILES_NON_STANDARD_sha512_impl.o := y
131
132
133LUA_OBJS := \
134 lapi.o \
135 lauxlib.o \
136 lbaselib.o \
137 lcode.o \
138 lcompat.o \
139 lcorolib.o \
140 lctype.o \
141 ldebug.o \
142 ldo.o \
143 lfunc.o \
144 lgc.o \
145 llex.o \
146 lmem.o \
147 lobject.o \
148 lopcodes.o \
149 lparser.o \
150 lstate.o \
151 lstring.o \
152 lstrlib.o \
153 ltable.o \
154 ltablib.o \
155 ltm.o \
156 lvm.o \
157 lzio.o \
158 setjmp/setjmp.o
159
160zfs-objs += $(addprefix lua/,$(LUA_OBJS))
161
162
163NVPAIR_OBJS := \
164 fnvpair.o \
165 nvpair.o \
166 nvpair_alloc_fixed.o \
167 nvpair_alloc_spl.o
168
169zfs-objs += $(addprefix nvpair/,$(NVPAIR_OBJS))
170
171
172UNICODE_OBJS := \
173 u8_textprep.o \
174 uconv.o
175
176zfs-objs += $(addprefix unicode/,$(UNICODE_OBJS))
177
178
179ZCOMMON_OBJS := \
180 cityhash.o \
181 zfeature_common.o \
182 zfs_comutil.o \
183 zfs_deleg.o \
184 zfs_fletcher.o \
185 zfs_fletcher_superscalar.o \
186 zfs_fletcher_superscalar4.o \
187 zfs_namecheck.o \
188 zfs_prop.o \
189 zpool_prop.o \
190 zprop_common.o
191
192ZCOMMON_OBJS_X86 := \
193 zfs_fletcher_avx512.o \
194 zfs_fletcher_intel.o \
195 zfs_fletcher_sse.o
196
197ZCOMMON_OBJS_ARM64 := \
198 zfs_fletcher_aarch64_neon.o
199
200zfs-objs += $(addprefix zcommon/,$(ZCOMMON_OBJS))
201zfs-$(CONFIG_X86) += $(addprefix zcommon/,$(ZCOMMON_OBJS_X86))
202zfs-$(CONFIG_ARM64) += $(addprefix zcommon/,$(ZCOMMON_OBJS_ARM64))
203
204
205# Zstd uses -O3 by default, so we should follow
206ZFS_ZSTD_FLAGS := -O3
207
208# -fno-tree-vectorize gets set for gcc in zstd/common/compiler.h
209# Set it for other compilers, too.
210ZFS_ZSTD_FLAGS += -fno-tree-vectorize
211
212# SSE register return with SSE disabled if -march=znverX is passed
213ZFS_ZSTD_FLAGS += -U__BMI__
214
215# Quiet warnings about frame size due to unused code in unmodified zstd lib
216ZFS_ZSTD_FLAGS += -Wframe-larger-than=20480
217
218ZSTD_OBJS := \
219 zfs_zstd.o \
220 zstd_sparc.o
221
222ZSTD_UPSTREAM_OBJS := \
223 lib/common/entropy_common.o \
224 lib/common/error_private.o \
225 lib/common/fse_decompress.o \
226 lib/common/pool.o \
227 lib/common/zstd_common.o \
228 lib/compress/fse_compress.o \
229 lib/compress/hist.o \
230 lib/compress/huf_compress.o \
231 lib/compress/zstd_compress.o \
232 lib/compress/zstd_compress_literals.o \
233 lib/compress/zstd_compress_sequences.o \
234 lib/compress/zstd_compress_superblock.o \
235 lib/compress/zstd_double_fast.o \
236 lib/compress/zstd_fast.o \
237 lib/compress/zstd_lazy.o \
238 lib/compress/zstd_ldm.o \
239 lib/compress/zstd_opt.o \
240 lib/decompress/huf_decompress.o \
241 lib/decompress/zstd_ddict.o \
242 lib/decompress/zstd_decompress.o \
243 lib/decompress/zstd_decompress_block.o
244
245zfs-objs += $(addprefix zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS))
246
247# Disable aarch64 neon SIMD instructions for kernel mode
248$(addprefix $(obj)/zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS)) : ccflags-y += -I$(zstd_include) $(ZFS_ZSTD_FLAGS)
249$(addprefix $(obj)/zstd/,$(ZSTD_OBJS) $(ZSTD_UPSTREAM_OBJS)) : asflags-y += -I$(zstd_include)
250$(addprefix $(obj)/zstd/,$(ZSTD_UPSTREAM_OBJS)) : ccflags-y += -include $(zstd_include)/aarch64_compat.h -include $(zstd_include)/zstd_compat_wrapper.h -Wp,-w
251$(obj)/zstd/zfs_zstd.o : ccflags-y += -include $(zstd_include)/zstd_compat_wrapper.h
252
253
254ZFS_OBJS := \
255 abd.o \
256 aggsum.o \
257 arc.o \
258 blkptr.o \
259 bplist.o \
260 bpobj.o \
261 bptree.o \
262 bqueue.o \
263 btree.o \
264 dataset_kstats.o \
265 dbuf.o \
266 dbuf_stats.o \
267 ddt.o \
268 ddt_zap.o \
269 dmu.o \
270 dmu_diff.o \
271 dmu_object.o \
272 dmu_objset.o \
273 dmu_recv.o \
274 dmu_redact.o \
275 dmu_send.o \
276 dmu_traverse.o \
277 dmu_tx.o \
278 dmu_zfetch.o \
279 dnode.o \
280 dnode_sync.o \
281 dsl_bookmark.o \
282 dsl_crypt.o \
283 dsl_dataset.o \
284 dsl_deadlist.o \
285 dsl_deleg.o \
286 dsl_destroy.o \
287 dsl_dir.o \
288 dsl_pool.o \
289 dsl_prop.o \
290 dsl_scan.o \
291 dsl_synctask.o \
292 dsl_userhold.o \
293 edonr_zfs.o \
294 fm.o \
295 gzip.o \
296 hkdf.o \
297 lz4.o \
298 lz4_zfs.o \
299 lzjb.o \
300 metaslab.o \
301 mmp.o \
302 multilist.o \
303 objlist.o \
304 pathname.o \
305 range_tree.o \
306 refcount.o \
307 rrwlock.o \
308 sa.o \
309 sha256.o \
310 skein_zfs.o \
311 spa.o \
312 spa_boot.o \
313 spa_checkpoint.o \
314 spa_config.o \
315 spa_errlog.o \
316 spa_history.o \
317 spa_log_spacemap.o \
318 spa_misc.o \
319 spa_stats.o \
320 space_map.o \
321 space_reftree.o \
322 txg.o \
323 uberblock.o \
324 unique.o \
325 vdev.o \
326 vdev_cache.o \
327 vdev_draid.o \
328 vdev_draid_rand.o \
329 vdev_indirect.o \
330 vdev_indirect_births.o \
331 vdev_indirect_mapping.o \
332 vdev_initialize.o \
333 vdev_label.o \
334 vdev_mirror.o \
335 vdev_missing.o \
336 vdev_queue.o \
337 vdev_raidz.o \
338 vdev_raidz_math.o \
339 vdev_raidz_math_scalar.o \
340 vdev_rebuild.o \
341 vdev_removal.o \
342 vdev_root.o \
343 vdev_trim.o \
344 zap.o \
345 zap_leaf.o \
346 zap_micro.o \
347 zcp.o \
348 zcp_get.o \
349 zcp_global.o \
350 zcp_iter.o \
351 zcp_set.o \
352 zcp_synctask.o \
353 zfeature.o \
354 zfs_byteswap.o \
355 zfs_fm.o \
356 zfs_fuid.o \
357 zfs_ioctl.o \
358 zfs_log.o \
359 zfs_onexit.o \
360 zfs_quota.o \
361 zfs_ratelimit.o \
362 zfs_replay.o \
363 zfs_rlock.o \
364 zfs_sa.o \
365 zfs_vnops.o \
366 zil.o \
367 zio.o \
368 zio_checksum.o \
369 zio_compress.o \
370 zio_inject.o \
371 zle.o \
372 zrlock.o \
373 zthr.o \
374 zvol.o
375
376ZFS_OBJS_OS := \
377 abd_os.o \
378 arc_os.o \
379 mmp_os.o \
380 policy.o \
381 qat.o \
382 qat_compress.o \
383 qat_crypt.o \
384 spa_misc_os.o \
385 trace.o \
386 vdev_disk.o \
387 vdev_file.o \
388 zfs_acl.o \
389 zfs_ctldir.o \
390 zfs_debug.o \
391 zfs_dir.o \
392 zfs_file_os.o \
393 zfs_ioctl_os.o \
394 zfs_racct.o \
395 zfs_sysfs.o \
396 zfs_uio.o \
397 zfs_vfsops.o \
398 zfs_vnops_os.o \
399 zfs_znode.o \
400 zio_crypt.o \
401 zpl_ctldir.o \
402 zpl_export.o \
403 zpl_file.o \
404 zpl_inode.o \
405 zpl_super.o \
406 zpl_xattr.o \
407 zvol_os.o
408
409ZFS_OBJS_X86 := \
410 vdev_raidz_math_avx2.o \
411 vdev_raidz_math_avx512bw.o \
412 vdev_raidz_math_avx512f.o \
413 vdev_raidz_math_sse2.o \
414 vdev_raidz_math_ssse3.o
415
416ZFS_OBJS_ARM64 := \
417 vdev_raidz_math_aarch64_neon.o \
418 vdev_raidz_math_aarch64_neonx2.o
419
420ZFS_OBJS_PPC_PPC64 := \
421 vdev_raidz_math_powerpc_altivec.o
422
423zfs-objs += $(addprefix zfs/,$(ZFS_OBJS)) $(addprefix os/linux/zfs/,$(ZFS_OBJS_OS))
424zfs-$(CONFIG_X86) += $(addprefix zfs/,$(ZFS_OBJS_X86))
425zfs-$(CONFIG_ARM64) += $(addprefix zfs/,$(ZFS_OBJS_ARM64))
426zfs-$(CONFIG_PPC) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64))
427zfs-$(CONFIG_PPC64) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64))
428
429# Suppress incorrect warnings from versions of objtool which are not
430# aware of x86 EVEX prefix instructions used for AVX512.
431OBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512bw.o := y
432OBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512f.o := y
71504277 433
ad9e7676
AZ
434ifeq ($(CONFIG_ALTIVEC),y)
435$(obj)/zfs/vdev_raidz_math_powerpc_altivec.o : c_flags += -maltivec
71504277 436endif