xref: /freebsd/cddl/lib/libzpool/Makefile (revision 34f9f5680c9d5d5138e427ba3aeab0138cec3882)
1.PATH: ${ZFSTOP}/lib/libzpool
2
3# ZFS_COMMON_SRCS
4.PATH: ${ZFSTOP}/module/zfs
5.PATH: ${ZFSTOP}/module/zcommon
6.PATH: ${ZFSTOP}/module/unicode
7# LUA_SRCS
8.PATH: ${ZFSTOP}/module/lua
9# ZSTD_SRCS
10.PATH: ${ZFSTOP}/module/zstd
11.PATH: ${ZFSTOP}/module/zstd/lib/common
12.PATH: ${ZFSTOP}/module/zstd/lib/compress
13.PATH: ${ZFSTOP}/module/zstd/lib/decompress
14
15.if exists(${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}/opensolaris_atomic.S)
16.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}
17ATOMIC_SRCS=	opensolaris_atomic.S
18ACFLAGS+=	-Wa,--noexecstack
19.else
20.PATH: ${SRCTOP}/sys/cddl/compat/opensolaris/kern
21ATOMIC_SRCS=	opensolaris_atomic.c
22.endif
23
24.if ${MACHINE_ARCH} == "powerpc"
25# Don't waste GOT entries on small data.
26PICFLAG=	-fPIC
27.endif
28
29PACKAGE=	zfs
30LIB_PACKAGE=
31
32LIB=		zpool
33
34USER_C = \
35	arc_os.c \
36	kernel.c \
37	util.c \
38	zfs_debug.c
39
40.PATH: ${ZFSTOP}/module/os/linux/zfs
41
42KERNEL_C = \
43	simd_stat.c \
44	zfeature_common.c \
45	zfs_comutil.c \
46	zfs_deleg.c \
47	zfs_fletcher.c \
48	zfs_fletcher_superscalar.c \
49	zfs_fletcher_superscalar4.c \
50	zfs_namecheck.c \
51	zfs_prop.c \
52	zfs_zstd.c \
53	zpool_prop.c \
54	zprop_common.c \
55	abd.c \
56	abd_os.c \
57	aggsum.c \
58	arc.c \
59        blake3_zfs.c \
60	blkptr.c \
61	bplist.c \
62	bpobj.c \
63	bptree.c \
64	bqueue.c \
65	btree.c \
66	brt.c \
67	cityhash.c \
68	dbuf.c \
69	dbuf_stats.c \
70	ddt.c \
71	ddt_log.c \
72	ddt_stats.c \
73	ddt_zap.c \
74	dmu.c \
75	dmu_diff.c \
76	dmu_direct.c \
77	dmu_object.c \
78	dmu_objset.c \
79	dmu_recv.c \
80	dmu_redact.c \
81	dmu_send.c \
82	dmu_traverse.c \
83	dmu_tx.c \
84	dmu_zfetch.c \
85	dnode.c \
86	dnode_sync.c \
87	dsl_bookmark.c \
88	dsl_dataset.c \
89	dsl_deadlist.c \
90	dsl_deleg.c \
91	dsl_dir.c \
92	dsl_crypt.c \
93	dsl_pool.c \
94	dsl_prop.c \
95	dsl_scan.c \
96	dsl_synctask.c \
97	dsl_destroy.c \
98	dsl_userhold.c \
99	edonr_zfs.c \
100	entropy_common.c \
101	error_private.c \
102	fm.c \
103	fse_compress.c \
104	fse_decompress.c \
105	gzip.c \
106	hist.c \
107	hkdf.c \
108	huf_compress.c \
109	huf_decompress.c \
110	lzjb.c \
111	lz4.c \
112	lz4_zfs.c \
113	metaslab.c \
114	mmp.c \
115	multilist.c \
116	objlist.c \
117	pathname.c \
118	pool.c \
119	range_tree.c \
120	refcount.c \
121	rrwlock.c \
122	sa.c \
123	sha2_zfs.c \
124	skein_zfs.c \
125	spa.c \
126	spa_checkpoint.c \
127	spa_config.c \
128	spa_errlog.c \
129	spa_history.c \
130	spa_log_spacemap.c \
131	spa_misc.c \
132	spa_stats.c \
133	space_map.c \
134	space_reftree.c \
135	txg.c \
136	u8_textprep.c \
137	trace.c \
138	uberblock.c \
139	unique.c \
140	vdev.c \
141	vdev_draid.c \
142	vdev_draid_rand.c \
143	vdev_file.c \
144	vdev_indirect_births.c \
145	vdev_indirect.c \
146	vdev_indirect_mapping.c \
147	vdev_initialize.c \
148	vdev_label.c \
149	vdev_label_os.c \
150	vdev_mirror.c \
151	vdev_missing.c \
152	vdev_queue.c \
153	vdev_raidz.c \
154	vdev_raidz_math_aarch64_neon.c \
155	vdev_raidz_math_aarch64_neonx2.c \
156	vdev_raidz_math_avx2.c \
157	vdev_raidz_math_avx512bw.c \
158	vdev_raidz_math_avx512f.c \
159	vdev_raidz_math.c \
160	vdev_raidz_math_scalar.c \
161	vdev_rebuild.c \
162	vdev_removal.c \
163	vdev_root.c \
164	vdev_trim.c \
165	zap.c \
166	zap_fat.c \
167	zap_impl.c \
168	zap_leaf.c \
169	zap_micro.c \
170	zcp.c \
171	zcp_get.c \
172	zcp_global.c \
173	zcp_iter.c \
174	zcp_set.c \
175	zcp_synctask.c \
176	zfeature.c \
177	zfs_byteswap.c \
178        zfs_chksum.c \
179	zfs_crrd.c \
180	zfs_debug_common.c \
181	zfs_file_os.c \
182	zfs_fm.c \
183	zfs_fuid.c \
184	zfs_impl.c \
185	zfs_sa.c \
186	zfs_znode.c \
187	zfs_racct.c \
188	zfs_ratelimit.c \
189	zfs_rlock.c \
190	zil.c \
191	zio.c \
192	zio_checksum.c \
193	zio_compress.c \
194	zio_crypt.c \
195	zio_crypt_os_icp.c \
196	zio_inject.c \
197	zle.c \
198	zrlock.c \
199	zstd_common.c \
200	zstd_compress.c \
201	zstd_compress_literals.c \
202	zstd_compress_sequences.c \
203	zstd_compress_superblock.c \
204	zstd_ddict.c \
205	zstd_decompress.c \
206	zstd_decompress_block.c \
207	zstd_double_fast.c \
208	zstd_fast.c \
209	zstd_lazy.c \
210	zstd_ldm.c \
211	zstd_opt.c \
212	zstd_preSplit.c \
213	zthr.c
214
215ARCH_C =
216.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
217ARCH_C += 	vdev_raidz_math_sse2.c \
218		vdev_raidz_math_ssse3.c \
219		zfs_fletcher_intel.c \
220		zfs_fletcher_sse.c
221CFLAGS +=  -DHAVE_TOOLCHAIN_SSE2 -DHAVE_TOOLCHAIN_SSSE3
222.endif
223.if ${MACHINE_ARCH} == "amd64"
224ARCH_C +=	zfs_fletcher_avx512.c
225CFLAGS+= -D__x86_64 -DHAVE_TOOLCHAIN_AVX2 -DHAVE_TOOLCHAIN_AVX \
226	-DHAVE_TOOLCHAIN_AVX512F -DHAVE_TOOLCHAIN_AVX512BW
227.endif
228.if ${MACHINE_CPUARCH} == "aarch64"
229ARCH_C +=	zfs_fletcher_aarch64_neon.c
230.endif
231
232LUA_C = \
233	lapi.c \
234	lauxlib.c \
235	lbaselib.c \
236	lcode.c \
237	lcompat.c \
238	lcorolib.c \
239	lctype.c \
240	ldebug.c \
241	ldo.c \
242	lfunc.c \
243	lgc.c \
244	llex.c \
245	lmem.c \
246	lobject.c \
247	lopcodes.c \
248	lparser.c \
249	lstate.c \
250	lstring.c \
251	lstrlib.c \
252	ltable.c \
253	ltablib.c \
254	ltm.c \
255	lvm.c \
256	lzio.c
257
258SRCS+=		${USER_C} ${KERNEL_C} ${LUA_C} ${ARCH_C}
259
260
261WARNS?=		2
262CFLAGS+= \
263	-DIN_BASE \
264	-I${ZFSTOP}/include \
265	-I${ZFSTOP}/lib/libspl/include \
266	-I${ZFSTOP}/lib/libspl/include/os/freebsd \
267	-I${ZFSTOP}/lib/libzpool/include \
268	-I${SRCTOP}/sys \
269	-I${SRCTOP}/cddl/compat/opensolaris/include \
270	-I${ZFSTOP}/module/icp/include \
271	-I${SRCTOP}/compat/linuxkpi/common/include/linux \
272	-include ${ZFSTOP}/include/sys/simd_config.h \
273	-include ${ZFSTOP}/include/os/freebsd/spl/sys/ccompile.h \
274	-DHAVE_ISSETUGID \
275	-include ${SRCTOP}/sys/modules/zfs/zfs_config.h \
276	-I${SRCTOP}/sys/modules/zfs \
277	-I${ZFSTOP}/include/os/freebsd/zfs \
278	-DLIB_ZPOOL_BUILD -DZFS_DEBUG -DXXH_INLINE_ALL \
279
280# XXX: pthread doesn't have mutex_owned() equivalent, so we need to look
281#      into libthr private structures. That's sooo evil, but it's only for
282#      ZFS debugging tools needs.
283CFLAGS+=	-DWANTS_MUTEX_OWNED
284CFLAGS+=	-I${SRCTOP}/lib/libpthread/thread
285CFLAGS+=	-I${SRCTOP}/lib/libpthread/sys
286CFLAGS+=	-I${SRCTOP}/lib/libthr/arch/${MACHINE_CPUARCH}/include
287
288LIBADD=		md pthread z spl icp nvpair avl umem
289
290CSTD=	c99
291
292# Since there are many asserts in this library, it makes no sense to compile
293# it without debugging.
294
295CFLAGS+=	-g -DDEBUG=1
296
297CFLAGS.gcc+=	-Wno-pointer-to-int-cast
298
299# Some versions of LLVM contain duplicate typedefs in the <*intrin.h> headers,
300# which are not allowed prior to C11; since libzpool is built with C99, make
301# this not be an error.
302CFLAGS.clang+=	-Wno-error=typedef-redefinition
303
304# Pointer values are used as debugging "tags" to mark reference count
305# ownerships and in some cases the tag reference is dropped after an
306# object is freed.
307CFLAGS.dbuf.c=			${NO_WUSE_AFTER_FREE}
308CFLAGS.entropy_common.c=	-fno-tree-vectorize
309CFLAGS.entropy_common.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
310CFLAGS.error_private.c=		-fno-tree-vectorize
311CFLAGS.error_private.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
312CFLAGS.fse_compress.c=		-fno-tree-vectorize
313CFLAGS.fse_compress.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
314CFLAGS.fse_decompress.c=	-fno-tree-vectorize
315CFLAGS.fse_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
316CFLAGS.hist.c=			-fno-tree-vectorize
317CFLAGS.hist.c+=			${NO_WBITWISE_INSTEAD_OF_LOGICAL}
318CFLAGS.huf_compress.c=		-fno-tree-vectorize
319CFLAGS.huf_compress.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
320CFLAGS.huf_decompress.c=	-fno-tree-vectorize
321CFLAGS.huf_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
322CFLAGS.pool.c=			-fno-tree-vectorize
323CFLAGS.pool.c+=			${NO_WBITWISE_INSTEAD_OF_LOGICAL}
324CFLAGS.xxhash.c=		-fno-tree-vectorize
325CFLAGS.xxhash.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
326CFLAGS.zstd_compress.c=		-fno-tree-vectorize
327CFLAGS.zstd_compress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
328CFLAGS.zstd_compress_literals.c=	-fno-tree-vectorize
329CFLAGS.zstd_compress_literals.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
330CFLAGS.zstd_compress_sequences.c=	-fno-tree-vectorize
331CFLAGS.zstd_compress_sequences.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
332CFLAGS.zstd_compress_superblock.c=	-fno-tree-vectorize
333CFLAGS.zstd_compress_superblock.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
334CFLAGS.zstd_double_fast.c=	-fno-tree-vectorize
335CFLAGS.zstd_double_fast.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
336CFLAGS.zstd_fast.c=		-fno-tree-vectorize
337CFLAGS.zstd_fast.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
338CFLAGS.zstd_lazy.c=		-fno-tree-vectorize
339CFLAGS.zstd_lazy.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
340CFLAGS.zstd_ldm.c=		-fno-tree-vectorize
341CFLAGS.zstd_ldm.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
342CFLAGS.zstd_opt.c=		-fno-tree-vectorize
343CFLAGS.zstd_opt.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
344CFLAGS.zstd_ddict.c=		-fno-tree-vectorize
345CFLAGS.zstd_ddict.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
346CFLAGS.zstd_decompress.c=	-fno-tree-vectorize
347CFLAGS.zstd_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
348CFLAGS.zstd_decompress_block.c=	-fno-tree-vectorize
349CFLAGS.zstd_decompress_block.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
350
351.include <bsd.lib.mk>
352