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