Files
erofs-freebsd-out-tree/Makefile
T
2026-10-19 08:35:59 +08:00

147 lines
3.8 KiB
Makefile

KMOD= erofs
.EROFS_SUPPORTED_ARCHES= amd64 aarch64 riscv64
.if empty(.EROFS_SUPPORTED_ARCHES:M${MACHINE_ARCH})
.error erofs requires a 64-bit little-endian FreeBSD kernel; supported MACHINE_ARCH values are amd64, aarch64, and riscv64 (got ${MACHINE_ARCH})
.endif
WITH_ZSTDIO?= 1
.if empty(WITH_ZSTDIO:M0) && empty(WITH_ZSTDIO:M1)
.error WITH_ZSTDIO must be 0 or 1
.endif
WITH_EROFS_DEBUG?= 1
.if empty(WITH_EROFS_DEBUG:M0) && empty(WITH_EROFS_DEBUG:M1)
.error WITH_EROFS_DEBUG must be 0 or 1
.endif
WITH_EROFS_SDT?= 1
.if empty(WITH_EROFS_SDT:M0) && empty(WITH_EROFS_SDT:M1)
.error WITH_EROFS_SDT must be 0 or 1
.endif
WITH_EROFS_XATTR?= 1
.if empty(WITH_EROFS_XATTR:M0) && empty(WITH_EROFS_XATTR:M1)
.error WITH_EROFS_XATTR must be 0 or 1
.endif
WITH_EROFS_POSIX_ACL?= ${WITH_EROFS_XATTR}
.if empty(WITH_EROFS_POSIX_ACL:M0) && empty(WITH_EROFS_POSIX_ACL:M1)
.error WITH_EROFS_POSIX_ACL must be 0 or 1
.endif
WITH_EROFS_SECURITY?= ${WITH_EROFS_XATTR}
.if empty(WITH_EROFS_SECURITY:M0) && empty(WITH_EROFS_SECURITY:M1)
.error WITH_EROFS_SECURITY must be 0 or 1
.endif
WITH_EROFS_BACKED_BY_FILE?= 1
.if empty(WITH_EROFS_BACKED_BY_FILE:M0) && empty(WITH_EROFS_BACKED_BY_FILE:M1)
.error WITH_EROFS_BACKED_BY_FILE must be 0 or 1
.endif
WITH_EROFS_ZIP?= 1
.if empty(WITH_EROFS_ZIP:M0) && empty(WITH_EROFS_ZIP:M1)
.error WITH_EROFS_ZIP must be 0 or 1
.endif
WITH_EROFS_ZIP_LZMA?= ${WITH_EROFS_ZIP}
.if ${WITH_EROFS_ZIP_LZMA} != 0 && ${WITH_EROFS_ZIP_LZMA} != 1
.error WITH_EROFS_ZIP_LZMA must be 0 or 1
.endif
WITH_EROFS_ZIP_DEFLATE?= ${WITH_EROFS_ZIP}
.if empty(WITH_EROFS_ZIP_DEFLATE:M0) && empty(WITH_EROFS_ZIP_DEFLATE:M1)
.error WITH_EROFS_ZIP_DEFLATE must be 0 or 1
.endif
WITH_EROFS_ZIP_ZSTD?= ${WITH_EROFS_ZIP}
.if empty(WITH_EROFS_ZIP_ZSTD:M0) && empty(WITH_EROFS_ZIP_ZSTD:M1)
.error WITH_EROFS_ZIP_ZSTD must be 0 or 1
.endif
WITH_EROFS_PCPU_KTHREAD?= 1
.if empty(WITH_EROFS_PCPU_KTHREAD:M0) && empty(WITH_EROFS_PCPU_KTHREAD:M1)
.error WITH_EROFS_PCPU_KTHREAD must be 0 or 1
.endif
.if ${WITH_EROFS_XATTR} == 0
.if ${WITH_EROFS_POSIX_ACL} != 0 || ${WITH_EROFS_SECURITY} != 0
.error WITH_EROFS_POSIX_ACL and WITH_EROFS_SECURITY require WITH_EROFS_XATTR=1
.endif
.endif
.if ${WITH_EROFS_ZIP} == 0
.if ${WITH_EROFS_ZIP_LZMA} != 0 || ${WITH_EROFS_ZIP_DEFLATE} != 0 || \
${WITH_EROFS_ZIP_ZSTD} != 0
.error WITH_EROFS_ZIP_LZMA, WITH_EROFS_ZIP_DEFLATE, and WITH_EROFS_ZIP_ZSTD require WITH_EROFS_ZIP=1
.endif
.endif
CFLAGS+= -DWITH_EROFS_DEBUG=${WITH_EROFS_DEBUG} \
-DWITH_EROFS_SDT=${WITH_EROFS_SDT} \
-DWITH_EROFS_XATTR=${WITH_EROFS_XATTR} \
-DWITH_EROFS_POSIX_ACL=${WITH_EROFS_POSIX_ACL} \
-DWITH_EROFS_SECURITY=${WITH_EROFS_SECURITY} \
-DWITH_EROFS_BACKED_BY_FILE=${WITH_EROFS_BACKED_BY_FILE} \
-DWITH_EROFS_ZIP=${WITH_EROFS_ZIP} \
-DWITH_EROFS_ZIP_LZMA=${WITH_EROFS_ZIP_LZMA} \
-DWITH_EROFS_ZIP_DEFLATE=${WITH_EROFS_ZIP_DEFLATE} \
-DWITH_EROFS_ZIP_ZSTD=${WITH_EROFS_ZIP_ZSTD} \
-DWITH_EROFS_PCPU_KTHREAD=${WITH_EROFS_PCPU_KTHREAD}
.if ${WITH_EROFS_SDT} == 1
CFLAGS+= -DKDTRACE_HOOKS
.endif
# FreeBSD filesystem core and vnode adapter.
SRCS= super.c \
inode.c \
data.c \
namei.c \
dir.c \
sysfs.c \
erofs_vnops.c \
vnode_if.h
.if ${WITH_EROFS_BACKED_BY_FILE} == 1
SRCS+= fileio.c
.endif
.if ${WITH_EROFS_SDT} == 1
SRCS+= trace.c
.endif
# FreeBSD xattr and ACL adapter.
.if ${WITH_EROFS_XATTR} == 1
SRCS+= xattr.c
.endif
.if ${WITH_EROFS_ZIP} == 1
# Compression core.
SRCS+= decompressor.c \
zmap.c \
zdata.c \
zutil.c
# Algorithm backends.
SRCS+= decompressor_lz4.c
.if ${WITH_EROFS_ZIP_LZMA} == 1
SRCS+= decompressor_lzma.c
.endif
.if ${WITH_EROFS_ZIP_DEFLATE} == 1
SRCS+= decompressor_deflate.c
.endif
.if ${WITH_EROFS_ZIP_ZSTD} == 1
SRCS+= decompressor_zstd.c
# Optional Zstd control plane.
CFLAGS.decompressor_zstd.c+= -I${SYSDIR}/contrib/zstd/lib/freebsd
.if ${WITH_ZSTDIO} == 1
CFLAGS.decompressor_zstd.c+= -DZSTDIO
.endif
.endif
.endif
.include <bsd.kmod.mk>