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