Makefile.mdset revision 1.8
1#	$NetBSD: Makefile.mdset,v 1.8 2002/04/14 06:18:14 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#	KERNELDEPS		Dependency version of ${KERNELS} (with .WAIT)
39#	KERNELSYMS		List of kernel .symbol files to build
40#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
41#
42
43.include <bsd.kernobj.mk>
44
45.for _K _I _F in ${MDSETTARGETS}			# {
46_FILENAME:=${_F}		# work around obscure issue in make(1)
47.if ${_FILENAME} == "-"
48_KERNEL.${_K}:=	netbsd.${_K}
49.else
50_KERNEL.${_K}:=	${_F}
51.endif
52
53KERNELS+=	${_KERNEL.${_K}}.gz
54KERNELDEPS+=	${_KERNEL.${_K}}.gz .WAIT
55.for suf in ${MDSET.${_FILENAME}.suffixes}
56KERNELS+=	${_KERNEL.${_K}}.${suf}.gz .WAIT
57CLEANFILES+=	netbsd.${suf} netbsd.${suf}.gz
58.endfor
59KERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
60
61.if defined(MDSET.${_FILENAME}.post)
62_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
63.endif
64
65${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
66	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
67	@echo "      with: ${_I}"
68	@echo "      into: ${.TARGET}"
69	@rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz
70	@cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp
71	${MDSETIMAGE} -v netbsd.tmp ${_I}
72	${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz
73	${STRIP} netbsd.tmp
74.if defined(_POST.${_KERNEL.${_K}})
75	${_POST.${_KERNEL.${_K}}}
76.endif
77	@gzip -9f netbsd.tmp
78	mv netbsd.tmp.gz ${.TARGET}
79
80.for suf in ${MDSET.${_FILENAME}.suffixes}
81${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz
82	mv netbsd.${suf}.gz ${.TARGET}
83.endfor
84
85.endfor							# }
86
87CLEANFILES+=	netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS}
88
89realall: ${KERNELDEPS}
90
91.if defined(MDSETDIR)
92release: check_RELEASEDIR .WAIT ${KERNELDEPS}
93	-mkdir -p ${RELEASEDIR}/${MDSETDIR}
94	${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR}
95.endif
96