xref: /freebsd/sys/contrib/openzfs/module/Makefile.bsd (revision 071ab5a1f3cbfd29c8fbec27f7e619418adaf074)
1eda14cbcSMatt Macy.if !defined(WITH_CTF)
2eda14cbcSMatt MacyWITH_CTF=1
3eda14cbcSMatt Macy.endif
4eda14cbcSMatt Macy
5eda14cbcSMatt Macy.include <bsd.sys.mk>
6eda14cbcSMatt Macy
7eda14cbcSMatt MacySRCDIR=${.CURDIR}
8eda14cbcSMatt MacyINCDIR=${.CURDIR:H}/include
9eda14cbcSMatt Macy
10eda14cbcSMatt MacyKMOD=	openzfs
11eda14cbcSMatt Macy
12eda14cbcSMatt Macy.PATH:	${SRCDIR}/avl \
13eda14cbcSMatt Macy	${SRCDIR}/lua \
14eda14cbcSMatt Macy	${SRCDIR}/nvpair \
152a58b312SMartin Matuska	${SRCDIR}/icp/algs/blake3 \
16dae17134SMartin Matuska	${SRCDIR}/icp/algs/edonr \
172a58b312SMartin Matuska	${SRCDIR}/icp/algs/sha2 \
182a58b312SMartin Matuska	${SRCDIR}/icp/asm-aarch64/blake3 \
192a58b312SMartin Matuska	${SRCDIR}/icp/asm-aarch64/sha2 \
202a58b312SMartin Matuska	${SRCDIR}/icp/asm-arm/sha2 \
212a58b312SMartin Matuska	${SRCDIR}/icp/asm-ppc64/sha2 \
222a58b312SMartin Matuska	${SRCDIR}/icp/asm-ppc64/blake3 \
232a58b312SMartin Matuska	${SRCDIR}/icp/asm-x86_64/blake3 \
242a58b312SMartin Matuska	${SRCDIR}/icp/asm-x86_64/sha2 \
25eda14cbcSMatt Macy	${SRCDIR}/os/freebsd/spl \
26eda14cbcSMatt Macy	${SRCDIR}/os/freebsd/zfs \
27eda14cbcSMatt Macy	${SRCDIR}/unicode \
28eda14cbcSMatt Macy	${SRCDIR}/zcommon \
29eda14cbcSMatt Macy	${SRCDIR}/zfs \
30eda14cbcSMatt Macy	${SRCDIR}/zstd \
31c03c5b1cSMartin Matuska	${SRCDIR}/zstd/lib/common \
32c03c5b1cSMartin Matuska	${SRCDIR}/zstd/lib/compress \
33c03c5b1cSMartin Matuska	${SRCDIR}/zstd/lib/decompress
34eda14cbcSMatt Macy
35eda14cbcSMatt MacyCFLAGS+= -I${INCDIR}
362a58b312SMartin MatuskaCFLAGS+= -I${SRCDIR}/icp/include
37eda14cbcSMatt MacyCFLAGS+= -I${INCDIR}/os/freebsd
38eda14cbcSMatt MacyCFLAGS+= -I${INCDIR}/os/freebsd/spl
39eda14cbcSMatt MacyCFLAGS+= -I${INCDIR}/os/freebsd/zfs
40eda14cbcSMatt MacyCFLAGS+= -I${SRCDIR}/zstd/include
41eda14cbcSMatt MacyCFLAGS+= -include ${INCDIR}/os/freebsd/spl/sys/ccompile.h
422a58b312SMartin MatuskaCFLAGS+= -I${.CURDIR}
43eda14cbcSMatt Macy
44eda14cbcSMatt MacyCFLAGS+= -D__KERNEL__ -DFREEBSD_NAMECACHE -DBUILDING_ZFS -D__BSD_VISIBLE=1 \
45eda14cbcSMatt Macy	-DHAVE_UIO_ZEROCOPY -DWITHOUT_NETDUMP -D__KERNEL -D_SYS_CONDVAR_H_ \
462a58b312SMartin Matuska	-D_SYS_VMEM_H_ -DKDTRACE_HOOKS -DCOMPAT_FREEBSD11
47eda14cbcSMatt Macy
48eda14cbcSMatt Macy.if ${MACHINE_ARCH} == "amd64"
491f1e2261SMartin MatuskaCFLAGS+= -D__x86_64 -DHAVE_SSE2 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 \
502a58b312SMartin Matuska	-DHAVE_AVX -DHAVE_AVX2 -DHAVE_AVX512F -DHAVE_AVX512VL -DHAVE_AVX512BW
51eda14cbcSMatt Macy.endif
52eda14cbcSMatt Macy
53eda14cbcSMatt Macy.if defined(WITH_DEBUG) && ${WITH_DEBUG} == "true"
547877fdebSMatt MacyCFLAGS+= -DZFS_DEBUG -g
557877fdebSMatt Macy.if defined(WITH_INVARIANTS) && ${WITH_INVARIANTS} == "true"
567877fdebSMatt Macy CFLAGS+= -DINVARIANTS -DWITNESS -DOPENSOLARIS_WITNESS
577877fdebSMatt Macy.endif
587877fdebSMatt Macy.if defined(WITH_O0) && ${WITH_O0} == "true"
597877fdebSMatt Macy CFLAGS+= -O0
607877fdebSMatt Macy.endif
61eda14cbcSMatt Macy.else
62eda14cbcSMatt MacyCFLAGS += -DNDEBUG
63eda14cbcSMatt Macy.endif
64eda14cbcSMatt Macy
65eda14cbcSMatt Macy.if defined(WITH_VFS_DEBUG) && ${WITH_VFS_DEBUG} == "true"
66eda14cbcSMatt Macy# kernel must also be built with this option for this to work
67eda14cbcSMatt MacyCFLAGS+= -DDEBUG_VFS_LOCKS
68eda14cbcSMatt Macy.endif
69eda14cbcSMatt Macy
70eda14cbcSMatt Macy.if defined(WITH_GCOV) && ${WITH_GCOV} == "true"
71eda14cbcSMatt MacyCFLAGS+=	 -fprofile-arcs -ftest-coverage
72eda14cbcSMatt Macy.endif
73eda14cbcSMatt Macy
74eda14cbcSMatt MacyDEBUG_FLAGS=-g
75eda14cbcSMatt Macy
76eda14cbcSMatt Macy.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "powerpc" || \
772a58b312SMartin Matuska	${MACHINE_ARCH} == "powerpcspe" || ${MACHINE_ARCH} == "arm"
78eda14cbcSMatt MacyCFLAGS+= -DBITS_PER_LONG=32
79eda14cbcSMatt Macy.else
80eda14cbcSMatt MacyCFLAGS+= -DBITS_PER_LONG=64
81eda14cbcSMatt Macy.endif
82eda14cbcSMatt Macy
83eda14cbcSMatt MacySRCS=	vnode_if.h device_if.h bus_if.h
84eda14cbcSMatt Macy
85eda14cbcSMatt Macy#avl
86eda14cbcSMatt MacySRCS+=	avl.c
87eda14cbcSMatt Macy
881f1e2261SMartin Matuska#icp/algs/blake3
891f1e2261SMartin MatuskaSRCS+=	blake3.c \
901f1e2261SMartin Matuska	blake3_generic.c \
912a58b312SMartin Matuska	blake3_impl.c
921f1e2261SMartin Matuska
93*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "aarch64"
941f1e2261SMartin Matuska#icp/asm-aarch64/blake3
951f1e2261SMartin MatuskaSRCS+=	b3_aarch64_sse2.S \
961f1e2261SMartin Matuska	b3_aarch64_sse41.S
97*071ab5a1SMartin Matuska.endif
981f1e2261SMartin Matuska
99*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "powerpc64le"
1001f1e2261SMartin Matuska#icp/asm-ppc64/blake3
1011f1e2261SMartin MatuskaSRCS+=	b3_ppc64le_sse2.S \
1021f1e2261SMartin Matuska	b3_ppc64le_sse41.S
103*071ab5a1SMartin Matuska.endif
1041f1e2261SMartin Matuska
105*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
1061f1e2261SMartin Matuska#icp/asm-x86_64/blake3
1071f1e2261SMartin MatuskaSRCS+=	blake3_avx2.S \
1081f1e2261SMartin Matuska	blake3_avx512.S \
1091f1e2261SMartin Matuska	blake3_sse2.S \
1101f1e2261SMartin Matuska	blake3_sse41.S
111*071ab5a1SMartin Matuska.endif
1121f1e2261SMartin Matuska
1131719886fSMartin Matuska#icp/algs/edonr
1141719886fSMartin MatuskaSRCS+=	edonr.c
1151719886fSMartin Matuska
1162a58b312SMartin Matuska#icp/algs/sha2
1171719886fSMartin MatuskaSRCS+=	sha256_impl.c \
1181719886fSMartin Matuska	sha2_generic.c \
1192a58b312SMartin Matuska	sha512_impl.c
1202a58b312SMartin Matuska
121*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "armv7"
1222a58b312SMartin Matuska#icp/asm-arm/sha2
1232a58b312SMartin MatuskaSRCS+=	sha256-armv7.S \
1242a58b312SMartin Matuska	sha512-armv7.S
125*071ab5a1SMartin Matuska.endif
1262a58b312SMartin Matuska
127*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "aarch64"
1282a58b312SMartin Matuska#icp/asm-aarch64/sha2
1292a58b312SMartin MatuskaSRCS+=	sha256-armv8.S \
1302a58b312SMartin Matuska	sha512-armv8.S
131*071ab5a1SMartin Matuska.endif
1322a58b312SMartin Matuska
133*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "powerpc64" || ${MACHINE_ARCH} == "powerpc64le"
1342a58b312SMartin Matuska#icp/asm-ppc64/sha2
1352a58b312SMartin MatuskaSRCS+=	sha256-p8.S \
1362a58b312SMartin Matuska	sha256-ppc.S \
1371719886fSMartin Matuska	sha512-p8.S \
1382a58b312SMartin Matuska	sha512-ppc.S
139*071ab5a1SMartin Matuska.endif
1402a58b312SMartin Matuska
141*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
1422a58b312SMartin Matuska#icp/asm-x86_64/sha2
1432a58b312SMartin MatuskaSRCS+=	sha256-x86_64.S \
1442a58b312SMartin Matuska	sha512-x86_64.S
145*071ab5a1SMartin Matuska.endif
1462a58b312SMartin Matuska
147eda14cbcSMatt Macy#lua
148eda14cbcSMatt MacySRCS+=	lapi.c \
149eda14cbcSMatt Macy	lauxlib.c \
150eda14cbcSMatt Macy	lbaselib.c \
151eda14cbcSMatt Macy	lcode.c \
152eda14cbcSMatt Macy	lcompat.c \
153eda14cbcSMatt Macy	lcorolib.c \
154eda14cbcSMatt Macy	lctype.c \
155eda14cbcSMatt Macy	ldebug.c \
156eda14cbcSMatt Macy	ldo.c \
157eda14cbcSMatt Macy	lfunc.c \
158eda14cbcSMatt Macy	lgc.c \
159eda14cbcSMatt Macy	llex.c \
160eda14cbcSMatt Macy	lmem.c \
161eda14cbcSMatt Macy	lobject.c \
162eda14cbcSMatt Macy	lopcodes.c \
163eda14cbcSMatt Macy	lparser.c \
164eda14cbcSMatt Macy	lstate.c \
165eda14cbcSMatt Macy	lstring.c \
166eda14cbcSMatt Macy	lstrlib.c \
167eda14cbcSMatt Macy	ltable.c \
168eda14cbcSMatt Macy	ltablib.c \
169eda14cbcSMatt Macy	ltm.c \
170eda14cbcSMatt Macy	lvm.c \
171eda14cbcSMatt Macy	lzio.c
172eda14cbcSMatt Macy
173eda14cbcSMatt Macy#nvpair
1741719886fSMartin MatuskaSRCS+=	fnvpair.c \
1751719886fSMartin Matuska	nvpair.c \
1761719886fSMartin Matuska	nvpair_alloc_fixed.c \
1771719886fSMartin Matuska	nvpair_alloc_spl.c
178eda14cbcSMatt Macy
179eda14cbcSMatt Macy#os/freebsd/spl
180eda14cbcSMatt MacySRCS+=	acl_common.c \
181eda14cbcSMatt Macy	callb.c \
182eda14cbcSMatt Macy	list.c \
183eda14cbcSMatt Macy	spl_acl.c \
184eda14cbcSMatt Macy	spl_cmn_err.c \
185eda14cbcSMatt Macy	spl_dtrace.c \
186eda14cbcSMatt Macy	spl_kmem.c \
187eda14cbcSMatt Macy	spl_kstat.c \
188eda14cbcSMatt Macy	spl_misc.c \
189eda14cbcSMatt Macy	spl_policy.c \
1907877fdebSMatt Macy	spl_procfs_list.c \
191eda14cbcSMatt Macy	spl_string.c \
192eda14cbcSMatt Macy	spl_sunddi.c \
193eda14cbcSMatt Macy	spl_sysevent.c \
194eda14cbcSMatt Macy	spl_taskq.c \
195eda14cbcSMatt Macy	spl_uio.c \
196eda14cbcSMatt Macy	spl_vfs.c \
197eda14cbcSMatt Macy	spl_vm.c \
1987877fdebSMatt Macy	spl_zlib.c \
1997877fdebSMatt Macy	spl_zone.c
200eda14cbcSMatt Macy
201eda14cbcSMatt Macy.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "powerpc" || \
2022a58b312SMartin Matuska	${MACHINE_ARCH} == "powerpcspe" || ${MACHINE_ARCH} == "arm"
203eda14cbcSMatt MacySRCS+= spl_atomic.c
204eda14cbcSMatt Macy.endif
205eda14cbcSMatt Macy
206eda14cbcSMatt Macy#os/freebsd/zfs
207eda14cbcSMatt MacySRCS+=	abd_os.c \
2087877fdebSMatt Macy	arc_os.c \
209eda14cbcSMatt Macy	crypto_os.c \
210eda14cbcSMatt Macy	dmu_os.c \
211c7046f76SMartin Matuska	event_os.c \
212eda14cbcSMatt Macy	hkdf.c \
213eda14cbcSMatt Macy	kmod_core.c \
214eda14cbcSMatt Macy	spa_os.c \
215eda14cbcSMatt Macy	sysctl_os.c \
216eda14cbcSMatt Macy	vdev_geom.c \
2177877fdebSMatt Macy	vdev_label_os.c \
218eda14cbcSMatt Macy	zfs_acl.c \
219eda14cbcSMatt Macy	zfs_ctldir.c \
2207877fdebSMatt Macy	zfs_debug.c \
221eda14cbcSMatt Macy	zfs_dir.c \
2221719886fSMartin Matuska	zfs_file_os.c \
223eda14cbcSMatt Macy	zfs_ioctl_compat.c \
224eda14cbcSMatt Macy	zfs_ioctl_os.c \
225ba27dd8bSMartin Matuska	zfs_racct.c \
226eda14cbcSMatt Macy	zfs_vfsops.c \
2277877fdebSMatt Macy	zfs_vnops_os.c \
2287a7741afSMartin Matuska	zfs_znode_os.c \
229eda14cbcSMatt Macy	zio_crypt.c \
230eda14cbcSMatt Macy	zvol_os.c
231eda14cbcSMatt Macy
232eda14cbcSMatt Macy#unicode
2335c65a0a9SMartin MatuskaSRCS+= 	u8_textprep.c
234eda14cbcSMatt Macy
235eda14cbcSMatt Macy#zcommon
2361719886fSMartin MatuskaSRCS+=	cityhash.c \
2371719886fSMartin Matuska	zfeature_common.c \
238eda14cbcSMatt Macy	zfs_comutil.c \
239eda14cbcSMatt Macy	zfs_deleg.c \
240eda14cbcSMatt Macy	zfs_fletcher_avx512.c \
2411719886fSMartin Matuska	zfs_fletcher.c \
242eda14cbcSMatt Macy	zfs_fletcher_intel.c \
243eda14cbcSMatt Macy	zfs_fletcher_sse.c \
244eda14cbcSMatt Macy	zfs_fletcher_superscalar4.c \
2451719886fSMartin Matuska	zfs_fletcher_superscalar.c \
246eda14cbcSMatt Macy	zfs_namecheck.c \
247eda14cbcSMatt Macy	zfs_prop.c \
248e2df9bb4SMartin Matuska	zfs_valstr.c \
249eda14cbcSMatt Macy	zpool_prop.c \
250eda14cbcSMatt Macy	zprop_common.c
251eda14cbcSMatt Macy
252eda14cbcSMatt Macy#zfs
253eda14cbcSMatt MacySRCS+=	abd.c \
254eda14cbcSMatt Macy	aggsum.c \
255eda14cbcSMatt Macy	arc.c \
2561f1e2261SMartin Matuska	blake3_zfs.c \
257eda14cbcSMatt Macy	blkptr.c \
258eda14cbcSMatt Macy	bplist.c \
259eda14cbcSMatt Macy	bpobj.c \
260eda14cbcSMatt Macy	bptree.c \
261eda14cbcSMatt Macy	bqueue.c \
2621719886fSMartin Matuska	brt.c \
2631719886fSMartin Matuska	btree.c \
264eda14cbcSMatt Macy	dataset_kstats.c \
2651719886fSMartin Matuska	dbuf.c \
2661719886fSMartin Matuska	dbuf_stats.c \
267eda14cbcSMatt Macy	ddt.c \
268e2df9bb4SMartin Matuska	ddt_log.c \
2694fefe1b7SMartin Matuska	ddt_stats.c \
270eda14cbcSMatt Macy	ddt_zap.c \
271eda14cbcSMatt Macy	dmu.c \
2727a7741afSMartin Matuska	dmu_direct.c \
273eda14cbcSMatt Macy	dmu_diff.c \
274eda14cbcSMatt Macy	dmu_object.c \
275eda14cbcSMatt Macy	dmu_objset.c \
276eda14cbcSMatt Macy	dmu_recv.c \
277eda14cbcSMatt Macy	dmu_redact.c \
278eda14cbcSMatt Macy	dmu_send.c \
279eda14cbcSMatt Macy	dmu_traverse.c \
280eda14cbcSMatt Macy	dmu_tx.c \
281eda14cbcSMatt Macy	dmu_zfetch.c \
282eda14cbcSMatt Macy	dnode.c \
283eda14cbcSMatt Macy	dnode_sync.c \
2841719886fSMartin Matuska	dsl_bookmark.c \
2851719886fSMartin Matuska	dsl_crypt.c \
286eda14cbcSMatt Macy	dsl_dataset.c \
287eda14cbcSMatt Macy	dsl_deadlist.c \
288eda14cbcSMatt Macy	dsl_deleg.c \
289eda14cbcSMatt Macy	dsl_destroy.c \
2901719886fSMartin Matuska	dsl_dir.c \
291eda14cbcSMatt Macy	dsl_pool.c \
292eda14cbcSMatt Macy	dsl_prop.c \
293eda14cbcSMatt Macy	dsl_scan.c \
294eda14cbcSMatt Macy	dsl_synctask.c \
295eda14cbcSMatt Macy	dsl_userhold.c \
296dae17134SMartin Matuska	edonr_zfs.c \
297eda14cbcSMatt Macy	fm.c \
298eda14cbcSMatt Macy	gzip.c \
299eda14cbcSMatt Macy	lz4.c \
300e92ffd9bSMartin Matuska	lz4_zfs.c \
3011719886fSMartin Matuska	lzjb.c \
302eda14cbcSMatt Macy	metaslab.c \
303eda14cbcSMatt Macy	mmp.c \
304eda14cbcSMatt Macy	multilist.c \
305eda14cbcSMatt Macy	objlist.c \
306eda14cbcSMatt Macy	pathname.c \
307eda14cbcSMatt Macy	range_tree.c \
308eda14cbcSMatt Macy	refcount.c \
309eda14cbcSMatt Macy	rrwlock.c \
310eda14cbcSMatt Macy	sa.c \
3112a58b312SMartin Matuska	sha2_zfs.c \
312eda14cbcSMatt Macy	skein_zfs.c \
313eda14cbcSMatt Macy	spa.c \
3141719886fSMartin Matuska	space_map.c \
3151719886fSMartin Matuska	space_reftree.c \
316eda14cbcSMatt Macy	spa_checkpoint.c \
317eda14cbcSMatt Macy	spa_config.c \
318eda14cbcSMatt Macy	spa_errlog.c \
319eda14cbcSMatt Macy	spa_history.c \
320eda14cbcSMatt Macy	spa_log_spacemap.c \
321eda14cbcSMatt Macy	spa_misc.c \
322eda14cbcSMatt Macy	spa_stats.c \
323eda14cbcSMatt Macy	txg.c \
324eda14cbcSMatt Macy	uberblock.c \
325eda14cbcSMatt Macy	unique.c \
326eda14cbcSMatt Macy	vdev.c \
3277877fdebSMatt Macy	vdev_draid.c \
3287877fdebSMatt Macy	vdev_draid_rand.c \
329d2a8fad3SMartin Matuska	vdev_file.c \
330eda14cbcSMatt Macy	vdev_indirect_births.c \
3311719886fSMartin Matuska	vdev_indirect.c \
332eda14cbcSMatt Macy	vdev_indirect_mapping.c \
333eda14cbcSMatt Macy	vdev_initialize.c \
334eda14cbcSMatt Macy	vdev_label.c \
335eda14cbcSMatt Macy	vdev_mirror.c \
336eda14cbcSMatt Macy	vdev_missing.c \
337eda14cbcSMatt Macy	vdev_queue.c \
338eda14cbcSMatt Macy	vdev_raidz.c \
339eda14cbcSMatt Macy	vdev_raidz_math_avx2.c \
340eda14cbcSMatt Macy	vdev_raidz_math_avx512bw.c \
341eda14cbcSMatt Macy	vdev_raidz_math_avx512f.c \
3421719886fSMartin Matuska	vdev_raidz_math.c \
3431719886fSMartin Matuska	vdev_raidz_math_scalar.c \
344eda14cbcSMatt Macy	vdev_raidz_math_sse2.c \
345eda14cbcSMatt Macy	vdev_raidz_math_ssse3.c \
346681ce946SMartin Matuska	vdev_rebuild.c \
347eda14cbcSMatt Macy	vdev_removal.c \
348eda14cbcSMatt Macy	vdev_root.c \
349eda14cbcSMatt Macy	vdev_trim.c \
350eda14cbcSMatt Macy	zap.c \
351eda14cbcSMatt Macy	zap_leaf.c \
352eda14cbcSMatt Macy	zap_micro.c \
353eda14cbcSMatt Macy	zcp.c \
354eda14cbcSMatt Macy	zcp_get.c \
355eda14cbcSMatt Macy	zcp_global.c \
356eda14cbcSMatt Macy	zcp_iter.c \
357eda14cbcSMatt Macy	zcp_set.c \
358eda14cbcSMatt Macy	zcp_synctask.c \
359eda14cbcSMatt Macy	zfeature.c \
360eda14cbcSMatt Macy	zfs_byteswap.c \
3611f1e2261SMartin Matuska	zfs_chksum.c \
362eda14cbcSMatt Macy	zfs_fm.c \
363eda14cbcSMatt Macy	zfs_fuid.c \
3642a58b312SMartin Matuska	zfs_impl.c \
365eda14cbcSMatt Macy	zfs_ioctl.c \
3667877fdebSMatt Macy	zfs_log.c \
367eda14cbcSMatt Macy	zfs_onexit.c \
368eda14cbcSMatt Macy	zfs_quota.c \
369eda14cbcSMatt Macy	zfs_ratelimit.c \
3707877fdebSMatt Macy	zfs_replay.c \
371eda14cbcSMatt Macy	zfs_rlock.c \
372eda14cbcSMatt Macy	zfs_sa.c \
3737877fdebSMatt Macy	zfs_vnops.c \
3747a7741afSMartin Matuska	zfs_znode.c \
375eda14cbcSMatt Macy	zil.c \
376eda14cbcSMatt Macy	zio.c \
377eda14cbcSMatt Macy	zio_checksum.c \
378eda14cbcSMatt Macy	zio_compress.c \
379eda14cbcSMatt Macy	zio_inject.c \
380eda14cbcSMatt Macy	zle.c \
381eda14cbcSMatt Macy	zrlock.c \
382eda14cbcSMatt Macy	zthr.c \
383eda14cbcSMatt Macy	zvol.c
384eda14cbcSMatt Macy
385eda14cbcSMatt Macy#zstd
3861719886fSMartin MatuskaSRCS+=	zfs_zstd.c
3871719886fSMartin Matuska
3881719886fSMartin Matuska#zstd/common
3891719886fSMartin MatuskaSRCS+=	entropy_common.c \
390c03c5b1cSMartin Matuska	error_private.c \
3912a58b312SMartin Matuska	fse_decompress.c \
3922a58b312SMartin Matuska	pool.c \
3932a58b312SMartin Matuska	xxhash.c \
3942a58b312SMartin Matuska	zstd_common.c \
3951719886fSMartin Matuska
3961719886fSMartin Matuska#zstd/compress
3971719886fSMartin MatuskaSRCS+=	fse_compress.c \
3981719886fSMartin Matuska	hist.c \
3991719886fSMartin Matuska	huf_compress.c \
400c03c5b1cSMartin Matuska	zstd_compress.c \
401c03c5b1cSMartin Matuska	zstd_compress_literals.c \
402c03c5b1cSMartin Matuska	zstd_compress_sequences.c \
403c03c5b1cSMartin Matuska	zstd_compress_superblock.c \
404c03c5b1cSMartin Matuska	zstd_double_fast.c \
405c03c5b1cSMartin Matuska	zstd_fast.c \
406c03c5b1cSMartin Matuska	zstd_lazy.c \
407c03c5b1cSMartin Matuska	zstd_ldm.c \
4082a58b312SMartin Matuska	zstd_opt.c
409c03c5b1cSMartin Matuska
4101719886fSMartin Matuska#zstd/decompress
4111719886fSMartin MatuskaSRCS+=	huf_decompress.c \
4121719886fSMartin Matuska	zstd_ddict.c \
4131719886fSMartin Matuska	zstd_decompress_block.c \
4141719886fSMartin Matuska	zstd_decompress.c
4151719886fSMartin Matuska
416eda14cbcSMatt Macybeforeinstall:
417eda14cbcSMatt Macy.if ${MK_DEBUG_FILES} != "no"
418eda14cbcSMatt Macy	mtree -eu \
419eda14cbcSMatt Macy	    -f /etc/mtree/BSD.debug.dist \
420eda14cbcSMatt Macy	    -p ${DESTDIR}/usr/lib
421eda14cbcSMatt Macy.endif
422eda14cbcSMatt Macy
423eda14cbcSMatt Macy.include <bsd.kmod.mk>
424eda14cbcSMatt Macy
4254e8d558cSMartin Matuska# Generated binary search code is particularly bad with this optimization.
4264e8d558cSMartin Matuska# Oddly, range_tree.c is not affected when unrolling is not done and dsl_scan.c
4274e8d558cSMartin Matuska# is not affected when unrolling is done.
4284e8d558cSMartin Matuska# Disable it until the following upstream issue is resolved:
4294e8d558cSMartin Matuska# https://github.com/llvm/llvm-project/issues/62790
4304e8d558cSMartin Matuska.if ${CC} == "clang"
4314e8d558cSMartin Matuska.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
4324e8d558cSMartin MatuskaCFLAGS.dsl_scan.c= -mllvm -x86-cmov-converter=false
4334e8d558cSMartin MatuskaCFLAGS.metaslab.c= -mllvm -x86-cmov-converter=false
4344e8d558cSMartin MatuskaCFLAGS.range_tree.c= -mllvm -x86-cmov-converter=false
4354e8d558cSMartin MatuskaCFLAGS.zap_micro.c= -mllvm -x86-cmov-converter=false
4364e8d558cSMartin Matuska.endif
4374e8d558cSMartin Matuska.endif
4384e8d558cSMartin Matuska
4392a58b312SMartin MatuskaCFLAGS.sysctl_os.c= -include ../zfs_config.h
4402a58b312SMartin MatuskaCFLAGS.xxhash.c+= -include ${SYSDIR}/sys/_null.h
441eda14cbcSMatt Macy
442eda14cbcSMatt MacyCFLAGS.gcc+= -Wno-pointer-to-int-cast
443eda14cbcSMatt Macy
444eda14cbcSMatt MacyCFLAGS.abd.c= -Wno-cast-qual
445eda14cbcSMatt MacyCFLAGS.ddt.c= -Wno-cast-qual
446e2df9bb4SMartin MatuskaCFLAGS.ddt_log.c= -Wno-cast-qual -Wno-pointer-arith
4474fefe1b7SMartin MatuskaCFLAGS.ddt_zap.c= -Wno-cast-qual
448eda14cbcSMatt MacyCFLAGS.dmu.c= -Wno-cast-qual
449eda14cbcSMatt MacyCFLAGS.dmu_traverse.c= -Wno-cast-qual
4502a58b312SMartin MatuskaCFLAGS.dnode.c= ${NO_WUNUSED_BUT_SET_VARIABLE}
451eda14cbcSMatt MacyCFLAGS.dsl_deadlist.c= -Wno-cast-qual
4522a58b312SMartin MatuskaCFLAGS.dsl_dir.c= -Wno-cast-qual
453eda14cbcSMatt MacyCFLAGS.dsl_prop.c= -Wno-cast-qual
454dae17134SMartin MatuskaCFLAGS.edonr.c= -Wno-cast-qual
455eda14cbcSMatt MacyCFLAGS.fm.c= -Wno-cast-qual
4562a58b312SMartin MatuskaCFLAGS.hist.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
4572a58b312SMartin MatuskaCFLAGS.lapi.c= -Wno-cast-qual
4582a58b312SMartin MatuskaCFLAGS.lcompat.c= -Wno-cast-qual
4592a58b312SMartin MatuskaCFLAGS.ldo.c= ${NO_WINFINITE_RECURSION}
4602a58b312SMartin MatuskaCFLAGS.lobject.c= -Wno-cast-qual
4612a58b312SMartin MatuskaCFLAGS.ltable.c= -Wno-cast-qual
4622a58b312SMartin MatuskaCFLAGS.lvm.c= -Wno-cast-qual
4632a58b312SMartin MatuskaCFLAGS.lz4.c= -Wno-cast-qual
464e92ffd9bSMartin MatuskaCFLAGS.lz4_zfs.c= -Wno-cast-qual
4652a58b312SMartin MatuskaCFLAGS.nvpair.c= -Wno-cast-qual -DHAVE_RPC_TYPES ${NO_WSTRINGOP_OVERREAD}
4662a58b312SMartin MatuskaCFLAGS.pool.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
4672a58b312SMartin MatuskaCFLAGS.pool.c= -U__BMI__ -fno-tree-vectorize
468eda14cbcSMatt MacyCFLAGS.spa.c= -Wno-cast-qual
469eda14cbcSMatt MacyCFLAGS.spa_misc.c= -Wno-cast-qual
4702a58b312SMartin MatuskaCFLAGS.spl_string.c= -Wno-cast-qual
4712a58b312SMartin MatuskaCFLAGS.spl_vm.c= -Wno-cast-qual
4722a58b312SMartin MatuskaCFLAGS.spl_zlib.c= -Wno-cast-qual
4732a58b312SMartin MatuskaCFLAGS.u8_textprep.c= -Wno-cast-qual
4747877fdebSMatt MacyCFLAGS.vdev_draid.c= -Wno-cast-qual
475eda14cbcSMatt MacyCFLAGS.vdev_raidz.c= -Wno-cast-qual
476eda14cbcSMatt MacyCFLAGS.vdev_raidz_math.c= -Wno-cast-qual
477eda14cbcSMatt MacyCFLAGS.vdev_raidz_math_avx2.c= -Wno-cast-qual -Wno-duplicate-decl-specifier
478eda14cbcSMatt MacyCFLAGS.vdev_raidz_math_avx512f.c= -Wno-cast-qual -Wno-duplicate-decl-specifier
4792a58b312SMartin MatuskaCFLAGS.vdev_raidz_math_scalar.c= -Wno-cast-qual
480eda14cbcSMatt MacyCFLAGS.vdev_raidz_math_sse2.c= -Wno-cast-qual -Wno-duplicate-decl-specifier
481eda14cbcSMatt MacyCFLAGS.zap_leaf.c= -Wno-cast-qual
482eda14cbcSMatt MacyCFLAGS.zap_micro.c= -Wno-cast-qual
483eda14cbcSMatt MacyCFLAGS.zcp.c= -Wno-cast-qual
4842a58b312SMartin MatuskaCFLAGS.zfs_fletcher.c= -Wno-cast-qual -Wno-pointer-arith
4852a58b312SMartin MatuskaCFLAGS.zfs_fletcher_avx512.c= -Wno-cast-qual -Wno-pointer-arith
4862a58b312SMartin MatuskaCFLAGS.zfs_fletcher_intel.c= -Wno-cast-qual -Wno-pointer-arith
4872a58b312SMartin MatuskaCFLAGS.zfs_fletcher_sse.c= -Wno-cast-qual -Wno-pointer-arith
4882a58b312SMartin MatuskaCFLAGS.zfs_fm.c= -Wno-cast-qual ${NO_WUNUSED_BUT_SET_VARIABLE}
489eda14cbcSMatt MacyCFLAGS.zfs_ioctl.c= -Wno-cast-qual
4902a58b312SMartin MatuskaCFLAGS.zfs_log.c= -Wno-cast-qual
4912a58b312SMartin MatuskaCFLAGS.zfs_vnops_os.c= -Wno-pointer-arith
4922a58b312SMartin MatuskaCFLAGS.zfs_zstd.c= -Wno-cast-qual -Wno-pointer-arith
493eda14cbcSMatt MacyCFLAGS.zil.c= -Wno-cast-qual
494eda14cbcSMatt MacyCFLAGS.zio.c= -Wno-cast-qual
4952a58b312SMartin MatuskaCFLAGS.zprop_common.c= -Wno-cast-qual
496eda14cbcSMatt MacyCFLAGS.zrlock.c= -Wno-cast-qual
4972a58b312SMartin Matuska
4982a58b312SMartin Matuska#zstd
4992a58b312SMartin MatuskaCFLAGS.entropy_common.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5002a58b312SMartin MatuskaCFLAGS.error_private.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5012a58b312SMartin MatuskaCFLAGS.fse_compress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL} ${NO_WUNUSED_BUT_SET_VARIABLE}
5022a58b312SMartin MatuskaCFLAGS.fse_decompress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5032a58b312SMartin MatuskaCFLAGS.huf_compress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5042a58b312SMartin MatuskaCFLAGS.huf_decompress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5052a58b312SMartin MatuskaCFLAGS.xxhash.c+= -U__BMI__ -fno-tree-vectorize
5062a58b312SMartin MatuskaCFLAGS.xxhash.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5072a58b312SMartin MatuskaCFLAGS.zstd.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5082a58b312SMartin MatuskaCFLAGS.zstd_common.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5092a58b312SMartin MatuskaCFLAGS.zstd_compress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5102a58b312SMartin MatuskaCFLAGS.zstd_compress_literals.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5112a58b312SMartin MatuskaCFLAGS.zstd_compress_sequences.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5122a58b312SMartin MatuskaCFLAGS.zstd_compress_superblock.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL} ${NO_WUNUSED_BUT_SET_VARIABLE}
5132a58b312SMartin MatuskaCFLAGS.zstd_ddict.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5142a58b312SMartin MatuskaCFLAGS.zstd_decompress.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5152a58b312SMartin MatuskaCFLAGS.zstd_decompress_block.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5162a58b312SMartin MatuskaCFLAGS.zstd_double_fast.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5172a58b312SMartin MatuskaCFLAGS.zstd_fast.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5182a58b312SMartin MatuskaCFLAGS.zstd_lazy.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5192a58b312SMartin MatuskaCFLAGS.zstd_ldm.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5202a58b312SMartin MatuskaCFLAGS.zstd_opt.c= -U__BMI__ -fno-tree-vectorize ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
5212a58b312SMartin Matuska
522*071ab5a1SMartin Matuska.if ${MACHINE_ARCH} == "aarch64"
5232a58b312SMartin Matuska__ZFS_ZSTD_AARCH64_FLAGS= -include ${SRCDIR}/zstd/include/aarch64_compat.h
5242a58b312SMartin MatuskaCFLAGS.zstd.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5252a58b312SMartin MatuskaCFLAGS.entropy_common.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5262a58b312SMartin MatuskaCFLAGS.error_private.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5272a58b312SMartin MatuskaCFLAGS.fse_compress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5282a58b312SMartin MatuskaCFLAGS.fse_decompress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5292a58b312SMartin MatuskaCFLAGS.hist.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5302a58b312SMartin MatuskaCFLAGS.huf_compress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5312a58b312SMartin MatuskaCFLAGS.huf_decompress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5322a58b312SMartin MatuskaCFLAGS.pool.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5332a58b312SMartin MatuskaCFLAGS.xxhash.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5342a58b312SMartin MatuskaCFLAGS.zstd_common.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5352a58b312SMartin MatuskaCFLAGS.zstd_compress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5362a58b312SMartin MatuskaCFLAGS.zstd_compress_literals.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5372a58b312SMartin MatuskaCFLAGS.zstd_compress_sequences.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5382a58b312SMartin MatuskaCFLAGS.zstd_compress_superblock.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5392a58b312SMartin MatuskaCFLAGS.zstd_ddict.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5402a58b312SMartin MatuskaCFLAGS.zstd_decompress.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5412a58b312SMartin MatuskaCFLAGS.zstd_decompress_block.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5422a58b312SMartin MatuskaCFLAGS.zstd_double_fast.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5432a58b312SMartin MatuskaCFLAGS.zstd_fast.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5442a58b312SMartin MatuskaCFLAGS.zstd_lazy.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5452a58b312SMartin MatuskaCFLAGS.zstd_ldm.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5462a58b312SMartin MatuskaCFLAGS.zstd_opt.c+= ${__ZFS_ZSTD_AARCH64_FLAGS}
5472a58b312SMartin Matuska
548d411c1d6SMartin Matuskasha256-armv8.o: sha256-armv8.S
549d411c1d6SMartin Matuska	${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${.IMPSRC} \
550d411c1d6SMartin Matuska	     -o ${.TARGET}
551d411c1d6SMartin Matuska	${CTFCONVERT_CMD}
552d411c1d6SMartin Matuska
553d411c1d6SMartin Matuskasha512-armv8.o: sha512-armv8.S
554d411c1d6SMartin Matuska	${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${.IMPSRC} \
555d411c1d6SMartin Matuska	     -o ${.TARGET}
556d411c1d6SMartin Matuska	${CTFCONVERT_CMD}
557d411c1d6SMartin Matuska
5582a58b312SMartin Matuskab3_aarch64_sse2.o: b3_aarch64_sse2.S
5592a58b312SMartin Matuska	${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${.IMPSRC} \
5602a58b312SMartin Matuska	     -o ${.TARGET}
5612a58b312SMartin Matuska	${CTFCONVERT_CMD}
5622a58b312SMartin Matuska
5632a58b312SMartin Matuskab3_aarch64_sse41.o: b3_aarch64_sse41.S
5642a58b312SMartin Matuska	${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${.IMPSRC} \
5652a58b312SMartin Matuska	     -o ${.TARGET}
5662a58b312SMartin Matuska	${CTFCONVERT_CMD}
5672a58b312SMartin Matuska
5682a58b312SMartin Matuska.endif
569