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