3 INSTALL_MOD_DIR ?
= extra
4 INSTALL_MOD_PATH ?
= $(DESTDIR
)
7 distclean maintainer-clean
: clean
8 install: modules_install data_install
9 uninstall: modules_uninstall data_uninstall
12 .PHONY
: all distclean maintainer-clean
install uninstall check distdir \
13 modules modules-Linux modules-FreeBSD modules-unknown \
14 clean clean-Linux clean-FreeBSD \
15 modules_install modules_install-Linux modules_install-FreeBSD \
16 data_install data_install-Linux data_install-FreeBSD \
17 modules_uninstall modules_uninstall-Linux modules_uninstall-FreeBSD \
18 data_uninstall data_uninstall-Linux data_uninstall-FreeBSD \
19 cppcheck cppcheck-Linux cppcheck-FreeBSD
21 # For FreeBSD, use debug options from ./configure if not overridden.
22 export WITH_DEBUG ?
= @WITH_DEBUG@
23 export WITH_INVARIANTS ?
= @WITH_INVARIANTS@
25 # Filter out options that FreeBSD make doesn't understand
28 $(filter-out --%,$(firstword $(MFLAGS
))) \
29 $(filter -I
%,$(MFLAGS
)) \
30 $(filter -j
%,$(MFLAGS
)); \
32 while getopts
:deiI
:j
:knqrstw flag
; do \
35 :) if
[ $$OPTARG = "j" ]; then \
36 ncpus
=$$(sysctl
-n kern.smp.cpus
2>/dev
/null ||
:); \
37 if
[ -n
"$$ncpus" ]; then fmakeflags
="$$fmakeflags -j$$ncpus"; fi
; \
39 d
) fmakeflags
="$$fmakeflags -dA";; \
40 *) fmakeflags
="$$fmakeflags -$$flag$$OPTARG";; \
45 FMAKEFLAGS
= -C @abs_srcdir@
-f Makefile.bsd
$(shell $(getflags
))
47 ifneq (@abs_srcdir@
,@abs_builddir@
)
48 FMAKEFLAGS
+= MAKEOBJDIR
=@abs_builddir@
51 FMAKE
= env
-u MAKEFLAGS make
$(FMAKEFLAGS
)
54 mkdir
-p
$(sort $(dir $(spl-objs
) $(spl-
)))
55 mkdir
-p
$(sort $(dir $(zfs-objs
) $(zfs-
)))
56 $(MAKE
) -C @LINUX_OBJ@
$(if @KERNEL_CC@
,CC
=@KERNEL_CC@
) \
57 $(if @KERNEL_LD@
,LD
=@KERNEL_LD@
) $(if @KERNEL_LLVM@
,LLVM
=@KERNEL_LLVM@
) \
58 M
="$$PWD" @KERNEL_MAKE@ CONFIG_ZFS
=m modules
66 modules
: modules-@ac_system@
69 @
# Only cleanup the kernel build directories when CONFIG_KERNEL
70 @
# is defined. This indicates that kernel modules should be built.
71 @CONFIG_KERNEL_TRUE@
$(MAKE
) -C @LINUX_OBJ@ M
="$$PWD" @KERNEL_MAKE@
clean
73 $(RM
) @LINUX_SYMBOLS@ Module.markers
74 find .
-name
'*.ur-safe' -type f
-delete
79 clean: clean-@ac_system@
81 .PHONY
: modules_uninstall-Linux-legacy
82 modules_uninstall-Linux-legacy
:
83 $(RM
) -r
$(addprefix $(KMODDIR
)/$(INSTALL_MOD_DIR
)/,spl
/ avl
/ icp
/ lua
/ nvpair
/ unicode
/ zcommon
/ zfs
/ zstd
/)
85 KMODDIR
:= $(INSTALL_MOD_PATH
)/lib
/modules
/@LINUX_VERSION@
86 modules_install-Linux
: modules_uninstall-Linux-legacy
87 @
# Install the kernel modules
88 $(MAKE
) -C @LINUX_OBJ@ M
="$$PWD" modules_install \
89 INSTALL_MOD_PATH
=$(INSTALL_MOD_PATH
) \
90 INSTALL_MOD_DIR
=$(INSTALL_MOD_DIR
) \
91 KERNELRELEASE
=@LINUX_VERSION@
92 @
# Remove extraneous build products when packaging
93 if
[ -n
"$(DESTDIR)" ]; then \
94 find
$(KMODDIR
) -name
'modules.*' -delete
; \
96 @
# Debian ships tiny fake System.map files that are
97 @
# syntactically valid but just say
98 @
# "if you want system.map go install this package"
99 @
# Naturally, depmod is less than amused by this.
100 @
# So if we find it missing or with one of these present,
101 @
# we check for the alternate path for the System.map
102 sysmap
=$(INSTALL_MOD_PATH
)/boot
/System.map-@LINUX_VERSION@
; \
103 { [ -f
"$$sysmap" ] && [ $$(wc
-l
< "$$sysmap") -ge
100 ]; } || \
104 sysmap
=$(INSTALL_MOD_PATH
)/usr
/lib
/debug
/boot
/System.map-@LINUX_VERSION@
; \
105 if
[ -f
$$sysmap ]; then \
106 depmod
-ae
-F
$$sysmap @LINUX_VERSION@
; \
109 modules_install-FreeBSD
:
110 @
# Install the kernel modules
113 modules_install
: modules_install-@ac_system@
116 @mkdir
-p
$(DESTDIR
)/@
prefix@
/src
/zfs-@VERSION@
/@LINUX_VERSION@
117 cp ..
/zfs.release ..
/zfs_config.h @LINUX_SYMBOLS@
$(DESTDIR
)/@
prefix@
/src
/zfs-@VERSION@
/@LINUX_VERSION@
119 data_install-FreeBSD
:
122 data_install
: data_install-@ac_system@
124 modules_uninstall-Linux
: modules_uninstall-Linux-legacy
125 @
# Uninstall the kernel modules
126 $(RM
) $(addprefix $(KMODDIR
)/$(INSTALL_MOD_DIR
)/,zfs.ko spl.ko
)
128 modules_uninstall-FreeBSD
:
131 modules_uninstall
: modules_uninstall-@ac_system@
133 data_uninstall-Linux
:
134 $(RM
) $(addprefix $(DESTDIR
)/@
prefix@
/src
/zfs-@VERSION@
/@LINUX_VERSION@
/,zfs.release zfs_config.h @LINUX_SYMBOLS@
)
136 data_uninstall-FreeBSD
:
139 data_uninstall
: data_uninstall-@ac_system@
142 @CPPCHECK@
-j@CPU_COUNT@
--std
=c99
--quiet
--force --error-exitcode
=2 \
144 --suppress
=unmatchedSuppression \
145 --suppress
=noValidConfiguration \
146 --enable
=warning
,information
-D_KERNEL \
147 --include=@LINUX_OBJ@
/include/generated
/autoconf.h \
148 --include=@top_builddir@
/zfs_config.h \
149 --config-exclude
=@LINUX_OBJ@
/include \
151 -I @LINUX_OBJ@
/include \
152 -I @top_srcdir@
/include/os
/linux
/kernel \
153 -I @top_srcdir@
/include/os
/linux
/spl \
154 -I @top_srcdir@
/include/os
/linux
/zfs \
155 -I @top_srcdir@
/include \
156 avl icp lua nvpair unicode zcommon zfs zstd os
/linux
161 cppcheck
: cppcheck-@ac_system@
164 cd @
srcdir@
&& find .
-name
'*.[chS]' -exec sh
-c
'for f; do mkdir -p $$distdir/$${f%/*}; cp @srcdir@/$$f $$distdir/$$f; done' _
{} +
165 cp @
srcdir@
/Makefile.bsd
$$distdir/Makefile.bsd
168 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
171 @OBJDUMP@
-t
$(addprefix zstd
/,$(ZSTD_UPSTREAM_OBJS
)) | awk
'/file format/ {print} $$2 == "g" && (!/ zfs_/ && !/ __pfx_zfs_/) {++ret; print} END {exit ret}'