1# $NetBSD: Makefile.mdset,v 1.16 2002/05/10 02:31:45 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 FILENAME is "-", use "netbsd.${KERNEL}" as 19# the target name. 20# 21# Optional variables: 22# MDSET_RELEASEDIR Where to install release kernels. 23# 24# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 25# 26# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 27# ${FILENAME}.symbols.gz 28# 29# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 30# execute this after ${NM} / ${STRIP}. 31# Kernel is available as "${.TARGET}" 32# 33# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 34# and build commands to create from 35# ${FILENAME} after its created by 36# ${MDSET} ; ${NM} ; ${STRIP}: 37# SUFFIX COMMANDVAR 38# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 39# COMMANDVAR is the name of the variable 40# containing the command to build 41# ${.TARGET}. 42# 43# Variables modified by this: 44# KERNELS List of kernel .gz files to build 45# KERNELSYMS List of kernel .symbol.gz files to build 46# 47 48.include <bsd.kernobj.mk> 49 50.for _K _I _F in ${MDSETTARGETS} # { 51_FILENAME:=${_F} # work around obscure issue in make(1) 52.if ${_FILENAME} == "-" 53_KERNEL.${_K}:= netbsd.${_K} 54.else 55_KERNEL.${_K}:= ${_F} 56.endif 57 58KERNELS+= ${_KERNEL.${_K}}.gz 59 60.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}} # { 61KERNELS+= ${_KERNEL.${_K}}.${_S}.gz 62CLEANFILES+= ${_KERNEL.${_K}}.${_S} 63 64${_KERNEL.${_K}}.${_S}: ${_KERNEL.${_K}} 65.if defined(${_C}) 66 ${${_C}} 67.else 68 @echo "No such variable \"${_C}\"" 69 false 70.endif 71 72${_KERNEL.${_K}}.${_S}.gz: ${_KERNEL.${_K}}.${_S} 73 -rm -f ${.TARGET} 74 gzip -9c ${.ALLSRC} > ${.TARGET} 75 76.endfor # } 77 78.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) 79KERNELSYMS+= ${_KERNEL.${_K}}.symbols.gz 80.endif 81 82.if defined(MDSET_POST.${_FILENAME}) 83_POST.${_KERNEL.${_K}}:= ${MDSET_POST.${_FILENAME}} 84.endif 85 86${_KERNEL.${_K}}: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I} 87 @echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd" 88 @echo " with: ${_I}" 89 @echo " into: ${.TARGET}" 90 @rm -f ${.TARGET} ${.TARGET}.symbols.gz 91 @cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET} 92 ${MDSETIMAGE} -v ${.TARGET} ${_I} 93.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) 94 ${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz 95.endif 96.if !defined(MDSET_NOSTRIP.${_FILENAME}) 97 ${STRIP} ${.TARGET} 98.endif 99.if defined(MDSET_POST.${_FILENAME}) 100 ${_POST.${.TARGET}} 101.endif 102 103${_KERNEL.${_K}}.gz: ${_KERNEL.${_K}} 104 -rm -f ${.TARGET} 105 gzip -9c ${.ALLSRC} > ${.TARGET} 106 107CLEANFILES+= ${_KERNEL.${_K}} 108 109.endfor # } 110 111CLEANFILES+= ${KERNELS} ${KERNELSYMS} 112 113realall: ${KERNELS} 114 115.if defined(MDSET_RELEASEDIR) 116release:: check_RELEASEDIR .WAIT ${KERNELS} 117 ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 118 ${RELEASEDIR}/${MDSET_RELEASEDIR} 119.endif 120