Makefile.mdset revision 1.9
1#	$NetBSD: Makefile.mdset,v 1.9 2002/04/24 21:03:42 thorpej 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
57KERNELDEPS+=	${_KERNEL.${_K}}.${suf}.gz .WAIT
58CLEANFILES+=	netbsd.${suf} netbsd.${suf}.gz
59.endfor
60KERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
61
62.if defined(MDSET.${_FILENAME}.post)
63_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
64.endif
65
66${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
67	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
68	@echo "      with: ${_I}"
69	@echo "      into: ${.TARGET}"
70	@rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz
71	@cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp
72	${MDSETIMAGE} -v netbsd.tmp ${_I}
73	${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz
74	${STRIP} netbsd.tmp
75.if defined(_POST.${_KERNEL.${_K}})
76	${_POST.${_KERNEL.${_K}}}
77.endif
78	@gzip -9f netbsd.tmp
79	mv netbsd.tmp.gz ${.TARGET}
80
81.for suf in ${MDSET.${_FILENAME}.suffixes}
82${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz
83	mv netbsd.${suf}.gz ${.TARGET}
84.endfor
85
86.endfor							# }
87
88CLEANFILES+=	netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS}
89
90realall: ${KERNELDEPS}
91
92.if defined(MDSETDIR)
93release: check_RELEASEDIR .WAIT ${KERNELDEPS}
94	-mkdir -p ${RELEASEDIR}/${MDSETDIR}
95	${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR}
96.endif
97