Makefile.mdset revision 1.12
1#	$NetBSD: Makefile.mdset,v 1.12 2002/05/03 15:22:57 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 (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#	MDSET_RELEASEDIR		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 "${.TARGET:R}"
27#					If MDSET.${FILENAME}.suffixes uses
28#					this to build extra kernels, the
29#					resultant file must be gzipped by this
30#					as "${.TARGET:R}.${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
53.for suf in ${MDSET.${_FILENAME}.suffixes}
54KERNELS+=	${_KERNEL.${_K}}.${suf}.gz
55CLEANFILES+=	${_KERNEL.${_K}}.${suf}
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 ${.TARGET:R} ${.TARGET:R}.symbols.gz
68	@cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET:R}
69	${MDSETIMAGE} -v ${.TARGET:R} ${_I}
70	${NM} ${.TARGET:R} | gzip -9 > ${.TARGET:R}.symbols.gz
71	${STRIP} ${.TARGET:R}
72.if defined(_POST.${.TARGET:R})
73	${_POST.${.TARGET:R}}
74.endif
75	gzip -9f ${.TARGET:R}
76
77CLEANFILES+=	${_KERNEL.${_K}} 
78
79.endfor							# }
80
81CLEANFILES+=	${KERNELS} ${KERNELSYMS}
82
83realall: ${KERNELS}
84
85.if defined(MDSET_RELEASEDIR)
86release: check_RELEASEDIR .WAIT ${KERNELS}
87	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
88	    ${RELEASEDIR}/${MDSET_RELEASEDIR}
89.endif
90