Annotation of src/distrib/common/Makefile.mdset, Revision 1.28
1.28 ! bouyer 1: # $NetBSD: Makefile.mdset,v 1.27 2005/05/31 16:23:37 lukem Exp $
1.1 lukem 2: #
1.22 lukem 3: # Makefile snippet to ${TOOL_MDSETIMAGE} file system images into kernels
1.1 lukem 4: #
5:
6: #
7: # Required variables:
1.10 lukem 8: # NETBSDSRCDIR Top level of src tree (set by <bsd.own.mk>)
1.22 lukem 9: # MDSETTARGETS List of images to ${TOOL_MDSETIMAGE} into kernels,
1.7 lukem 10: # containing one or more tuples of the form:
1.4 lukem 11: # KERNEL IMAGE FILENAME
1.7 lukem 12: #
1.22 lukem 13: # The kernel is ${TOOL_MDSETIMAGE} with ${IMAGE},
1.13 lukem 14: # ${STRIP}ped (after the symbols are stored in
1.7 lukem 15: # ${FILENAME}.symbols.gz), and gzipped into
16: # ${FILENAME}.gz.
17: #
1.20 lukem 18: # If KERNEL does not contain a `/', use
19: # ${KERNOBJDIR}/KERNEL/netbsd as the kernel.
20: #
1.18 lukem 21: # If FILENAME is "-", use "netbsd-${KERNEL}" as
1.20 lukem 22: # the target name. This may not be a sensible
23: # name if KERNEL contains a `/'.
1.1 lukem 24: #
25: # Optional variables:
1.11 lukem 26: # MDSET_RELEASEDIR Where to install release kernels.
1.7 lukem 27: #
1.27 lukem 28: # MDSET_NOGZIP If defined, don't gzip any kernels.
29: #
30: # MDSET_NOGZIP.${FILENAME} If defined, don't gzip ${FILENAME}
31: #
1.23 lukem 32: # MDSET_NOSTRIP If defined, don't strip any kernels.
33: #
1.16 lukem 34: # MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME}
35: #
1.23 lukem 36: # MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz
37: #
1.15 lukem 38: # MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate
1.13 lukem 39: # ${FILENAME}.symbols.gz
40: #
1.27 lukem 41: # MDSET_POST For each kernel,
42: # execute this after ${NM} / ${STRIP}.
43: # Kernel is available as "${.TARGET}"
44: #
1.15 lukem 45: # MDSET_POST.${FILENAME} For each kernel named ${FILENAME},
1.6 lukem 46: # execute this after ${NM} / ${STRIP}.
1.15 lukem 47: # Kernel is available as "${.TARGET}"
48: #
49: # MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes
50: # and build commands to create from
51: # ${FILENAME} after its created by
1.22 lukem 52: # ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}:
1.15 lukem 53: # SUFFIX COMMANDVAR
54: # "${.TARGET}" is "${FILENAME}.${SUFFIX}"
55: # COMMANDVAR is the name of the variable
56: # containing the command to build
57: # ${.TARGET}.
1.3 lukem 58: #
59: # Variables modified by this:
1.4 lukem 60: # KERNELS List of kernel .gz files to build
1.13 lukem 61: # KERNELSYMS List of kernel .symbol.gz files to build
1.1 lukem 62: #
63:
1.21 lukem 64: .if !defined(_MAKEFILE_MDSET_)
65: _MAKEFILE_MDSET_=1
66:
1.1 lukem 67: .include <bsd.kernobj.mk>
68:
1.6 lukem 69: .for _K _I _F in ${MDSETTARGETS} # {
1.20 lukem 70:
71: _KERNEL:=${_K} # (work around obscure issue in make(1))
72: .if (${_KERNEL:M*/*} != "")
73: _KERNNAME.${_K}.${_F}:= ${_K}
74: .else
75: _KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd
76: .endif
77:
78: _FILENAME:=${_F} # (work around obscure issue in make(1))
1.6 lukem 79: .if ${_FILENAME} == "-"
1.18 lukem 80: _KERNEL.${_K}.${_F}:= netbsd-${_K}
1.28 ! bouyer 81: _FILENAME:= ${_KERNEL.${_K}.${_F}}
1.4 lukem 82: .else
1.17 lukem 83: _KERNEL.${_K}.${_F}:= ${_F}
1.4 lukem 84: .endif
1.1 lukem 85:
1.15 lukem 86: .for _S _C in ${MDSET_SUFFIXES.${_FILENAME}} # {
1.17 lukem 87: CLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S}
1.15 lukem 88:
1.17 lukem 89: ${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}}
1.15 lukem 90: .if defined(${_C})
91: ${${_C}}
92: .else
93: @echo "No such variable \"${_C}\""
94: false
95: .endif
96:
1.27 lukem 97: .if defined(MDSET_NOGZIP.${_FILENAME}) && defined(MDSET_NOGZIP)
98: KERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}
99: .else # {
100: KERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz
101:
1.17 lukem 102: ${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S}
1.25 lukem 103: ${_MKTARGET_CREATE}
1.15 lukem 104: -rm -f ${.TARGET}
105: gzip -9c ${.ALLSRC} > ${.TARGET}
1.27 lukem 106: .endif # }
1.15 lukem 107:
108: .endfor # }
109:
1.23 lukem 110: .if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS)
1.17 lukem 111: KERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz
1.13 lukem 112: .endif
1.1 lukem 113:
1.27 lukem 114: .if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST)
115: _POST.${_KERNEL.${_K}.${_F}}:= ${${MDSET_POST.${_FILENAME}}:U${MDSET_POST}}
1.6 lukem 116: .endif
117:
1.27 lukem 118:
119: CLEANFILES+= ${_KERNEL.${_K}.${_F}}
120:
1.20 lukem 121: ${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I}
1.25 lukem 122: ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
1.24 dsl 123: @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz
124: @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp
125: ${TOOL_MDSETIMAGE} -v ${.TARGET}.tmp ${_I}
1.23 lukem 126: .if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS)
1.24 dsl 127: ${NM} ${.TARGET}.tmp | gzip -9 > ${.TARGET}.symbols.gz
1.1 lukem 128: .endif
1.23 lukem 129: .if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP)
1.26 dsl 130: ${STRIP} -R .comment -R .ident ${.TARGET}.tmp
1.16 lukem 131: .endif
1.24 dsl 132: @mv ${.TARGET}.tmp ${.TARGET}
1.27 lukem 133: .if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST)
1.15 lukem 134: ${_POST.${.TARGET}}
135: .endif
136:
1.27 lukem 137: .if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP)
138: KERNELS+= ${_KERNEL.${_K}.${_F}}
139: .else # {
140: KERNELS+= ${_KERNEL.${_K}.${_F}}.gz
141:
1.17 lukem 142: ${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}}
1.25 lukem 143: ${_MKTARGET_CREATE}
1.15 lukem 144: -rm -f ${.TARGET}
145: gzip -9c ${.ALLSRC} > ${.TARGET}
1.27 lukem 146: .endif # }
1.1 lukem 147:
148: .endfor # }
149:
1.12 lukem 150: CLEANFILES+= ${KERNELS} ${KERNELSYMS}
1.1 lukem 151:
1.12 lukem 152: realall: ${KERNELS}
1.1 lukem 153:
1.11 lukem 154: .if defined(MDSET_RELEASEDIR)
1.14 lukem 155: release:: check_RELEASEDIR .WAIT ${KERNELS}
1.11 lukem 156: ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
1.19 lukem 157: ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR}
1.1 lukem 158: .endif
1.21 lukem 159:
160:
161: .endif # _MAKEFILE_MDSET_
CVSweb <webmaster@jp.NetBSD.org>