9f0a21e641
Add the FreeBSD platform code to the OpenZFS repository. As of this commit the source can be compiled and tested on FreeBSD 11 and 12. Subsequent commits are now required to compile on FreeBSD and Linux. Additionally, they must pass the ZFS Test Suite on FreeBSD which is being run by the CI. As of this commit 1230 tests pass on FreeBSD and there are no unexpected failures. Reviewed-by: Sean Eric Fagan <sef@ixsystems.com> Reviewed-by: Jorgen Lundman <lundman@lundman.net> Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Co-authored-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Signed-off-by: Ryan Moeller <ryan@iXsystems.com> Closes #898 Closes #8987
139 lines
3.9 KiB
Makefile
139 lines
3.9 KiB
Makefile
obj-m += avl/
|
|
obj-m += icp/
|
|
obj-m += lua/
|
|
obj-m += nvpair/
|
|
obj-m += spl/
|
|
obj-m += os/linux/spl/
|
|
obj-m += unicode/
|
|
obj-m += zcommon/
|
|
obj-m += zfs/
|
|
obj-m += os/linux/zfs/
|
|
|
|
INSTALL_MOD_DIR ?= extra
|
|
|
|
ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
|
|
ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @NO_FORMAT_ZERO_LENGTH@
|
|
ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
|
|
ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include/os/linux/kernel
|
|
ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include/os/linux/spl
|
|
ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include/os/linux/zfs
|
|
ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include
|
|
ZFS_MODULE_CPPFLAGS += -D_KERNEL
|
|
ZFS_MODULE_CPPFLAGS += @KERNEL_DEBUG_CPPFLAGS@
|
|
|
|
@CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include
|
|
@CONFIG_QAT_TRUE@KBUILD_EXTRA_SYMBOLS += @QAT_SYMBOLS@
|
|
|
|
export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS
|
|
|
|
SUBDIR_TARGETS = icp lua
|
|
|
|
all: modules
|
|
distclean maintainer-clean: clean
|
|
install: modules_install
|
|
uninstall: modules_uninstall
|
|
check:
|
|
|
|
modules-Linux:
|
|
list='$(SUBDIR_TARGETS)'; for targetdir in $$list; do \
|
|
$(MAKE) -C $$targetdir; \
|
|
done
|
|
$(MAKE) -C @LINUX_OBJ@ M=`pwd` @KERNEL_MAKE@ CONFIG_ZFS=m modules
|
|
|
|
# Only pass down gmake -j flag, if used.
|
|
modules-FreeBSD:
|
|
flags="$$(echo $$MAKEFLAGS | awk -v RS=' ' /^-j/)"; \
|
|
env MAKEFLAGS="" make $${flags} -f Makefile.bsd
|
|
|
|
modules-unknown:
|
|
@true
|
|
|
|
modules: modules-@ac_system@
|
|
|
|
clean-Linux:
|
|
@# Only cleanup the kernel build directories when CONFIG_KERNEL
|
|
@# is defined. This indicates that kernel modules should be built.
|
|
@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ M=`pwd` @KERNEL_MAKE@ clean
|
|
|
|
if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi
|
|
if [ -f Module.markers ]; then $(RM) Module.markers; fi
|
|
|
|
find . -name '*.ur-safe' -type f -print | xargs $(RM)
|
|
|
|
clean-FreeBSD:
|
|
flags="$$(echo $$MAKEFLAGS | awk -v RS=' ' /^-j/)"; \
|
|
env MAKEFLAGS="" make $${flags} -f Makefile.bsd clean
|
|
|
|
clean: clean-@ac_system@
|
|
|
|
modules_install-Linux:
|
|
@# Install the kernel modules
|
|
$(MAKE) -C @LINUX_OBJ@ M=`pwd` modules_install \
|
|
INSTALL_MOD_PATH=$(DESTDIR)$(INSTALL_MOD_PATH) \
|
|
INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \
|
|
KERNELRELEASE=@LINUX_VERSION@
|
|
@# Remove extraneous build products when packaging
|
|
kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
|
|
if [ -n "$(DESTDIR)" ]; then \
|
|
find $$kmoddir -name 'modules.*' | xargs $(RM); \
|
|
fi
|
|
sysmap=$(DESTDIR)$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
|
|
if [ -f $$sysmap ]; then \
|
|
depmod -ae -F $$sysmap @LINUX_VERSION@; \
|
|
fi
|
|
|
|
CTAGS: ctags
|
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
|
$(am__define_uniq_tagged_files); \
|
|
test -z "$(CTAGS_ARGS)$$unique" \
|
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|
$$unique
|
|
|
|
GTAGS:
|
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
&& $(am__cd) $(top_srcdir) \
|
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
|
cscopelist: cscopelist-recursive
|
|
|
|
cscopelist-am: $(am__tagged_files)
|
|
list='$(am__tagged_files)'; \
|
|
case "$(srcdir)" in \
|
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
|
esac; \
|
|
for i in $$list; do \
|
|
if test -f "$$i"; then \
|
|
echo "$(subdir)/$$i"; \
|
|
else \
|
|
echo "$$sdir/$$i"; \
|
|
fi; \
|
|
done >> $(top_builddir)/cscope.files
|
|
|
|
modules_install-FreeBSD:
|
|
@# Install the kernel modules
|
|
flags="$$(echo $$MAKEFLAGS | awk -v RS=' ' /^-j/)"; \
|
|
env MAKEFLAGS="" make $${flags} -f Makefile.bsd install
|
|
|
|
modules_install: modules_install-@ac_system@
|
|
|
|
modules_uninstall-Linux:
|
|
@# Uninstall the kernel modules
|
|
kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@
|
|
list='$(obj-m)'; for objdir in $$list; do \
|
|
$(RM) -R $$kmoddir/$(INSTALL_MOD_DIR)/$$objdir; \
|
|
done
|
|
|
|
modules_uninstall-FreeBSD:
|
|
@false
|
|
|
|
modules_uninstall: modules_uninstall-@ac_system@
|
|
|
|
distdir:
|
|
list='$(obj-m)'; for objdir in $$list; do \
|
|
(cd @top_srcdir@/module && find $$objdir -name '*.[chS]' | \
|
|
while read path; do \
|
|
mkdir -p @abs_top_builddir@/module/$$distdir/$${path%/*}; \
|
|
cp $$path @abs_top_builddir@/module/$$distdir/$$path; \
|
|
done); \
|
|
done
|