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