Makefile.mdset revision 1.8
1# $NetBSD: Makefile.mdset,v 1.8 2002/04/14 06:18:14 lukem Exp $ 2# 3# Makefile snippet to ${MDSETIMAGE} file system images into kernels 4# 5 6# 7# Required variables: 8# _SRC_TOP_ 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 (with 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# MDSETDIR Where to install release kernels. 23# 24# MDSET.${FILENAME}.post For each kernel named ${FILENAME}, 25# execute this after ${NM} / ${STRIP}. 26# Kernel is available as netbsd.tmp. 27# If MDSET.${FILENAME}.suffixes uses 28# this to build extra kernels, the 29# resultant file must be gzipped as 30# "netbsd.${suffix}.gz" 31# 32# MDSET.${FILENAME}.suffixes List of extra install kernel suffixes. 33# The extra kernels are usually created 34# by MDSET.${FILENAME}.post. 35# 36# Variables modified by this: 37# KERNELS List of kernel .gz files to build 38# KERNELDEPS Dependency version of ${KERNELS} (with .WAIT) 39# KERNELSYMS List of kernel .symbol files to build 40# _KERNEL.${KERNEL} Target filename for ${KERNEL} 41# 42 43.include <bsd.kernobj.mk> 44 45.for _K _I _F in ${MDSETTARGETS} # { 46_FILENAME:=${_F} # work around obscure issue in make(1) 47.if ${_FILENAME} == "-" 48_KERNEL.${_K}:= netbsd.${_K} 49.else 50_KERNEL.${_K}:= ${_F} 51.endif 52 53KERNELS+= ${_KERNEL.${_K}}.gz 54KERNELDEPS+= ${_KERNEL.${_K}}.gz .WAIT 55.for suf in ${MDSET.${_FILENAME}.suffixes} 56KERNELS+= ${_KERNEL.${_K}}.${suf}.gz .WAIT 57CLEANFILES+= netbsd.${suf} netbsd.${suf}.gz 58.endfor 59KERNELSYMS+= ${_KERNEL.${_K}}.symbols.gz 60 61.if defined(MDSET.${_FILENAME}.post) 62_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post} 63.endif 64 65${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I} 66 @echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd" 67 @echo " with: ${_I}" 68 @echo " into: ${.TARGET}" 69 @rm -f netbsd.tmp ${_KERNEL.${_K}}.symbols.gz 70 @cp ${KERNOBJDIR}/${_K}/netbsd netbsd.tmp 71 ${MDSETIMAGE} -v netbsd.tmp ${_I} 72 ${NM} netbsd.tmp | gzip -9 > ${_KERNEL.${_K}}.symbols.gz 73 ${STRIP} netbsd.tmp 74.if defined(_POST.${_KERNEL.${_K}}) 75 ${_POST.${_KERNEL.${_K}}} 76.endif 77 @gzip -9f netbsd.tmp 78 mv netbsd.tmp.gz ${.TARGET} 79 80.for suf in ${MDSET.${_FILENAME}.suffixes} 81${_KERNEL.${_K}}.${suf}.gz: .NOTMAIN ${_KERNEL.${_K}}.gz 82 mv netbsd.${suf}.gz ${.TARGET} 83.endfor 84 85.endfor # } 86 87CLEANFILES+= netbsd.tmp netbsd.tmp.gz ${KERNELS} ${KERNELSYMS} 88 89realall: ${KERNELDEPS} 90 91.if defined(MDSETDIR) 92release: check_RELEASEDIR .WAIT ${KERNELDEPS} 93 -mkdir -p ${RELEASEDIR}/${MDSETDIR} 94 ${RELINSTALL} ${KERNELS} ${KERNELSYMS} ${RELEASEDIR}/${MDSETDIR} 95.endif 96