[BACK]Return to Makefile.mdset CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / distrib / common

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>