From 4773d3425e62bda14f0dd91c4e3de5009dba388f Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Fri, 8 Jul 2022 17:35:11 -0600 Subject: [PATCH] stand: Add comments on ZFS build Add comments describing the weird nesting things we have to do to live inside the ZFS world. Also fix a stale comment by moving nvlist.c to an early user. Sponsored by: Netflix --- stand/libsa/zfs/Makefile.inc | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/stand/libsa/zfs/Makefile.inc b/stand/libsa/zfs/Makefile.inc index 314f74c903f1..9de1a1f00c24 100644 --- a/stand/libsa/zfs/Makefile.inc +++ b/stand/libsa/zfs/Makefile.inc @@ -27,11 +27,27 @@ CFLAGS+= -I${LDRSRC} CFLAGS+= -I${SYSDIR}/cddl/boot/zfs CFLAGS+= -I${SYSDIR}/crypto/skein +# +# Any file that needs the FreeBSD overrides that are in +# include/os/freebssd/spl/XXX needs to have these added to +# CFLAGS_EARLY.file.c. In general, we try to build out of the OpenZFS tree +# unaltered. There's a problem, though, that since we're building for a +# standalone environment that's neither userland nor kernel, we sometimes need +# special code and that's handled by the 'nested' includes where we either setup +# something just-so before we include the include/XXX file, or if we need to +# tweak something defined in that file. +# + ZFS_EARLY= -I${ZFSSRC}/spl \ -I${ZFSOSINC} \ -I${ZFSOSINC}/spl \ -I${ZFSOSINC}/zfs +# +# For all files, though, we prepend the sys/ccompile.h file to the build which +# has a bunch of defines that are present in OpenSolaris / Illumos, but missing +# from FreeBSD. +# .for i in ${ZFS_SRC} ${ZSTD_SRC} CFLAGS.$i+= -include ${ZFSOSINC}/spl/sys/ccompile.h -Wformat -Wall -I${OZFS}/include \ -DNEED_SOLARIS_BOOLEAN @@ -42,11 +58,12 @@ CFLAGS_EARLY.blake3_generic.c+= ${ZFS_EARLY} CFLAGS_EARLY.blake3_impl_hack.c+= ${ZFS_EARLY} CFLAGS_EARLY.list.c+= ${ZFS_EARLY} CFLAGS_EARLY.zfs_zstd.c+= ${ZFS_EARLY} +CFLAGS_EARLY.nvlist.c+= ${ZFS_EARLY} # Can't use the early flags because there's two conflicting definitions of boolean_t in -# the zfs code that need to be unified. -CFLAGS.nvlist.c+= -I${ZFSOSINC}/spl -CFLAGS.zfs.c+= -I${ZFSOSINC}/spl \ +# the zfs code that need to be unified, as well as a number of other hacks for pre-openzfs +# code still in the tree that needs to be fixed. +CFLAGS.zfs.c+= -I${ZFSOSINC}/spl \ -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/lz4 \ -I${ZFSOSINC}/zfs \ -I${OZFS}/include