Makefile.mdset revision 1.22
1#	$NetBSD: Makefile.mdset,v 1.22 2003/07/10 10:34:05 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.${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#					${TOOL_MDSETIMAGE} ; ${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.if !defined(_MAKEFILE_MDSET_)
53_MAKEFILE_MDSET_=1
54
55.include <bsd.kernobj.mk>
56
57.for _K _I _F in ${MDSETTARGETS}			# {
58
59_KERNEL:=${_K}			# (work around obscure issue in make(1))
60.if (${_KERNEL:M*/*} != "")
61_KERNNAME.${_K}.${_F}:=	${_K}
62.else
63_KERNNAME.${_K}.${_F}:=	${KERNOBJDIR}/${_K}/netbsd
64.endif
65
66_FILENAME:=${_F}		# (work around obscure issue in make(1))
67.if ${_FILENAME} == "-"
68_KERNEL.${_K}.${_F}:=	netbsd-${_K}
69.else
70_KERNEL.${_K}.${_F}:=	${_F}
71.endif
72
73KERNELS+=	${_KERNEL.${_K}.${_F}}.gz
74
75.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}}		# {
76KERNELS+=	${_KERNEL.${_K}.${_F}}.${_S}.gz
77CLEANFILES+=	${_KERNEL.${_K}.${_F}}.${_S}
78
79${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}}
80.if defined(${_C})
81	${${_C}}
82.else
83	@echo "No such variable \"${_C}\""
84	false
85.endif
86
87${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S}
88	-rm -f ${.TARGET}
89	gzip -9c ${.ALLSRC} > ${.TARGET}
90
91.endfor							# }
92
93.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
94KERNELSYMS+=	${_KERNEL.${_K}.${_F}}.symbols.gz
95.endif
96
97.if defined(MDSET_POST.${_FILENAME})
98_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}}
99.endif
100
101${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I}
102	@echo "mdsetimage: ${_KERNNAME.${_K}.${_F}}"
103	@echo "      with: ${_I}"
104	@echo "      into: ${.TARGET}"
105	@rm -f ${.TARGET} ${.TARGET}.symbols.gz
106	@cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}
107	${TOOL_MDSETIMAGE} -v ${.TARGET} ${_I}
108.if !defined(MDSET_NOSYMBOLS.${_FILENAME})
109	${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz
110.endif
111.if !defined(MDSET_NOSTRIP.${_FILENAME})
112	${STRIP} ${.TARGET}
113.endif
114.if defined(MDSET_POST.${_FILENAME})
115	${_POST.${.TARGET}}
116.endif
117
118${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}}
119	-rm -f ${.TARGET}
120	gzip -9c ${.ALLSRC} > ${.TARGET}
121
122CLEANFILES+=	${_KERNEL.${_K}.${_F}} 
123
124.endfor							# }
125
126CLEANFILES+=	${KERNELS} ${KERNELSYMS}
127
128realall: ${KERNELS}
129
130.if defined(MDSET_RELEASEDIR)
131release:: check_RELEASEDIR .WAIT ${KERNELS}
132	${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
133	    ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR}
134.endif
135
136
137.endif	# _MAKEFILE_MDSET_
138