]>
Commit | Line | Data |
---|---|---|
2d62d8a4 FG |
1 | #!/usr/bin/make -f |
2 | # -*- makefile -*- | |
3 | ||
4 | # Uncomment this to turn on verbose mode. | |
5 | #export DH_VERBOSE=1 | |
6 | ||
e96d2ab3 | 7 | # TODO: check for headers not being installed |
66aed5b8 | 8 | BUILD_DIR=$(shell pwd) |
2d62d8a4 | 9 | |
e96d2ab3 | 10 | include /usr/share/dpkg/default.mk |
66aed5b8 | 11 | include debian/rules.d/env.mk |
073584c3 | 12 | include debian/rules.d/$(DEB_BUILD_ARCH).mk |
e96d2ab3 | 13 | |
93c76a4a TL |
14 | MAKEFLAGS += $(subst parallel=,-j,$(filter parallel=%,${DEB_BUILD_OPTIONS})) |
15 | ||
e96d2ab3 | 16 | CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate) |
3a6fd39f | 17 | CHANGELOG_DATE_UTC_ISO := $(shell date -u -d '$(CHANGELOG_DATE)' +%Y-%m-%dT%H:%MZ) |
e96d2ab3 | 18 | |
6e72c5b2 FG |
19 | PMX_KERNEL_PKG=proxmox-kernel-$(KVNAME) |
20 | PMX_KERNEL_SERIES_PKG=proxmox-kernel-$(KERNEL_MAJMIN) | |
21 | PMX_DEBUG_KERNEL_PKG=proxmox-kernel-$(KVNAME)-dbgsym | |
22 | PMX_HEADER_PKG=proxmox-headers-$(KVNAME) | |
23 | PMX_USR_HEADER_PKG=proxmox-kernel-libc-dev | |
2b3d5a22 FG |
24 | PMX_KERNEL_SIGNING_TEMPLATE_PKG=proxmox-kernel-${KVNAME}-signed-template |
25 | PMX_KERNEL_SIGNED_VERSION := $(shell echo ${DEB_VERSION} | sed -e 's/-/+/') | |
073584c3 TL |
26 | LINUX_TOOLS_PKG=linux-tools-$(KERNEL_MAJMIN) |
27 | KERNEL_SRC_COPY=$(KERNEL_SRC)_tmp | |
e96d2ab3 FG |
28 | |
29 | # TODO: split for archs, move to files? | |
6e72c5b2 | 30 | PMX_CONFIG_OPTS= \ |
e96d2ab3 FG |
31 | -m INTEL_MEI_WDT \ |
32 | -d CONFIG_SND_PCM_OSS \ | |
33 | -e CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \ | |
34 | -d CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS \ | |
35 | -m CONFIG_CEPH_FS \ | |
36 | -m CONFIG_BLK_DEV_NBD \ | |
37 | -m CONFIG_BLK_DEV_RBD \ | |
23214d3d | 38 | -m CONFIG_BLK_DEV_UBLK \ |
b481f897 | 39 | -d CONFIG_SND_PCSP \ |
e96d2ab3 FG |
40 | -m CONFIG_BCACHE \ |
41 | -m CONFIG_JFS_FS \ | |
42 | -m CONFIG_HFS_FS \ | |
43 | -m CONFIG_HFSPLUS_FS \ | |
ee4a13ea | 44 | -e CIFS_SMB_DIRECT \ |
b77e82cc | 45 | -e CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU \ |
e96d2ab3 FG |
46 | -e CONFIG_BRIDGE \ |
47 | -e CONFIG_BRIDGE_NETFILTER \ | |
48 | -e CONFIG_BLK_DEV_SD \ | |
49 | -e CONFIG_BLK_DEV_SR \ | |
50 | -e CONFIG_BLK_DEV_DM \ | |
f4ddb149 | 51 | -m CONFIG_BLK_DEV_NVME \ |
eb6667c9 | 52 | -e CONFIG_NLS_ISO8859_1 \ |
e96d2ab3 FG |
53 | -d CONFIG_INPUT_EVBUG \ |
54 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND \ | |
56745647 | 55 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL \ |
e96d2ab3 | 56 | -e CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE \ |
629d8797 | 57 | -e CONFIG_SYSFB_SIMPLEFB \ |
15d10810 | 58 | -e CONFIG_DRM_SIMPLEDRM \ |
345bdbd2 FG |
59 | -e CONFIG_MODULE_SIG \ |
60 | -e CONFIG_MODULE_SIG_ALL \ | |
61 | -e CONFIG_MODULE_SIG_FORMAT \ | |
62 | --set-str CONFIG_MODULE_SIG_HASH sha512 \ | |
63 | --set-str CONFIG_MODULE_SIG_KEY certs/signing_key.pem \ | |
64 | -e CONFIG_MODULE_SIG_KEY_TYPE_RSA \ | |
65 | -e CONFIG_MODULE_SIG_SHA512 \ | |
e96d2ab3 FG |
66 | -d CONFIG_MEMCG_DISABLED \ |
67 | -e CONFIG_MEMCG_SWAP_ENABLED \ | |
ef257cb1 | 68 | -e CONFIG_HYPERV \ |
bdeaa74c | 69 | -m CONFIG_VFIO_IOMMU_TYPE1 \ |
f7fedc60 | 70 | -e CONFIG_VFIO_VIRQFD \ |
bdeaa74c TL |
71 | -m CONFIG_VFIO \ |
72 | -m CONFIG_VFIO_PCI \ | |
73 | -m CONFIG_USB_XHCI_HCD \ | |
74 | -m CONFIG_USB_XHCI_PCI \ | |
75 | -m CONFIG_USB_EHCI_HCD \ | |
76 | -m CONFIG_USB_EHCI_PCI \ | |
77 | -m CONFIG_USB_EHCI_HCD_PLATFORM \ | |
78 | -m CONFIG_USB_OHCI_HCD \ | |
79 | -m CONFIG_USB_OHCI_HCD_PCI \ | |
80 | -m CONFIG_USB_OHCI_HCD_PLATFORM \ | |
81 | -d CONFIG_USB_OHCI_HCD_SSB \ | |
82 | -m CONFIG_USB_UHCI_HCD \ | |
83 | -d CONFIG_USB_SL811_HCD_ISO \ | |
e96d2ab3 FG |
84 | -e CONFIG_MEMCG_KMEM \ |
85 | -d CONFIG_DEFAULT_CFQ \ | |
86 | -e CONFIG_DEFAULT_DEADLINE \ | |
87 | -e CONFIG_MODVERSIONS \ | |
4ce29271 | 88 | -e CONFIG_ZSTD_COMPRESS \ |
e96d2ab3 FG |
89 | -d CONFIG_DEFAULT_SECURITY_DAC \ |
90 | -e CONFIG_DEFAULT_SECURITY_APPARMOR \ | |
91 | --set-str CONFIG_DEFAULT_SECURITY apparmor \ | |
826eb0ff | 92 | -e CONFIG_MODULE_ALLOW_BTF_MISMATCH \ |
e96d2ab3 FG |
93 | -d CONFIG_UNWINDER_ORC \ |
94 | -d CONFIG_UNWINDER_GUESS \ | |
95 | -e CONFIG_UNWINDER_FRAME_POINTER \ | |
68996764 | 96 | --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""\ |
85fafb9d | 97 | --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""\ |
345bdbd2 FG |
98 | -e CONFIG_SECURITY_LOCKDOWN_LSM \ |
99 | -e CONFIG_SECURITY_LOCKDOWN_LSM_EARLY \ | |
100 | --set-str CONFIG_LSM lockdown,yama,integrity,apparmor \ | |
442eb100 SI |
101 | -e CONFIG_PAGE_TABLE_ISOLATION \ |
102 | -e CONFIG_ARCH_HAS_CPU_FINALIZE_INIT \ | |
43f8ddaa | 103 | -d CONFIG_GDS_FORCE_MITIGATION \ |
248716e2 | 104 | -d CONFIG_WQ_CPU_INTENSIVE_REPORT \ |
934b701c | 105 | -d UBSAN_BOUNDS \ |
e96d2ab3 FG |
106 | |
107 | debian/control: $(wildcard debian/*.in) | |
6e72c5b2 FG |
108 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.prerm.in > debian/$(PMX_KERNEL_PKG).prerm |
109 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postrm.in > debian/$(PMX_KERNEL_PKG).postrm | |
110 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postinst.in > debian/$(PMX_KERNEL_PKG).postinst | |
111 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-headers.postinst.in > debian/$(PMX_HEADER_PKG).postinst | |
112 | sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postrm.in > debian/$(PMX_KERNEL_SERIES_PKG).postrm | |
113 | sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postinst.in > debian/$(PMX_KERNEL_SERIES_PKG).postinst | |
114 | chmod +x debian/$(PMX_KERNEL_PKG).prerm | |
115 | chmod +x debian/$(PMX_KERNEL_PKG).postrm | |
116 | chmod +x debian/$(PMX_KERNEL_PKG).postinst | |
117 | chmod +x debian/$(PMX_KERNEL_SERIES_PKG).postrm | |
118 | chmod +x debian/$(PMX_KERNEL_SERIES_PKG).postinst | |
119 | chmod +x debian/$(PMX_HEADER_PKG).postinst | |
073584c3 | 120 | sed -e 's/@KVNAME@/$(KVNAME)/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' < debian/control.in > debian/control |
e96d2ab3 | 121 | |
2b3d5a22 FG |
122 | # signing-template |
123 | sed -e '1 s/proxmox-kernel/proxmox-kernel-signed/' -e '1 s/${DEB_VERSION}/${PMX_KERNEL_SIGNED_VERSION}/' < debian/changelog > debian/signing-template/changelog | |
124 | sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' -e 's/@UNSIGNED_VERSION@/${DEB_VERSION}/g' < debian/signing-template/control.in > debian/signing-template/control | |
125 | sed -e 's/@KVNAME@/${KVNAME}/g' < debian/signing-template/files.json.in > debian/signing-template/files.json | |
126 | sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@PKG_VERSION@/${DEB_VERSION}/' < debian/signing-template/rules.in > debian/signing-template/rules | |
127 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.prerm.in > debian/signing-template/prerm | |
128 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.postrm.in > debian/signing-template/postrm | |
129 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.postinst.in > debian/signing-template/postinst | |
130 | rm debian/signing-template/*.in | |
131 | cp debian/SOURCE debian/signing-template/ | |
132 | ||
e96d2ab3 FG |
133 | build: .compile_mark .tools_compile_mark .modules_compile_mark |
134 | ||
924ae54c | 135 | install: .install_mark .tools_install_mark .headers_install_mark .usr_headers_install_mark |
e96d2ab3 FG |
136 | dh_installdocs -A debian/copyright debian/SOURCE |
137 | dh_installchangelogs | |
138 | dh_installman | |
139 | dh_strip_nondeterminism | |
140 | dh_compress | |
141 | dh_fixperms | |
142 | ||
143 | binary: install | |
144 | debian/rules fwcheck abicheck | |
6e72c5b2 | 145 | dh_strip -N$(PMX_HEADER_PKG) -N$(PMX_USR_HEADER_PKG) |
e96d2ab3 FG |
146 | dh_makeshlibs |
147 | dh_shlibdeps | |
148 | dh_installdeb | |
149 | dh_gencontrol | |
150 | dh_md5sums | |
151 | dh_builddeb | |
152 | ||
d7236300 | 153 | .config_mark: |
6e72c5b2 | 154 | cd $(KERNEL_SRC); scripts/config $(PMX_CONFIG_OPTS) |
3fd758c5 | 155 | $(MAKE) -C $(KERNEL_SRC) olddefconfig |
5ca6d78d | 156 | # copy to allow building in parallel to kernel/module compilation without interference |
073584c3 TL |
157 | rm -rf $(KERNEL_SRC_COPY) |
158 | cp -ar $(KERNEL_SRC) $(KERNEL_SRC_COPY) | |
d7236300 FG |
159 | touch $@ |
160 | ||
161 | .compile_mark: .config_mark | |
6e72c5b2 | 162 | $(MAKE) -C $(KERNEL_SRC) KBUILD_BUILD_VERSION_TIMESTAMP="PMX $(DEB_VERSION) ($(CHANGELOG_DATE_UTC_ISO))" |
e96d2ab3 FG |
163 | touch $@ |
164 | ||
165 | .install_mark: .compile_mark .modules_compile_mark | |
6e72c5b2 FG |
166 | rm -rf debian/$(PMX_KERNEL_PKG) |
167 | mkdir -p debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) | |
168 | mkdir debian/$(PMX_KERNEL_PKG)/boot | |
169 | install -m 644 $(KERNEL_SRC)/.config debian/$(PMX_KERNEL_PKG)/boot/config-$(KVNAME) | |
170 | install -m 644 $(KERNEL_SRC)/System.map debian/$(PMX_KERNEL_PKG)/boot/System.map-$(KVNAME) | |
171 | install -m 644 $(KERNEL_SRC)/$(KERNEL_IMAGE_PATH) debian/$(PMX_KERNEL_PKG)/boot/$(KERNEL_INSTALL_FILE)-$(KVNAME) | |
172 | $(MAKE) -C $(KERNEL_SRC) INSTALL_MOD_PATH=$(BUILD_DIR)/debian/$(PMX_KERNEL_PKG)/ modules_install | |
e96d2ab3 | 173 | # install zfs drivers |
6e72c5b2 | 174 | install -d -m 0755 debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs |
fc8577c9 | 175 | install -m 644 $(MODULES)/zfs.ko $(MODULES)/spl.ko debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs |
e96d2ab3 | 176 | # remove firmware |
6e72c5b2 | 177 | rm -rf debian/$(PMX_KERNEL_PKG)/lib/firmware |
bec10498 | 178 | |
6e72c5b2 FG |
179 | ifeq ($(filter pkg.proxmox-kernel.debug,$(DEB_BUILD_PROFILES)),) |
180 | echo "'pkg.proxmox-kernel.debug' build profile disabled, skipping -dbgsym creation" | |
04f7144d | 181 | else |
6e72c5b2 FG |
182 | echo "'pkg.proxmox-kernel.debug' build profile enabled, creating -dbgsym contents" |
183 | mkdir -p debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME) | |
184 | mkdir debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/boot | |
185 | install -m 644 $(KERNEL_SRC)/vmlinux debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/boot/vmlinux-$(KVNAME) | |
186 | cp -r debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/ | |
187 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/source | |
188 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/build | |
189 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/modules.* | |
04f7144d | 190 | endif |
bec10498 | 191 | |
e96d2ab3 | 192 | # strip debug info |
6e72c5b2 | 193 | find debian/$(PMX_KERNEL_PKG)/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done |
345bdbd2 FG |
194 | |
195 | # sign modules using ephemeral, embedded key | |
196 | if grep -q CONFIG_MODULE_SIG=y ubuntu-kernel/.config ; then \ | |
197 | find debian/$(PMX_KERNEL_PKG)/lib/modules -name \*.ko -print | while read f ; do \ | |
198 | ./ubuntu-kernel/scripts/sign-file sha512 ./ubuntu-kernel/certs/signing_key.pem ubuntu-kernel/certs/signing_key.x509 "$$f" ; \ | |
199 | done; \ | |
200 | rm ./ubuntu-kernel/certs/signing_key.pem ; \ | |
201 | fi | |
e96d2ab3 | 202 | # finalize |
6e72c5b2 | 203 | /sbin/depmod -b debian/$(PMX_KERNEL_PKG)/ $(KVNAME) |
e96d2ab3 | 204 | # Autogenerate blacklist for watchdog devices (see README) |
6e72c5b2 FG |
205 | install -m 0755 -d debian/$(PMX_KERNEL_PKG)/lib/modprobe.d |
206 | ls debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/kernel/drivers/watchdog/ > watchdog-blacklist.tmp | |
e96d2ab3 | 207 | echo ipmi_watchdog.ko >> watchdog-blacklist.tmp |
6e72c5b2 FG |
208 | cat watchdog-blacklist.tmp|sed -e 's/^/blacklist /' -e 's/.ko$$//'|sort -u > debian/$(PMX_KERNEL_PKG)/lib/modprobe.d/blacklist_$(PMX_KERNEL_PKG).conf |
209 | rm -f debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/source | |
210 | rm -f debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/build | |
2b3d5a22 FG |
211 | |
212 | # copy signing template contents | |
213 | rm -rf debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG} | |
214 | mkdir -p debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian | |
215 | cp -R debian/copyright \ | |
216 | debian/signing-template/rules \ | |
217 | debian/signing-template/control \ | |
218 | debian/signing-template/source \ | |
219 | debian/signing-template/changelog \ | |
220 | debian/signing-template/prerm \ | |
221 | debian/signing-template/postrm \ | |
222 | debian/signing-template/postinst \ | |
223 | debian/signing-template/SOURCE \ | |
224 | debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian | |
225 | cp debian/signing-template/files.json debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/ | |
226 | ||
e96d2ab3 FG |
227 | touch $@ |
228 | ||
229 | .tools_compile_mark: .compile_mark | |
c642c4b0 | 230 | $(MAKE) -C $(KERNEL_SRC)/tools/perf prefix=/usr NO_LIBTRACEEVENT=1 HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 NO_LIBPYTHON=1 NO_LIBPERL=1 NO_LIBCRYPTO=1 PYTHON=python3 |
7cbdd0b9 | 231 | echo "checking GPL-2 only perf binary for library linkage with incompatible licenses.." |
073584c3 TL |
232 | ! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibbfd' |
233 | ! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibcrypto' | |
c642c4b0 | 234 | $(MAKE) -C $(KERNEL_SRC)/tools/perf NO_LIBTRACEEVENT=1 man |
e96d2ab3 FG |
235 | touch $@ |
236 | ||
237 | .tools_install_mark: .tools_compile_mark | |
073584c3 TL |
238 | rm -rf debian/$(LINUX_TOOLS_PKG) |
239 | mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/bin | |
240 | mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1 | |
241 | install -m 755 $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/perf debian/$(LINUX_TOOLS_PKG)/usr/bin/perf_$(KERNEL_MAJMIN) | |
242 | for i in $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/Documentation/*.1; do \ | |
86c0946a | 243 | fname="$${i##*/}"; manname="$${fname%.1}"; \ |
073584c3 | 244 | install -m644 "$$i" "debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \ |
86c0946a | 245 | done |
e96d2ab3 FG |
246 | touch $@ |
247 | ||
d7236300 | 248 | .headers_prepare_mark: .config_mark |
6e72c5b2 FG |
249 | rm -rf debian/$(PMX_HEADER_PKG) |
250 | mkdir -p debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
251 | install -m 0644 $(KERNEL_SRC)/.config debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
073584c3 TL |
252 | make -C $(KERNEL_SRC_COPY) mrproper |
253 | cd $(KERNEL_SRC_COPY); find . -path './debian/*' -prune \ | |
7a315510 FG |
254 | -o -path './include/*' -prune \ |
255 | -o -path './Documentation' -prune \ | |
256 | -o -path './scripts' -prune \ | |
257 | -o -type f \ | |
258 | \( \ | |
259 | -name 'Makefile*' \ | |
260 | -o -name 'Kconfig*' \ | |
261 | -o -name 'Kbuild*' \ | |
262 | -o -name '*.sh' \ | |
263 | -o -name '*.pl' \ | |
264 | \) \ | |
6e72c5b2 | 265 | -print | cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) |
073584c3 | 266 | cd $(KERNEL_SRC_COPY); \ |
7a315510 | 267 | ( \ |
073584c3 | 268 | find arch/$(KERNEL_HEADER_ARCH) -name include -type d -print | \ |
7a315510 FG |
269 | xargs -n1 -i: find : -type f \ |
270 | ) | \ | |
6e72c5b2 | 271 | cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) |
d7236300 FG |
272 | touch $@ |
273 | ||
274 | .headers_compile_mark: .headers_prepare_mark | |
275 | # set output to subdir of source to reduce number of hardcoded paths in output files | |
6e72c5b2 FG |
276 | rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) |
277 | mkdir -p $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) | |
278 | cp $(KERNEL_SRC)/.config $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG)/.config | |
279 | $(MAKE) -C $(KERNEL_SRC_COPY) O=$(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) -j1 syncconfig modules_prepare prepare scripts | |
280 | cd $(KERNEL_SRC_COPY); cp -a include scripts $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
281 | find $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) -name \*.o.ur-\* -o -name '*.cmd' | xargs rm -f | |
282 | rsync --ignore-existing -r -v -a $(addprefix $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG)/,arch include kernel scripts tools) $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/ | |
073584c3 | 283 | rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY) |
d7236300 FG |
284 | touch $@ |
285 | ||
286 | .headers_install_mark: .compile_mark .modules_compile_mark .headers_compile_mark | |
6e72c5b2 FG |
287 | cp $(KERNEL_SRC)/include/generated/compile.h debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/include/generated/compile.h |
288 | install -m 0644 $(KERNEL_SRC)/Module.symvers debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
289 | mkdir -p debian/$(PMX_HEADER_PKG)/lib/modules/$(KVNAME) | |
290 | ln -sf /usr/src/linux-headers-$(KVNAME) debian/$(PMX_HEADER_PKG)/lib/modules/$(KVNAME)/build | |
e96d2ab3 FG |
291 | touch $@ |
292 | ||
6e72c5b2 | 293 | .usr_headers_install_mark: PKG_DIR = debian/$(PMX_USR_HEADER_PKG) |
073584c3 | 294 | .usr_headers_install_mark: OUT_DIR = $(PKG_DIR)/usr |
924ae54c | 295 | .usr_headers_install_mark: .config_mark |
073584c3 TL |
296 | rm -rf '$(PKG_DIR)' |
297 | mkdir -p '$(PKG_DIR)' | |
298 | $(MAKE) -C $(KERNEL_SRC) headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR) | |
924ae54c TL |
299 | rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi |
300 | find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} + | |
301 | ||
302 | # Move include/asm to arch-specific directory | |
303 | mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH) | |
304 | mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
305 | test ! -d $(OUT_DIR)/include/arch || \ | |
306 | mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
307 | touch $@ | |
308 | ||
073584c3 | 309 | .modules_compile_mark: $(MODULES)/zfs.ko |
e96d2ab3 FG |
310 | touch $@ |
311 | ||
073584c3 TL |
312 | $(MODULES)/zfs.ko: .compile_mark |
313 | cd $(MODULES)/$(ZFSDIR); ./autogen.sh | |
314 | cd $(MODULES)/$(ZFSDIR); ./configure --with-config=kernel --with-linux=$(BUILD_DIR)/$(KERNEL_SRC) --with-linux-obj=$(BUILD_DIR)/$(KERNEL_SRC) | |
315 | $(MAKE) -C $(MODULES)/$(ZFSDIR) | |
fc8577c9 TL |
316 | cp $(MODULES)/$(ZFSDIR)/module/zfs.ko $(MODULES)/ |
317 | cp $(MODULES)/$(ZFSDIR)/module/spl.ko $(MODULES)/ | |
e96d2ab3 | 318 | |
073584c3 | 319 | fwlist-$(KVNAME): .compile_mark .modules_compile_mark |
6e72c5b2 | 320 | debian/scripts/find-firmware.pl debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) >fwlist.tmp |
e96d2ab3 FG |
321 | mv fwlist.tmp $@ |
322 | ||
323 | .PHONY: fwcheck | |
073584c3 | 324 | fwcheck: fwlist-$(KVNAME) fwlist-previous |
e96d2ab3 | 325 | @echo "checking fwlist for changes since last built firmware package.." |
073584c3 | 326 | @echo "if this check fails, add fwlist-$(KVNAME) to the pve-firmware repository and upload a new firmware package together with the $(KVNAME) kernel" |
e96d2ab3 | 327 | sort fwlist-previous | uniq > fwlist-previous.sorted |
073584c3 TL |
328 | sort fwlist-$(KVNAME) | uniq > fwlist-$(KVNAME).sorted |
329 | diff -up -N fwlist-previous.sorted fwlist-$(KVNAME).sorted > fwlist.diff | |
330 | rm fwlist.diff fwlist-previous.sorted fwlist-$(KVNAME).sorted | |
e96d2ab3 FG |
331 | @echo "done, no need to rebuild pve-firmware" |
332 | ||
333 | ||
073584c3 | 334 | abi-$(KVNAME): .compile_mark |
6e72c5b2 | 335 | debian/scripts/abi-generate debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/Module.symvers abi-$(KVNAME) $(KVNAME) |
e96d2ab3 FG |
336 | |
337 | .PHONY: abicheck | |
073584c3 TL |
338 | abicheck: debian/scripts/abi-check abi-$(KVNAME) abi-prev-* abi-blacklist |
339 | debian/scripts/abi-check abi-$(KVNAME) abi-prev-* $(SKIPABI) | |
e96d2ab3 FG |
340 | |
341 | .PHONY: clean |