]>
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 | ||
31 | ifneq ($(KBUILD_EXTMOD),) | |
32 | @CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include | |
33 | @CONFIG_QAT_TRUE@KBUILD_EXTRA_SYMBOLS += @QAT_SYMBOLS@ | |
34 | endif | |
35 | ||
ad9e7676 AZ |
36 | asflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) |
37 | ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) | |
38 | ||
39 | # Suppress unused-value warnings in sparc64 architecture headers | |
40 | ccflags-$(CONFIG_SPARC64) += -Wno-unused-value | |
41 | ||
42 | ||
43 | obj-$(CONFIG_ZFS) := spl.o zfs.o | |
44 | ||
45 | SPL_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 | ||
64 | spl-objs += $(addprefix os/linux/spl/,$(SPL_OBJS)) | |
65 | ||
66 | zfs-objs += avl/avl.o | |
67 | ||
68 | ICP_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 | ||
98 | ICP_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 | ||
108 | ICP_OBJS_X86 := \ | |
109 | algs/aes/aes_impl_aesni.o \ | |
110 | algs/aes/aes_impl_x86-64.o \ | |
111 | algs/modes/gcm_pclmulqdq.o | |
112 | ||
113 | zfs-objs += $(addprefix icp/,$(ICP_OBJS)) | |
114 | zfs-$(CONFIG_X86) += $(addprefix icp/,$(ICP_OBJS_X86)) | |
115 | zfs-$(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. | |
124 | OBJECT_FILES_NON_STANDARD_aesni-gcm-x86_64.o := y | |
125 | OBJECT_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. | |
129 | OBJECT_FILES_NON_STANDARD_sha256_impl.o := y | |
130 | OBJECT_FILES_NON_STANDARD_sha512_impl.o := y | |
131 | ||
132 | ||
133 | LUA_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 | ||
160 | zfs-objs += $(addprefix lua/,$(LUA_OBJS)) | |
161 | ||
162 | ||
163 | NVPAIR_OBJS := \ | |
164 | fnvpair.o \ | |
165 | nvpair.o \ | |
166 | nvpair_alloc_fixed.o \ | |
167 | nvpair_alloc_spl.o | |
168 | ||
169 | zfs-objs += $(addprefix nvpair/,$(NVPAIR_OBJS)) | |
170 | ||
171 | ||
172 | UNICODE_OBJS := \ | |
173 | u8_textprep.o \ | |
174 | uconv.o | |
175 | ||
176 | zfs-objs += $(addprefix unicode/,$(UNICODE_OBJS)) | |
177 | ||
178 | ||
179 | ZCOMMON_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 | ||
192 | ZCOMMON_OBJS_X86 := \ | |
193 | zfs_fletcher_avx512.o \ | |
194 | zfs_fletcher_intel.o \ | |
195 | zfs_fletcher_sse.o | |
196 | ||
197 | ZCOMMON_OBJS_ARM64 := \ | |
198 | zfs_fletcher_aarch64_neon.o | |
199 | ||
200 | zfs-objs += $(addprefix zcommon/,$(ZCOMMON_OBJS)) | |
201 | zfs-$(CONFIG_X86) += $(addprefix zcommon/,$(ZCOMMON_OBJS_X86)) | |
202 | zfs-$(CONFIG_ARM64) += $(addprefix zcommon/,$(ZCOMMON_OBJS_ARM64)) | |
203 | ||
204 | ||
205 | # Zstd uses -O3 by default, so we should follow | |
206 | ZFS_ZSTD_FLAGS := -O3 | |
207 | ||
208 | # -fno-tree-vectorize gets set for gcc in zstd/common/compiler.h | |
209 | # Set it for other compilers, too. | |
210 | ZFS_ZSTD_FLAGS += -fno-tree-vectorize | |
211 | ||
212 | # SSE register return with SSE disabled if -march=znverX is passed | |
213 | ZFS_ZSTD_FLAGS += -U__BMI__ | |
214 | ||
215 | # Quiet warnings about frame size due to unused code in unmodified zstd lib | |
216 | ZFS_ZSTD_FLAGS += -Wframe-larger-than=20480 | |
217 | ||
218 | ZSTD_OBJS := \ | |
219 | zfs_zstd.o \ | |
220 | zstd_sparc.o | |
221 | ||
222 | ZSTD_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 | ||
245 | zfs-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 | ||
254 | ZFS_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 | ||
376 | ZFS_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 | ||
409 | ZFS_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 | ||
416 | ZFS_OBJS_ARM64 := \ | |
417 | vdev_raidz_math_aarch64_neon.o \ | |
418 | vdev_raidz_math_aarch64_neonx2.o | |
419 | ||
420 | ZFS_OBJS_PPC_PPC64 := \ | |
421 | vdev_raidz_math_powerpc_altivec.o | |
422 | ||
423 | zfs-objs += $(addprefix zfs/,$(ZFS_OBJS)) $(addprefix os/linux/zfs/,$(ZFS_OBJS_OS)) | |
424 | zfs-$(CONFIG_X86) += $(addprefix zfs/,$(ZFS_OBJS_X86)) | |
425 | zfs-$(CONFIG_ARM64) += $(addprefix zfs/,$(ZFS_OBJS_ARM64)) | |
426 | zfs-$(CONFIG_PPC) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64)) | |
427 | zfs-$(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. | |
431 | OBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512bw.o := y | |
432 | OBJECT_FILES_NON_STANDARD_vdev_raidz_math_avx512f.o := y | |
71504277 | 433 | |
ad9e7676 AZ |
434 | ifeq ($(CONFIG_ALTIVEC),y) |
435 | $(obj)/zfs/vdev_raidz_math_powerpc_altivec.o : c_flags += -maltivec | |
71504277 | 436 | endif |