xref: /freebsd/lib/libzstd/Makefile (revision c0d9a07101a1e72769ee0619a583f63a078fb391)
1PACKAGE=	zstd
2LIB_PACKAGE=
3
4LIB=	zstd
5SRCS=	entropy_common.c \
6	error_private.c \
7	fse_decompress.c \
8	pool.c \
9	threading.c \
10	xxhash.c \
11	zstd_common.c \
12	fse_compress.c \
13	huf_compress.c \
14	zstd_compress.c \
15	zstd_compress_literals.c \
16	zstd_compress_sequences.c \
17	zstd_compress_superblock.c \
18	zstd_preSplit.c \
19	zstdmt_compress.c \
20	huf_decompress.c \
21	zstd_ddict.c \
22	zstd_decompress.c \
23	zstd_decompress_block.c \
24	zbuff_common.c \
25	zbuff_compress.c \
26	zbuff_decompress.c \
27	cover.c \
28	divsufsort.c \
29	zdict.c \
30	zstd_fast.c \
31	zstd_lazy.c \
32	zstd_ldm.c \
33	zstd_opt.c \
34	zstd_double_fast.c \
35	debug.c \
36	hist.c \
37	fastcover.c
38WARNS?=	2
39INCS=	zstd.h
40CFLAGS+=	-I${ZSTDDIR}/lib -I${ZSTDDIR}/lib/common -DXXH_NAMESPACE=ZSTD_ \
41		-DZSTD_MULTITHREAD=1 -fvisibility=hidden
42LIBADD=	pthread
43
44# ZSTD_ASM_SUPPORTED is 0 on FreeBSD but 1 on macOS and Linux. Since we build
45# this as a bootstrap library and don't include any assembly sources in SRCS,
46# explicitly disable assembly.
47CFLAGS+=	-DZSTD_DISABLE_ASM
48
49PRIVATELIB=	yes
50
51ZSTDDIR=	${SRCTOP}/sys/contrib/zstd
52.PATH:	${ZSTDDIR}/lib/common ${ZSTDDIR}/lib/compress \
53	${ZSTDDIR}/lib/decompress ${ZSTDDIR}/lib/deprecated \
54	${ZSTDDIR}/lib/dictBuilder ${ZSTDDIR}/lib
55
56.include <bsd.compiler.mk>
57
58# These symbols are needed by dll-linked CLI zstd(1).
59CFLAGS.pool.c+=		-fvisibility=default
60
61CFLAGS.huf_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
62
63# https://github.com/facebook/zstd/commit/812e8f2a [zstd 1.4.1]
64# "Note that [GCC] autovectorization still does not do a good job on the
65# optimized version, so it's turned off via attribute and flag.  I found
66# that neither attribute nor command-line flag were entirely successful in
67# turning off vectorization, which is why there were both."
68.if ${COMPILER_TYPE} == "gcc"
69CFLAGS.zstd_decompress_block.c+=	-fno-tree-vectorize
70.endif
71
72# Work around lack of __bswap[sd]i2() intrinsics on riscv.  Probably should be
73# added to one of the runtime C libraries instead.
74.if ${MACHINE_CPUARCH} == "riscv"
75.PATH:	${ZSTDDIR}/lib/freebsd
76SRCS+=	zstd_kfreebsd.c
77.endif
78
79.include <bsd.lib.mk>
80