Makefile.mdset revision 1.6
11.6Slukem#	$NetBSD: Makefile.mdset,v 1.6 2002/04/14 01:41:25 lukem Exp $
21.1Slukem#
31.1Slukem# Makefile snippet to ${MDSETIMAGE} file system images into kernels
41.1Slukem#
51.1Slukem
61.1Slukem#
71.1Slukem# Required variables:
81.1Slukem#	_SRC_TOP_	Top level of src tree (set by <bsd.own.mk>)
91.4Slukem#	MDSETTARGETS	List of images to ${MDSETIMAGE} into kernels:
101.4Slukem#				KERNEL	IMAGE	FILENAME
111.4Slukem#			The kernel ${KERNOBJDIR}/${KERNEL}/netbsd is
121.4Slukem#			${MDSETIMAGE} with ${IMAGE}, ${STRIP}ped,
131.4Slukem#			and gzipped into ${FILENAME}.gz.
141.6Slukem#			If FILENAME is "-", use "netbsd.${KERNEL}" as
151.6Slukem#			the target name.
161.1Slukem#
171.1Slukem# Optional variables:
181.6Slukem#	MDSETDIR			Where to install release kernels.
191.6Slukem#	MDSET.${FILENAME}.post		For each kernel named ${FILENAME},
201.6Slukem#					execute this after ${NM} / ${STRIP}.
211.6Slukem#					Kernel is available as netbsd.tmp.
221.6Slukem#					If MDSET.${FILENAME}.suffixes uses
231.6Slukem#					this to build extra kernels, the
241.6Slukem#					resultant file must be gzipped as
251.6Slukem#					"netbsd.${suffix}.gz"
261.6Slukem#	MDSET.${FILENAME}.suffixes	List of extra install kernel suffixes.
271.6Slukem#					The extra kernels are usually created
281.6Slukem#					by MDSET.${FILENAME}.post.
291.3Slukem#
301.3Slukem# Variables modified by this:
311.4Slukem#	KERNELS			List of kernel .gz files to build
321.4Slukem#	KERNELSYMS		List of kernel .symbol files to build
331.4Slukem#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
341.1Slukem#
351.1Slukem
361.1Slukem.include <bsd.kernobj.mk>
371.1Slukem
381.6Slukem.for _K _I _F in ${MDSETTARGETS}			# {
391.6Slukem_FILENAME:=${_F}		# work around obscure issue in make(1)
401.6Slukem.if ${_FILENAME} == "-"
411.4Slukem_KERNEL.${_K}:=	netbsd.${_K}
421.4Slukem.else
431.4Slukem_KERNEL.${_K}:=	${_F}
441.4Slukem.endif
451.1Slukem
461.6SlukemKERNELS+=	${_KERNEL.${_K}}.gz .WAIT
471.6Slukem.for suf in ${MDSET.${_FILENAME}.suffixes}
481.6SlukemKERNELS+=	${_KERNEL.${_K}}.${suf}.gz .WAIT
491.6SlukemCLEANFILES+=	netbsd.${suf} netbsd.${suf}.gz
501.5Sthorpej.endfor
511.4SlukemKERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
521.1Slukem
531.6Slukem.if defined(MDSET.${_FILENAME}.post)
541.6Slukem_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
551.6Slukem.endif
561.6Slukem
571.4Slukem${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
581.4Slukem	@echo "Populating ${_K} with ${_I} into ${.TARGET}"
591.6Slukem	@rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz
601.6Slukem	@cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp
611.4Slukem	${MDSETIMAGE} -v netbsd.tmp ${_I}
621.4Slukem	${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz
631.1Slukem	${STRIP} netbsd.tmp
641.6Slukem.if defined(_POST.${_KERNEL.${_K}})
651.6Slukem	${_POST.${_KERNEL.${_K}}}
661.1Slukem.endif
671.6Slukem	@gzip -9f netbsd.tmp
681.1Slukem	mv netbsd.tmp.gz ${.TARGET}
691.5Sthorpej
701.6Slukem.for suf in ${MDSET.${_FILENAME}.suffixes}
711.5Sthorpej${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz
721.5Sthorpej	mv netbsd.${suf}.gz ${.TARGET}
731.5Sthorpej.endfor
741.1Slukem
751.1Slukem.endfor							# }
761.1Slukem
771.1SlukemCLEANFILES+=	netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS}
781.1Slukem
791.1Slukemrealall: ${KERNELS}
801.1Slukem
811.1Slukem.if defined(MDSETDIR)
821.1Slukemrelease: check_RELEASEDIR .WAIT ${KERNELS}
831.1Slukem	-mkdir -p ${RELEASEDIR}/${MDSETDIR}
841.1Slukem	${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR}
851.1Slukem.endif
86