Makefile.mdset revision 1.17
11.17Slukem#	$NetBSD: Makefile.mdset,v 1.17 2002/10/14 16:16:09 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.16Slukem#	MDSET_NOSTRIP.${FILENAME}	If defined, don't strip ${FILENAME}
251.16Slukem#
261.15Slukem#	MDSET_NOSYMBOLS.${FILENAME}	If defined, don't generate
271.13Slukem#					${FILENAME}.symbols.gz
281.13Slukem#
291.15Slukem#	MDSET_POST.${FILENAME}		For each kernel named ${FILENAME},
301.6Slukem#					execute this after ${NM} / ${STRIP}.
311.15Slukem#					Kernel is available as "${.TARGET}"
321.15Slukem#
331.15Slukem#	MDSET_SUFFIXES.${FILENAME}	List of extra install kernel suffixes
341.15Slukem#					and build commands to create from
351.15Slukem#					${FILENAME} after its created by
361.15Slukem#					${MDSET} ; ${NM} ; ${STRIP}:
371.15Slukem#						SUFFIX	COMMANDVAR
381.15Slukem#					"${.TARGET}" is "${FILENAME}.${SUFFIX}"
391.15Slukem#					COMMANDVAR is the name of the variable
401.15Slukem#					containing the command to build
411.15Slukem#					${.TARGET}.
421.3Slukem#
431.3Slukem# Variables modified by this:
441.4Slukem#	KERNELS			List of kernel .gz files to build
451.13Slukem#	KERNELSYMS		List of kernel .symbol.gz files to build
461.1Slukem#
471.1Slukem
481.1Slukem.include <bsd.kernobj.mk>
491.1Slukem
501.6Slukem.for _K _I _F in ${MDSETTARGETS}			# {
511.6Slukem_FILENAME:=${_F}		# work around obscure issue in make(1)
521.6Slukem.if ${_FILENAME} == "-"
531.17Slukem_KERNEL.${_K}.${_F}:=	netbsd.${_K}
541.4Slukem.else
551.17Slukem_KERNEL.${_K}.${_F}:=	${_F}
561.4Slukem.endif
571.1Slukem
581.17SlukemKERNELS+=	${_KERNEL.${_K}.${_F}}.gz
591.15Slukem
601.15Slukem.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}}		# {
611.17SlukemKERNELS+=	${_KERNEL.${_K}.${_F}}.${_S}.gz
621.17SlukemCLEANFILES+=	${_KERNEL.${_K}.${_F}}.${_S}
631.15Slukem
641.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}}
651.15Slukem.if defined(${_C})
661.15Slukem	${${_C}}
671.15Slukem.else
681.15Slukem	@echo "No such variable \"${_C}\""
691.15Slukem	false
701.15Slukem.endif
711.15Slukem
721.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S}
731.15Slukem	-rm -f ${.TARGET}
741.15Slukem	gzip -9c ${.ALLSRC} > ${.TARGET}
751.15Slukem
761.15Slukem.endfor							# }
771.15Slukem
781.15Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
791.17SlukemKERNELSYMS+=	${_KERNEL.${_K}.${_F}}.symbols.gz
801.13Slukem.endif
811.1Slukem
821.15Slukem.if defined(MDSET_POST.${_FILENAME})
831.17Slukem_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}}
841.6Slukem.endif
851.6Slukem
861.17Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
871.7Slukem	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
881.7Slukem	@echo "      with: ${_I}"
891.7Slukem	@echo "      into: ${.TARGET}"
901.15Slukem	@rm -f ${.TARGET} ${.TARGET}.symbols.gz
911.15Slukem	@cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET}
921.15Slukem	${MDSETIMAGE} -v ${.TARGET} ${_I}
931.15Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
941.15Slukem	${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz
951.1Slukem.endif
961.16Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME})
971.15Slukem	${STRIP} ${.TARGET}
981.16Slukem.endif
991.15Slukem.if defined(MDSET_POST.${_FILENAME})
1001.15Slukem	${_POST.${.TARGET}}
1011.15Slukem.endif
1021.15Slukem
1031.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}}
1041.15Slukem	-rm -f ${.TARGET}
1051.15Slukem	gzip -9c ${.ALLSRC} > ${.TARGET}
1061.5Sthorpej
1071.17SlukemCLEANFILES+=	${_KERNEL.${_K}.${_F}} 
1081.1Slukem
1091.1Slukem.endfor							# }
1101.1Slukem
1111.12SlukemCLEANFILES+=	${KERNELS} ${KERNELSYMS}
1121.1Slukem
1131.12Slukemrealall: ${KERNELS}
1141.1Slukem
1151.11Slukem.if defined(MDSET_RELEASEDIR)
1161.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS}
1171.11Slukem	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
1181.11Slukem	    ${RELEASEDIR}/${MDSET_RELEASEDIR}
1191.1Slukem.endif
120