Annotation of src/distrib/common/Makefile.mdset, Revision 1.35.12.2
1.35.12.2! tls 1: # $NetBSD$
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.35 jym 32: # MDSET_NOIMAGE.${FILENAME} If defined, don't add ${IMAGE} to
33: # ${FILENAME}
34: #
1.23 lukem 35: # MDSET_NOSTRIP If defined, don't strip any kernels.
36: #
1.16 lukem 37: # MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME}
38: #
1.23 lukem 39: # MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz
40: #
1.15 lukem 41: # MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate
1.13 lukem 42: # ${FILENAME}.symbols.gz
43: #
1.27 lukem 44: # MDSET_POST For each kernel,
45: # execute this after ${NM} / ${STRIP}.
46: # Kernel is available as "${.TARGET}"
47: #
1.15 lukem 48: # MDSET_POST.${FILENAME} For each kernel named ${FILENAME},
1.6 lukem 49: # execute this after ${NM} / ${STRIP}.
1.15 lukem 50: # Kernel is available as "${.TARGET}"
51: #
52: # MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes
53: # and build commands to create from
54: # ${FILENAME} after its created by
1.22 lukem 55: # ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}:
1.15 lukem 56: # SUFFIX COMMANDVAR
57: # "${.TARGET}" is "${FILENAME}.${SUFFIX}"
58: # COMMANDVAR is the name of the variable
59: # containing the command to build
60: # ${.TARGET}.
1.3 lukem 61: #
62: # Variables modified by this:
1.4 lukem 63: # KERNELS List of kernel .gz files to build
1.13 lukem 64: # KERNELSYMS List of kernel .symbol.gz files to build
1.1 lukem 65: #
66:
1.21 lukem 67: .if !defined(_MAKEFILE_MDSET_)
68: _MAKEFILE_MDSET_=1
69:
1.1 lukem 70: .include <bsd.kernobj.mk>
71:
1.35.12.1 tls 72: # The default is to build for all MDSETTARGETS
73: ALL_KERNELS?= +
74:
1.6 lukem 75: .for _K _I _F in ${MDSETTARGETS} # {
1.35.12.1 tls 76: .for currentsel in ${ALL_KERNELS} # {
77: .if ${currentsel} == "+" || ${_K} == ${currentsel}
1.20 lukem 78:
79: _KERNEL:=${_K} # (work around obscure issue in make(1))
80: .if (${_KERNEL:M*/*} != "")
81: _KERNNAME.${_K}.${_F}:= ${_K}
82: .else
83: _KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd
84: .endif
85:
86: _FILENAME:=${_F} # (work around obscure issue in make(1))
1.6 lukem 87: .if ${_FILENAME} == "-"
1.18 lukem 88: _KERNEL.${_K}.${_F}:= netbsd-${_K}
1.28 bouyer 89: _FILENAME:= ${_KERNEL.${_K}.${_F}}
1.4 lukem 90: .else
1.17 lukem 91: _KERNEL.${_K}.${_F}:= ${_F}
1.4 lukem 92: .endif
1.1 lukem 93:
1.29 he 94: .for _S _C in ${MDSET_SUFFIXES.${_F}} # {
1.17 lukem 95: CLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S}
1.15 lukem 96:
1.17 lukem 97: ${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}}
1.15 lukem 98: .if defined(${_C})
99: ${${_C}}
100: .else
101: @echo "No such variable \"${_C}\""
102: false
103: .endif
104:
1.27 lukem 105: .if defined(MDSET_NOGZIP.${_FILENAME}) && defined(MDSET_NOGZIP)
106: KERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}
107: .else # {
108: KERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz
109:
1.17 lukem 110: ${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S}
1.25 lukem 111: ${_MKTARGET_CREATE}
1.15 lukem 112: -rm -f ${.TARGET}
1.35.12.2! tls 113: ${TOOL_GZIP_N} -9c ${.ALLSRC} > ${.TARGET}
1.27 lukem 114: .endif # }
1.15 lukem 115:
116: .endfor # }
117:
1.23 lukem 118: .if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS)
1.17 lukem 119: KERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz
1.13 lukem 120: .endif
1.1 lukem 121:
1.30 chris 122: .if defined(MDSET_POST.${_FILENAME})
123: _POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}}
124: .elif defined(MDSET_POST)
125: _POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST}
1.6 lukem 126: .endif
127:
1.27 lukem 128:
129: CLEANFILES+= ${_KERNEL.${_K}.${_F}}
130:
1.31 ad 131: .if defined(MDSET_NOIMAGE.${_FILENAME})
132: ${_I}=
133: .endif
134:
1.33 agc 135: # Darwin requires a special hack - this is documented in
136: # doc/HACKS, and just works around the problems described more
137: # fully in http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html
138: OPSYS!= uname -s
139: .if ${OPSYS} == "Darwin"
140: MDSETIMAGEFLAGS=
141: .else
142: MDSETIMAGEFLAGS=-v
143: .endif
144:
1.20 lukem 145: ${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I}
1.25 lukem 146: ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
1.24 dsl 147: @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz
148: @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp
1.31 ad 149: .if !defined(MDSET_NOIMAGE.${_FILENAME})
1.33 agc 150: ${TOOL_MDSETIMAGE} ${MDSETIMAGEFLAGS} ${.TARGET}.tmp ${_I}
1.31 ad 151: .endif
1.23 lukem 152: .if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS)
1.35.12.2! tls 153: ${NM} ${.TARGET}.tmp | ${TOOL_GZIP_N} -9 > ${.TARGET}.symbols.gz
1.1 lukem 154: .endif
1.23 lukem 155: .if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP)
1.35.12.2! tls 156: ${STRIP} -R .eh_frame -R .eh_frame_hdr -R .comment -R .ident ${.TARGET}.tmp
1.16 lukem 157: .endif
1.24 dsl 158: @mv ${.TARGET}.tmp ${.TARGET}
1.27 lukem 159: .if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST)
1.15 lukem 160: ${_POST.${.TARGET}}
161: .endif
162:
1.27 lukem 163: .if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP)
164: KERNELS+= ${_KERNEL.${_K}.${_F}}
165: .else # {
166: KERNELS+= ${_KERNEL.${_K}.${_F}}.gz
167:
1.17 lukem 168: ${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}}
1.25 lukem 169: ${_MKTARGET_CREATE}
1.15 lukem 170: -rm -f ${.TARGET}
1.35.12.2! tls 171: ${TOOL_GZIP_N} -9c ${.ALLSRC} > ${.TARGET}
1.27 lukem 172: .endif # }
1.1 lukem 173:
1.35.12.1 tls 174: .endif
175: .endfor # }
1.1 lukem 176: .endfor # }
177:
1.12 lukem 178: CLEANFILES+= ${KERNELS} ${KERNELSYMS}
1.1 lukem 179:
1.12 lukem 180: realall: ${KERNELS}
1.1 lukem 181:
1.11 lukem 182: .if defined(MDSET_RELEASEDIR)
1.14 lukem 183: release:: check_RELEASEDIR .WAIT ${KERNELS}
1.35.12.1 tls 184: test -z "${KERNELS}" || \
1.11 lukem 185: ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \
1.32 matt 186: ${RELEASEDIR}/${RELEASEMACHINEDIR}/${MDSET_RELEASEDIR}
1.1 lukem 187: .endif
1.21 lukem 188:
189:
190: .endif # _MAKEFILE_MDSET_
CVSweb <webmaster@jp.NetBSD.org>