Makefile.mdset revision 1.12
1# $NetBSD: Makefile.mdset,v 1.12 2002/05/03 15:22:57 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 (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# MDSET_RELEASEDIR 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 "${.TARGET:R}" 27# If MDSET.${FILENAME}.suffixes uses 28# this to build extra kernels, the 29# resultant file must be gzipped by this 30# as "${.TARGET:R}.${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# KERNELSYMS List of kernel .symbol files to build 39# _KERNEL.${KERNEL} Target filename for ${KERNEL} 40# 41 42.include <bsd.kernobj.mk> 43 44.for _K _I _F in ${MDSETTARGETS} # { 45_FILENAME:=${_F} # work around obscure issue in make(1) 46.if ${_FILENAME} == "-" 47_KERNEL.${_K}:= netbsd.${_K} 48.else 49_KERNEL.${_K}:= ${_F} 50.endif 51 52KERNELS+= ${_KERNEL.${_K}}.gz 53.for suf in ${MDSET.${_FILENAME}.suffixes} 54KERNELS+= ${_KERNEL.${_K}}.${suf}.gz 55CLEANFILES+= ${_KERNEL.${_K}}.${suf} 56.endfor 57KERNELSYMS+= ${_KERNEL.${_K}}.symbols.gz 58 59.if defined(MDSET.${_FILENAME}.post) 60_POST.${_KERNEL.${_K}}:= ${MDSET.${_FILENAME}.post} 61.endif 62 63${_KERNEL.${_K}}.gz: .NOTMAIN ${KERNOBJDIR}/${_K}/netbsd ${_I} 64 @echo "mdsetimage: ${KERNOBJDIR}/${_K}/netbsd" 65 @echo " with: ${_I}" 66 @echo " into: ${.TARGET}" 67 @rm -f ${.TARGET:R} ${.TARGET:R}.symbols.gz 68 @cp ${KERNOBJDIR}/${_K}/netbsd ${.TARGET:R} 69 ${MDSETIMAGE} -v ${.TARGET:R} ${_I} 70 ${NM} ${.TARGET:R} | gzip -9 > ${.TARGET:R}.symbols.gz 71 ${STRIP} ${.TARGET:R} 72.if defined(_POST.${.TARGET:R}) 73 ${_POST.${.TARGET:R}} 74.endif 75 gzip -9f ${.TARGET:R} 76 77CLEANFILES+= ${_KERNEL.${_K}} 78 79.endfor # } 80 81CLEANFILES+= ${KERNELS} ${KERNELSYMS} 82 83realall: ${KERNELS} 84 85.if defined(MDSET_RELEASEDIR) 86release: check_RELEASEDIR .WAIT ${KERNELS} 87 ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 88 ${RELEASEDIR}/${MDSET_RELEASEDIR} 89.endif 90