Makefile.mdset revision 1.14
11.14Slukem#	$NetBSD: Makefile.mdset,v 1.14 2002/05/07 03:34:17 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.10Slukem#	NETBSDSRCDIR	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.13Slukem#			${STRIP}ped (after 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.11Slukem#	MDSET_RELEASEDIR		Where to install release kernels.
231.7Slukem#
241.13Slukem#	MDSET.${FILENAME}.nosymbols	If defined, don't generate
251.13Slukem#					${FILENAME}.symbols.gz
261.13Slukem#
271.6Slukem#	MDSET.${FILENAME}.post		For each kernel named ${FILENAME},
281.6Slukem#					execute this after ${NM} / ${STRIP}.
291.12Slukem#					Kernel is available as "${.TARGET:R}"
301.6Slukem#					If MDSET.${FILENAME}.suffixes uses
311.6Slukem#					this to build extra kernels, the
321.12Slukem#					resultant file must be gzipped by this
331.12Slukem#					as "${.TARGET:R}.${suffix}.gz"
341.7Slukem#
351.6Slukem#	MDSET.${FILENAME}.suffixes	List of extra install kernel suffixes.
361.6Slukem#					The extra kernels are usually created
371.6Slukem#					by MDSET.${FILENAME}.post.
381.3Slukem#
391.3Slukem# Variables modified by this:
401.4Slukem#	KERNELS			List of kernel .gz files to build
411.13Slukem#	KERNELSYMS		List of kernel .symbol.gz files to build
421.4Slukem#	_KERNEL.${KERNEL}	Target filename for ${KERNEL}
431.1Slukem#
441.1Slukem
451.1Slukem.include <bsd.kernobj.mk>
461.1Slukem
471.6Slukem.for _K _I _F in ${MDSETTARGETS}			# {
481.6Slukem_FILENAME:=${_F}		# work around obscure issue in make(1)
491.6Slukem.if ${_FILENAME} == "-"
501.4Slukem_KERNEL.${_K}:=	netbsd.${_K}
511.4Slukem.else
521.4Slukem_KERNEL.${_K}:=	${_F}
531.4Slukem.endif
541.1Slukem
551.8SlukemKERNELS+=	${_KERNEL.${_K}}.gz
561.6Slukem.for suf in ${MDSET.${_FILENAME}.suffixes}
571.9SthorpejKERNELS+=	${_KERNEL.${_K}}.${suf}.gz
581.12SlukemCLEANFILES+=	${_KERNEL.${_K}}.${suf}
591.5Sthorpej.endfor
601.13Slukem.if !defined(MDSET.${_FILENAME}.nosymbols)
611.4SlukemKERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
621.13Slukem.endif
631.1Slukem
641.6Slukem.if defined(MDSET.${_FILENAME}.post)
651.6Slukem_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post}
661.6Slukem.endif
671.6Slukem
681.4Slukem${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
691.7Slukem	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
701.7Slukem	@echo "      with: ${_I}"
711.7Slukem	@echo "      into: ${.TARGET}"
721.12Slukem	@rm -f ${.TARGET:R} ${.TARGET:R}.symbols.gz
731.12Slukem	@cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET:R}
741.12Slukem	${MDSETIMAGE} -v ${.TARGET:R} ${_I}
751.13Slukem.if !defined(MDSET.${_FILENAME}.nosymbols)
761.12Slukem	${NM} ${.TARGET:R} | gzip -9 > ${.TARGET:R}.symbols.gz
771.13Slukem.endif
781.12Slukem	${STRIP} ${.TARGET:R}
791.12Slukem.if defined(_POST.${.TARGET:R})
801.12Slukem	${_POST.${.TARGET:R}}
811.1Slukem.endif
821.12Slukem	gzip -9f ${.TARGET:R}
831.5Sthorpej
841.12SlukemCLEANFILES+=	${_KERNEL.${_K}} 
851.1Slukem
861.1Slukem.endfor							# }
871.1Slukem
881.12SlukemCLEANFILES+=	${KERNELS} ${KERNELSYMS}
891.1Slukem
901.12Slukemrealall: ${KERNELS}
911.1Slukem
921.11Slukem.if defined(MDSET_RELEASEDIR)
931.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS}
941.11Slukem	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
951.11Slukem	    ${RELEASEDIR}/${MDSET_RELEASEDIR}
961.1Slukem.endif
97