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