Makefile.mdset revision 1.8
11.8Slukem#	$NetBSD: Makefile.mdset,v 1.8 2002/04/14 06:18:14 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.7Slukem#	MDSETTARGETS	List of images to ${MDSETIMAGE} into kernels,
101.7Slukem#			containing one or more tuples of the form:
111.4Slukem#				KERNEL	IMAGE	FILENAME
121.7Slukem#
131.7Slukem#			The kernel is ${MDSETIMAGE} with ${IMAGE},
141.7Slukem#			${STRIP}ped (with the symbols are stored in
151.7Slukem#			${FILENAME}.symbols.gz), and gzipped into
161.7Slukem#			${FILENAME}.gz.
171.7Slukem#
181.6Slukem#			If FILENAME is "-", use "netbsd.${KERNEL}" as
191.6Slukem#			the target name.
201.1Slukem#
211.1Slukem# Optional variables:
221.6Slukem#	MDSETDIR			Where to install release kernels.
231.7Slukem#
241.6Slukem#	MDSET.${FILENAME}.post		For each kernel named ${FILENAME},
251.6Slukem#					execute this after ${NM} / ${STRIP}.
261.6Slukem#					Kernel is available as netbsd.tmp.
271.6Slukem#					If MDSET.${FILENAME}.suffixes uses
281.6Slukem#					this to build extra kernels, the
291.6Slukem#					resultant file must be gzipped as
301.6Slukem#					"netbsd.${suffix}.gz"
311.7Slukem#
321.6Slukem#	MDSET.${FILENAME}.suffixes	List of extra install kernel suffixes.
331.6Slukem#					The extra kernels are usually created
341.6Slukem#					by MDSET.${FILENAME}.post.
351.3Slukem#
361.3Slukem# Variables modified by this:
371.4Slukem#	KERNELS			List of kernel .gz files to build
381.8Slukem#	KERNELDEPS		Dependency version of ${KERNELS} (with .WAIT)
391.4Slukem#	KERNELSYMS		List of kernel .symbol files to build
401.4Slukem#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
411.1Slukem#
421.1Slukem
431.1Slukem.include <bsd.kernobj.mk>
441.1Slukem
451.6Slukem.for _K _I _F in ${MDSETTARGETS}			# {
461.6Slukem_FILENAME:=${_F}		# work around obscure issue in make(1)
471.6Slukem.if ${_FILENAME} == "-"
481.4Slukem_KERNEL.${_K}:=	netbsd.${_K}
491.4Slukem.else
501.4Slukem_KERNEL.${_K}:=	${_F}
511.4Slukem.endif
521.1Slukem
531.8SlukemKERNELS+=	${_KERNEL.${_K}}.gz
541.8SlukemKERNELDEPS+=	${_KERNEL.${_K}}.gz .WAIT
551.6Slukem.for suf in ${MDSET.${_FILENAME}.suffixes}
561.6SlukemKERNELS+=	${_KERNEL.${_K}}.${suf}.gz .WAIT
571.6SlukemCLEANFILES+=	netbsd.${suf} netbsd.${suf}.gz
581.5Sthorpej.endfor
591.4SlukemKERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
601.1Slukem
611.6Slukem.if defined(MDSET.${_FILENAME}.post)
621.6Slukem_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
631.6Slukem.endif
641.6Slukem
651.4Slukem${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
661.7Slukem	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
671.7Slukem	@echo "      with: ${_I}"
681.7Slukem	@echo "      into: ${.TARGET}"
691.6Slukem	@rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz
701.6Slukem	@cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp
711.4Slukem	${MDSETIMAGE} -v netbsd.tmp ${_I}
721.4Slukem	${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz
731.1Slukem	${STRIP} netbsd.tmp
741.6Slukem.if defined(_POST.${_KERNEL.${_K}})
751.6Slukem	${_POST.${_KERNEL.${_K}}}
761.1Slukem.endif
771.6Slukem	@gzip -9f netbsd.tmp
781.1Slukem	mv netbsd.tmp.gz ${.TARGET}
791.5Sthorpej
801.6Slukem.for suf in ${MDSET.${_FILENAME}.suffixes}
811.5Sthorpej${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz
821.5Sthorpej	mv netbsd.${suf}.gz ${.TARGET}
831.5Sthorpej.endfor
841.1Slukem
851.1Slukem.endfor							# }
861.1Slukem
871.1SlukemCLEANFILES+=	netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS}
881.1Slukem
891.8Slukemrealall: ${KERNELDEPS}
901.1Slukem
911.1Slukem.if defined(MDSETDIR)
921.8Slukemrelease: check_RELEASEDIR .WAIT ${KERNELDEPS}
931.1Slukem	-mkdir -p ${RELEASEDIR}/${MDSETDIR}
941.1Slukem	${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR}
951.1Slukem.endif
96