xref: /freebsd/sys/contrib/openzfs/module/Makefile.in (revision b59a0cde6a5253f94494397ce5b18dbfa071e08c)
1eda14cbcSMatt Macyinclude Kbuild
2eda14cbcSMatt Macy
3eda14cbcSMatt MacyINSTALL_MOD_DIR ?= extra
46ba2210eSMartin MatuskaINSTALL_MOD_PATH ?= $(DESTDIR)
5eda14cbcSMatt Macy
6eda14cbcSMatt Macyall: modules
7eda14cbcSMatt Macydistclean maintainer-clean: clean
8716fd348SMartin Matuskainstall: modules_install data_install
9716fd348SMartin Matuskauninstall: modules_uninstall data_uninstall
10eda14cbcSMatt Macycheck:
11eda14cbcSMatt Macy
12eda14cbcSMatt Macy.PHONY: all distclean maintainer-clean install uninstall check distdir \
13eda14cbcSMatt Macy	modules modules-Linux modules-FreeBSD modules-unknown \
14eda14cbcSMatt Macy	clean clean-Linux clean-FreeBSD \
15eda14cbcSMatt Macy	modules_install modules_install-Linux modules_install-FreeBSD \
16716fd348SMartin Matuska	data_install data_install-Linux data_install-FreeBSD \
17184c1b94SMartin Matuska	modules_uninstall modules_uninstall-Linux modules_uninstall-FreeBSD \
18716fd348SMartin Matuska	data_uninstall data_uninstall-Linux data_uninstall-FreeBSD \
19184c1b94SMartin Matuska	cppcheck cppcheck-Linux cppcheck-FreeBSD
20eda14cbcSMatt Macy
219db44a8eSMartin Matuska# For FreeBSD, use debug options from ./configure if not overridden.
229db44a8eSMartin Matuskaexport WITH_DEBUG ?= @WITH_DEBUG@
239db44a8eSMartin Matuskaexport WITH_INVARIANTS ?= @WITH_INVARIANTS@
249db44a8eSMartin Matuska
25eda14cbcSMatt Macy# Filter out options that FreeBSD make doesn't understand
26eda14cbcSMatt Macygetflags = ( \
27eda14cbcSMatt Macyset -- \
28eda14cbcSMatt Macy  $(filter-out --%,$(firstword $(MFLAGS))) \
29eda14cbcSMatt Macy  $(filter -I%,$(MFLAGS)) \
30eda14cbcSMatt Macy  $(filter -j%,$(MFLAGS)); \
31eda14cbcSMatt Macyfmakeflags=""; \
32eda14cbcSMatt Macywhile getopts :deiI:j:knqrstw flag; do \
33eda14cbcSMatt Macy  case $$flag in \
34eda14cbcSMatt Macy    \?) :;; \
35eda14cbcSMatt Macy    :) if [ $$OPTARG = "j" ]; then \
36eda14cbcSMatt Macy	 ncpus=$$(sysctl -n kern.smp.cpus 2>/dev/null || :); \
37eda14cbcSMatt Macy	 if [ -n "$$ncpus" ]; then fmakeflags="$$fmakeflags -j$$ncpus"; fi; \
38eda14cbcSMatt Macy       fi;; \
39eda14cbcSMatt Macy    d) fmakeflags="$$fmakeflags -dA";; \
40eda14cbcSMatt Macy    *) fmakeflags="$$fmakeflags -$$flag$$OPTARG";; \
41eda14cbcSMatt Macy  esac; \
42eda14cbcSMatt Macydone; \
43eda14cbcSMatt Macyecho $$fmakeflags \
44eda14cbcSMatt Macy)
45eda14cbcSMatt MacyFMAKEFLAGS = -C @abs_srcdir@ -f Makefile.bsd $(shell $(getflags))
46eda14cbcSMatt Macy
47eda14cbcSMatt Macyifneq (@abs_srcdir@,@abs_builddir@)
48eda14cbcSMatt MacyFMAKEFLAGS += MAKEOBJDIR=@abs_builddir@
49eda14cbcSMatt Macyendif
509db44a8eSMartin Matuska
51eda14cbcSMatt MacyFMAKE = env -u MAKEFLAGS make $(FMAKEFLAGS)
52eda14cbcSMatt Macy
53eda14cbcSMatt Macymodules-Linux:
54716fd348SMartin Matuska	mkdir -p $(sort $(dir $(spl-objs) $(spl-)))
55716fd348SMartin Matuska	mkdir -p $(sort $(dir $(zfs-objs) $(zfs-)))
56c03c5b1cSMartin Matuska	$(MAKE) -C @LINUX_OBJ@ $(if @KERNEL_CC@,CC=@KERNEL_CC@) \
57c03c5b1cSMartin Matuska		$(if @KERNEL_LD@,LD=@KERNEL_LD@) $(if @KERNEL_LLVM@,LLVM=@KERNEL_LLVM@) \
58dd215568SMartin Matuska		$(if @KERNEL_CROSS_COMPILE@,CROSS_COMPILE=@KERNEL_CROSS_COMPILE@) \
59dd215568SMartin Matuska		$(if @KERNEL_ARCH@,ARCH=@KERNEL_ARCH@) \
60c03c5b1cSMartin Matuska		M="$$PWD" @KERNEL_MAKE@ CONFIG_ZFS=m modules
61eda14cbcSMatt Macy
62eda14cbcSMatt Macymodules-FreeBSD:
63eda14cbcSMatt Macy	+$(FMAKE)
64eda14cbcSMatt Macy
65eda14cbcSMatt Macymodules-unknown:
66eda14cbcSMatt Macy	@true
67eda14cbcSMatt Macy
68eda14cbcSMatt Macymodules: modules-@ac_system@
69eda14cbcSMatt Macy
70eda14cbcSMatt Macyclean-Linux:
71eda14cbcSMatt Macy	@# Only cleanup the kernel build directories when CONFIG_KERNEL
72eda14cbcSMatt Macy	@# is defined.  This indicates that kernel modules should be built.
73e92ffd9bSMartin Matuska@CONFIG_KERNEL_TRUE@	$(MAKE) -C @LINUX_OBJ@ M="$$PWD" @KERNEL_MAKE@ clean
74eda14cbcSMatt Macy
75c03c5b1cSMartin Matuska	$(RM) @LINUX_SYMBOLS@ Module.markers
76c03c5b1cSMartin Matuska	find . -name '*.ur-safe' -type f -delete
77eda14cbcSMatt Macy
78eda14cbcSMatt Macyclean-FreeBSD:
79eda14cbcSMatt Macy	+$(FMAKE) clean
80eda14cbcSMatt Macy
81eda14cbcSMatt Macyclean: clean-@ac_system@
82eda14cbcSMatt Macy
83716fd348SMartin Matuska.PHONY: modules_uninstall-Linux-legacy
84716fd348SMartin Matuskamodules_uninstall-Linux-legacy:
85716fd348SMartin Matuska	$(RM) -r $(addprefix $(KMODDIR)/$(INSTALL_MOD_DIR)/,spl/ avl/ icp/ lua/ nvpair/ unicode/ zcommon/ zfs/ zstd/)
86716fd348SMartin Matuska
87716fd348SMartin MatuskaKMODDIR := $(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@
88716fd348SMartin Matuskamodules_install-Linux: modules_uninstall-Linux-legacy
89eda14cbcSMatt Macy	@# Install the kernel modules
90e92ffd9bSMartin Matuska	$(MAKE) -C @LINUX_OBJ@ M="$$PWD" modules_install \
916ba2210eSMartin Matuska		INSTALL_MOD_PATH=$(INSTALL_MOD_PATH) \
92eda14cbcSMatt Macy		INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \
93c6767dc1SMartin Matuska		$(if @KERNEL_ARCH@,ARCH=@KERNEL_ARCH@) \
94eda14cbcSMatt Macy		KERNELRELEASE=@LINUX_VERSION@
95eda14cbcSMatt Macy	@# Remove extraneous build products when packaging
96*b59a0cdeSMartin Matuska	if [ -n "$(DESTDIR)" ] && [ "$(DONT_DELETE_MODULES_FILES)" != "1" ]; then \
97716fd348SMartin Matuska		find $(KMODDIR) -name 'modules.*' -delete; \
98eda14cbcSMatt Macy	fi
99e92ffd9bSMartin Matuska	@# Debian ships tiny fake System.map files that are
100e92ffd9bSMartin Matuska	@# syntactically valid but just say
101e92ffd9bSMartin Matuska	@# "if you want system.map go install this package"
102e92ffd9bSMartin Matuska	@# Naturally, depmod is less than amused by this.
103e92ffd9bSMartin Matuska	@# So if we find it missing or with one of these present,
104e92ffd9bSMartin Matuska	@# we check for the alternate path for the System.map
1056ba2210eSMartin Matuska	sysmap=$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
106e92ffd9bSMartin Matuska	{ [ -f "$$sysmap" ] && [ $$(wc -l < "$$sysmap") -ge 100 ]; } || \
107e92ffd9bSMartin Matuska		sysmap=$(INSTALL_MOD_PATH)/usr/lib/debug/boot/System.map-@LINUX_VERSION@; \
108eda14cbcSMatt Macy	if [ -f $$sysmap ]; then \
109*b59a0cdeSMartin Matuska		depmod -ae -F $$sysmap @LINUX_VERSION@ -b $(INSTALL_MOD_PATH)/; \
110eda14cbcSMatt Macy	fi
111eda14cbcSMatt Macy
112eda14cbcSMatt Macymodules_install-FreeBSD:
113eda14cbcSMatt Macy	@# Install the kernel modules
114eda14cbcSMatt Macy	+$(FMAKE) install
115eda14cbcSMatt Macy
116eda14cbcSMatt Macymodules_install: modules_install-@ac_system@
117eda14cbcSMatt Macy
118716fd348SMartin Matuskadata_install-Linux:
119716fd348SMartin Matuska	@mkdir -p $(DESTDIR)/@prefix@/src/zfs-@VERSION@/@LINUX_VERSION@
120716fd348SMartin Matuska	cp ../zfs.release ../zfs_config.h @LINUX_SYMBOLS@ $(DESTDIR)/@prefix@/src/zfs-@VERSION@/@LINUX_VERSION@
121716fd348SMartin Matuska
122716fd348SMartin Matuskadata_install-FreeBSD:
123716fd348SMartin Matuska	@
124716fd348SMartin Matuska
125716fd348SMartin Matuskadata_install: data_install-@ac_system@
126716fd348SMartin Matuska
127716fd348SMartin Matuskamodules_uninstall-Linux: modules_uninstall-Linux-legacy
128eda14cbcSMatt Macy	@# Uninstall the kernel modules
129716fd348SMartin Matuska	$(RM) $(addprefix $(KMODDIR)/$(INSTALL_MOD_DIR)/,zfs.ko spl.ko)
130eda14cbcSMatt Macy
131eda14cbcSMatt Macymodules_uninstall-FreeBSD:
132eda14cbcSMatt Macy	@false
133eda14cbcSMatt Macy
134eda14cbcSMatt Macymodules_uninstall: modules_uninstall-@ac_system@
135eda14cbcSMatt Macy
136716fd348SMartin Matuskadata_uninstall-Linux:
137716fd348SMartin Matuska	$(RM) $(addprefix $(DESTDIR)/@prefix@/src/zfs-@VERSION@/@LINUX_VERSION@/,zfs.release zfs_config.h @LINUX_SYMBOLS@)
138716fd348SMartin Matuska
139716fd348SMartin Matuskadata_uninstall-FreeBSD:
140716fd348SMartin Matuska	@
141716fd348SMartin Matuska
142716fd348SMartin Matuskadata_uninstall: data_uninstall-@ac_system@
143716fd348SMartin Matuska
144184c1b94SMartin Matuskacppcheck-Linux:
145184c1b94SMartin Matuska	@CPPCHECK@ -j@CPU_COUNT@ --std=c99 --quiet --force --error-exitcode=2 \
14681b22a98SMartin Matuska		--inline-suppr \
14781b22a98SMartin Matuska		--suppress=unmatchedSuppression \
14881b22a98SMartin Matuska		--suppress=noValidConfiguration \
149184c1b94SMartin Matuska		--enable=warning,information -D_KERNEL \
150184c1b94SMartin Matuska		--include=@LINUX_OBJ@/include/generated/autoconf.h \
151716fd348SMartin Matuska		--include=@top_builddir@/zfs_config.h \
152184c1b94SMartin Matuska		--config-exclude=@LINUX_OBJ@/include \
153c03c5b1cSMartin Matuska		-i zstd/lib \
154184c1b94SMartin Matuska		-I @LINUX_OBJ@/include \
155184c1b94SMartin Matuska		-I @top_srcdir@/include/os/linux/kernel \
156184c1b94SMartin Matuska		-I @top_srcdir@/include/os/linux/spl \
157184c1b94SMartin Matuska		-I @top_srcdir@/include/os/linux/zfs \
158184c1b94SMartin Matuska		-I @top_srcdir@/include \
159716fd348SMartin Matuska		avl icp lua nvpair unicode zcommon zfs zstd os/linux
160184c1b94SMartin Matuska
161184c1b94SMartin Matuskacppcheck-FreeBSD:
162184c1b94SMartin Matuska	@true
163184c1b94SMartin Matuska
164184c1b94SMartin Matuskacppcheck: cppcheck-@ac_system@
165184c1b94SMartin Matuska
166eda14cbcSMatt Macydistdir:
167716fd348SMartin Matuska	cd @srcdir@ && find . -name '*.[chS]' -exec sh -c 'for f; do mkdir -p $$distdir/$${f%/*}; cp @srcdir@/$$f $$distdir/$$f; done' _ {} +
168eda14cbcSMatt Macy	cp @srcdir@/Makefile.bsd $$distdir/Makefile.bsd
169716fd348SMartin Matuska
170716fd348SMartin Matuskagen-zstd-symbols:
171716fd348SMartin Matuska	for obj in $(addprefix zstd/,$(ZSTD_UPSTREAM_OBJS)); do echo; echo "/* $${obj#zstd/}: */"; @OBJDUMP@ -t $$obj | awk '$$2 == "g" && !/ zfs_/ {print "#define\t" $$6 " zfs_" $$6}' | sort; done >> zstd/include/zstd_compat_wrapper.h
172716fd348SMartin Matuska
173716fd348SMartin Matuskacheck-zstd-symbols:
174cbfe9975SMartin Matuska	@OBJDUMP@ -t $(addprefix zstd/,$(ZSTD_UPSTREAM_OBJS)) | awk '/file format/ {print}  $$2 == "g" && (!/ zfs_/ && !/ __pfx_zfs_/) {++ret; print}  END {exit ret}'
175