Makefile.mdset revision 1.6
1#	$NetBSD: Makefile.mdset,v 1.6 2002/04/14 01:41:25 lukem Exp $
2#
3# Makefile snippet to ${MDSETIMAGE} file system images into kernels
4#
5
6#
7# Required variables:
8#	_SRC_TOP_	Top level of src tree (set by <bsd.own.mk>)
9#	MDSETTARGETS	List of images to ${MDSETIMAGE} into kernels:
10#				KERNEL	IMAGE	FILENAME
11#			The kernel ${KERNOBJDIR}/${KERNEL}/netbsd is
12#			${MDSETIMAGE} with ${IMAGE}, ${STRIP}ped,
13#			and gzipped into ${FILENAME}.gz.
14#			If FILENAME is "-", use "netbsd.${KERNEL}" as
15#			the target name.
16#
17# Optional variables:
18#	MDSETDIR			Where to install release kernels.
19#	MDSET.${FILENAME}.post		For each kernel named ${FILENAME},
20#					execute this after ${NM} / ${STRIP}.
21#					Kernel is available as netbsd.tmp.
22#					If MDSET.${FILENAME}.suffixes uses
23#					this to build extra kernels, the
24#					resultant file must be gzipped as
25#					"netbsd.${suffix}.gz"
26#	MDSET.${FILENAME}.suffixes	List of extra install kernel suffixes.
27#					The extra kernels are usually created
28#					by MDSET.${FILENAME}.post.
29#
30# Variables modified by this:
31#	KERNELS			List of kernel .gz files to build
32#	KERNELSYMS		List of kernel .symbol files to build
33#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
34#
35
36.include <bsd.kernobj.mk>
37
38.for _K _I _F in ${MDSETTARGETS}			# {
39_FILENAME:=${_F}		# work around obscure issue in make(1)
40.if ${_FILENAME} == "-"
41_KERNEL.${_K}:=	netbsd.${_K}
42.else
43_KERNEL.${_K}:=	${_F}
44.endif
45
46KERNELS+=	${_KERNEL.${_K}}.gz .WAIT
47.for suf in ${MDSET.${_FILENAME}.suffixes}
48KERNELS+=	${_KERNEL.${_K}}.${suf}.gz .WAIT
49CLEANFILES+=	netbsd.${suf} netbsd.${suf}.gz
50.endfor
51KERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
52
53.if defined(MDSET.${_FILENAME}.post)
54_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
55.endif
56
57${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
58	@echo "Populating ${_K} with ${_I} into ${.TARGET}"
59	@rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz
60	@cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp
61	${MDSETIMAGE} -v netbsd.tmp ${_I}
62	${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz
63	${STRIP} netbsd.tmp
64.if defined(_POST.${_KERNEL.${_K}})
65	${_POST.${_KERNEL.${_K}}}
66.endif
67	@gzip -9f netbsd.tmp
68	mv netbsd.tmp.gz ${.TARGET}
69
70.for suf in ${MDSET.${_FILENAME}.suffixes}
71${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz
72	mv netbsd.${suf}.gz ${.TARGET}
73.endfor
74
75.endfor							# }
76
77CLEANFILES+=	netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS}
78
79realall: ${KERNELS}
80
81.if defined(MDSETDIR)
82release: check_RELEASEDIR .WAIT ${KERNELS}
83	-mkdir -p ${RELEASEDIR}/${MDSETDIR}
84	${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR}
85.endif
86