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