1# $NetBSD: Makefile.mdset,v 1.26 2004/06/06 21:44:52 dsl Exp $ 2# 3# Makefile snippet to ${TOOL_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 ${TOOL_MDSETIMAGE} into kernels, 10# containing one or more tuples of the form: 11# KERNEL IMAGE FILENAME 12# 13# The kernel is ${TOOL_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 If defined, don't strip any kernels. 29# 30# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 31# 32# MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz 33# 34# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 35# ${FILENAME}.symbols.gz 36# 37# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 38# execute this after ${NM} / ${STRIP}. 39# Kernel is available as "${.TARGET}" 40# 41# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 42# and build commands to create from 43# ${FILENAME} after its created by 44# ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}: 45# SUFFIX COMMANDVAR 46# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 47# COMMANDVAR is the name of the variable 48# containing the command to build 49# ${.TARGET}. 50# 51# Variables modified by this: 52# KERNELS List of kernel .gz files to build 53# KERNELSYMS List of kernel .symbol.gz files to build 54# 55 56.if !defined(_MAKEFILE_MDSET_) 57_MAKEFILE_MDSET_=1 58 59.include <bsd.kernobj.mk> 60 61.for _K _I _F in ${MDSETTARGETS} # { 62 63_KERNEL:=${_K} # (work around obscure issue in make(1)) 64.if (${_KERNEL:M*/*} != "") 65_KERNNAME.${_K}.${_F}:= ${_K} 66.else 67_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 68.endif 69 70_FILENAME:=${_F} # (work around obscure issue in make(1)) 71.if ${_FILENAME} == "-" 72_KERNEL.${_K}.${_F}:= netbsd-${_K} 73.else 74_KERNEL.${_K}.${_F}:= ${_F} 75.endif 76 77KERNELS+= ${_KERNEL.${_K}.${_F}}.gz 78 79.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}} # { 80KERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 81CLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 82 83${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 84.if defined(${_C}) 85 ${${_C}} 86.else 87 @echo "No such variable \"${_C}\"" 88 false 89.endif 90 91${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 92 ${_MKTARGET_CREATE} 93 -rm -f ${.TARGET} 94 gzip -9c ${.ALLSRC} > ${.TARGET} 95 96.endfor # } 97 98.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 99KERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 100.endif 101 102.if defined(MDSET_POST.${_FILENAME}) 103_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}} 104.endif 105 106${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 107 ${_MKTARGET_CREATE} "(from: ${.ALLSRC})" 108 @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz 109 @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp 110 ${TOOL_MDSETIMAGE} -v ${.TARGET}.tmp ${_I} 111.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 112 ${NM} ${.TARGET}.tmp | gzip -9 > ${.TARGET}.symbols.gz 113.endif 114.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 115 ${STRIP} -R .comment -R .ident ${.TARGET}.tmp 116.endif 117 @mv ${.TARGET}.tmp ${.TARGET} 118.if defined(MDSET_POST.${_FILENAME}) 119 ${_POST.${.TARGET}} 120.endif 121 122${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 123 ${_MKTARGET_CREATE} 124 -rm -f ${.TARGET} 125 gzip -9c ${.ALLSRC} > ${.TARGET} 126 127CLEANFILES+= ${_KERNEL.${_K}.${_F}} 128 129.endfor # } 130 131CLEANFILES+= ${KERNELS} ${KERNELSYMS} 132 133realall: ${KERNELS} 134 135.if defined(MDSET_RELEASEDIR) 136release:: check_RELEASEDIR .WAIT ${KERNELS} 137 ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 138 ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR} 139.endif 140 141 142.endif # _MAKEFILE_MDSET_ 143