Makefile.mdset revision 1.21
1# $NetBSD: Makefile.mdset,v 1.21 2003/03/11 07:18:38 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 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# ${MDSET} ; ${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 ${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