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