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