Makefile.mdset revision 1.13
1#	$NetBSD: Makefile.mdset,v 1.13 2002/05/05 13:02:44 lukem Exp $
2#
3# Makefile snippet to ${MDSETIMAGE} file system images into kernels
4#
5
6#
7# Required variables:
8#	NETBSDSRCDIR	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 (after 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#	MDSET_RELEASEDIR		Where to install release kernels.
23#
24#	MDSET.${FILENAME}.nosymbols	If defined, don't generate
25#					${FILENAME}.symbols.gz
26#
27#	MDSET.${FILENAME}.post		For each kernel named ${FILENAME},
28#					execute this after ${NM} / ${STRIP}.
29#					Kernel is available as "${.TARGET:R}"
30#					If MDSET.${FILENAME}.suffixes uses
31#					this to build extra kernels, the
32#					resultant file must be gzipped by this
33#					as "${.TARGET:R}.${suffix}.gz"
34#
35#	MDSET.${FILENAME}.suffixes	List of extra install kernel suffixes.
36#					The extra kernels are usually created
37#					by MDSET.${FILENAME}.post.
38#
39# Variables modified by this:
40#	KERNELS			List of kernel .gz files to build
41#	KERNELSYMS		List of kernel .symbol.gz files to build
42#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
43#
44
45.include <bsd.kernobj.mk>
46
47.for _K _I _F in ${MDSETTARGETS}			# {
48_FILENAME:=${_F}		# work around obscure issue in make(1)
49.if ${_FILENAME} == "-"
50_KERNEL.${_K}:=	netbsd.${_K}
51.else
52_KERNEL.${_K}:=	${_F}
53.endif
54
55KERNELS+=	${_KERNEL.${_K}}.gz
56.for suf in ${MDSET.${_FILENAME}.suffixes}
57KERNELS+=	${_KERNEL.${_K}}.${suf}.gz
58CLEANFILES+=	${_KERNEL.${_K}}.${suf}
59.endfor
60.if !defined(MDSET.${_FILENAME}.nosymbols)
61KERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
62.endif
63
64.if defined(MDSET.${_FILENAME}.post)
65_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
66.endif
67
68${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
69	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
70	@echo "      with: ${_I}"
71	@echo "      into: ${.TARGET}"
72	@rm -f ${.TARGET:R} ${.TARGET:R}.symbols.gz
73	@cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET:R}
74	${MDSETIMAGE} -v ${.TARGET:R} ${_I}
75.if !defined(MDSET.${_FILENAME}.nosymbols)
76	${NM} ${.TARGET:R} | gzip -9 > ${.TARGET:R}.symbols.gz
77.endif
78	${STRIP} ${.TARGET:R}
79.if defined(_POST.${.TARGET:R})
80	${_POST.${.TARGET:R}}
81.endif
82	gzip -9f ${.TARGET:R}
83
84CLEANFILES+=	${_KERNEL.${_K}} 
85
86.endfor							# }
87
88CLEANFILES+=	${KERNELS} ${KERNELSYMS}
89
90realall: ${KERNELS}
91
92.if defined(MDSET_RELEASEDIR)
93release: check_RELEASEDIR .WAIT ${KERNELS}
94	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
95	    ${RELEASEDIR}/${MDSET_RELEASEDIR}
96.endif
97