Makefile.mdset revision 1.15
1#	$NetBSD: Makefile.mdset,v 1.15 2002/05/08 21:44:55 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 (after 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_NOSYMBOLS.${FILENAME}	If defined, don't generate
25#					${FILENAME}.symbols.gz
26#
27#	MDSET_POST.${FILENAME}		For each kernel named ${FILENAME},
28#					execute this after ${NM} / ${STRIP}.
29#					Kernel is available as "${.TARGET}"
30#
31#	MDSET_SUFFIXES.${FILENAME}	List of extra install kernel suffixes
32#					and build commands to create from
33#					${FILENAME} after its created by
34#					${MDSET} ; ${NM} ; ${STRIP}:
35#						SUFFIX	COMMANDVAR
36#					"${.TARGET}" is "${FILENAME}.${SUFFIX}"
37#					COMMANDVAR is the name of the variable
38#					containing the command to build
39#					${.TARGET}.
40#
41# Variables modified by this:
42#	KERNELS			List of kernel .gz files to build
43#	KERNELSYMS		List of kernel .symbol.gz files to build
44#
45
46.include <bsd.kernobj.mk>
47
48.for _K _I _F in ${MDSETTARGETS}			# {
49_FILENAME:=${_F}		# work around obscure issue in make(1)
50.if ${_FILENAME} == "-"
51_KERNEL.${_K}:=	netbsd.${_K}
52.else
53_KERNEL.${_K}:=	${_F}
54.endif
55
56KERNELS+=	${_KERNEL.${_K}}.gz
57
58.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}}		# {
59KERNELS+=	${_KERNEL.${_K}}.${_S}.gz
60CLEANFILES+=	${_KERNEL.${_K}}.${_S}
61
62${_KERNEL.${_K}}.${_S}: ${_KERNEL.${_K}}
63.if defined(${_C})
64	${${_C}}
65.else
66	@echo "No such variable \"${_C}\""
67	false
68.endif
69
70${_KERNEL.${_K}}.${_S}.gz: ${_KERNEL.${_K}}.${_S}
71	-rm -f ${.TARGET}
72	gzip -9c ${.ALLSRC} > ${.TARGET}
73
74.endfor							# }
75
76.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
77KERNELSYMS+=	${_KERNEL.${_K}}.symbols.gz
78.endif
79
80.if defined(MDSET_POST.${_FILENAME})
81_POST.${_KERNEL.${_K}}:= ${MDSET_POST.${_FILENAME}}
82.endif
83
84${_KERNEL.${_K}}: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I}
85	@echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd"
86	@echo "      with: ${_I}"
87	@echo "      into: ${.TARGET}"
88	@rm -f ${.TARGET} ${.TARGET}.symbols.gz
89	@cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET}
90	${MDSETIMAGE} -v ${.TARGET} ${_I}
91.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
92	${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz
93.endif
94	${STRIP} ${.TARGET}
95.if defined(MDSET_POST.${_FILENAME})
96	${_POST.${.TARGET}}
97.endif
98
99${_KERNEL.${_K}}.gz: ${_KERNEL.${_K}}
100	-rm -f ${.TARGET}
101	gzip -9c ${.ALLSRC} > ${.TARGET}
102
103CLEANFILES+=	${_KERNEL.${_K}} 
104
105.endfor							# }
106
107CLEANFILES+=	${KERNELS} ${KERNELSYMS}
108
109realall: ${KERNELS}
110
111.if defined(MDSET_RELEASEDIR)
112release:: check_RELEASEDIR .WAIT ${KERNELS}
113	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
114	    ${RELEASEDIR}/${MDSET_RELEASEDIR}
115.endif
116