Makefile.mdset revision 1.21
11.21Slukem# $NetBSD: Makefile.mdset,v 1.21 2003/03/11 07:18:38 lukem Exp $ 21.1Slukem# 31.1Slukem# Makefile snippet to ${MDSETIMAGE} file system images into kernels 41.1Slukem# 51.1Slukem 61.1Slukem# 71.1Slukem# Required variables: 81.10Slukem# NETBSDSRCDIR Top level of src tree (set by <bsd.own.mk>) 91.7Slukem# MDSETTARGETS List of images to ${MDSETIMAGE} into kernels, 101.7Slukem# containing one or more tuples of the form: 111.4Slukem# KERNEL IMAGE FILENAME 121.7Slukem# 131.7Slukem# The kernel is ${MDSETIMAGE} with ${IMAGE}, 141.13Slukem# ${STRIP}ped (after the symbols are stored in 151.7Slukem# ${FILENAME}.symbols.gz), and gzipped into 161.7Slukem# ${FILENAME}.gz. 171.7Slukem# 181.20Slukem# If KERNEL does not contain a `/', use 191.20Slukem# ${KERNOBJDIR}/KERNEL/netbsd as the kernel. 201.20Slukem# 211.18Slukem# If FILENAME is "-", use "netbsd-${KERNEL}" as 221.20Slukem# the target name. This may not be a sensible 231.20Slukem# name if KERNEL contains a `/'. 241.1Slukem# 251.1Slukem# Optional variables: 261.11Slukem# MDSET_RELEASEDIR Where to install release kernels. 271.7Slukem# 281.16Slukem# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 291.16Slukem# 301.15Slukem# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 311.13Slukem# ${FILENAME}.symbols.gz 321.13Slukem# 331.15Slukem# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 341.6Slukem# execute this after ${NM} / ${STRIP}. 351.15Slukem# Kernel is available as "${.TARGET}" 361.15Slukem# 371.15Slukem# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 381.15Slukem# and build commands to create from 391.15Slukem# ${FILENAME} after its created by 401.15Slukem# ${MDSET} ; ${NM} ; ${STRIP}: 411.15Slukem# SUFFIX COMMANDVAR 421.15Slukem# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 431.15Slukem# COMMANDVAR is the name of the variable 441.15Slukem# containing the command to build 451.15Slukem# ${.TARGET}. 461.3Slukem# 471.3Slukem# Variables modified by this: 481.4Slukem# KERNELS List of kernel .gz files to build 491.13Slukem# KERNELSYMS List of kernel .symbol.gz files to build 501.1Slukem# 511.1Slukem 521.21Slukem.if !defined(_MAKEFILE_MDSET_) 531.21Slukem_MAKEFILE_MDSET_=1 541.21Slukem 551.1Slukem.include <bsd.kernobj.mk> 561.1Slukem 571.6Slukem.for _K _I _F in ${MDSETTARGETS} # { 581.20Slukem 591.20Slukem_KERNEL:=${_K} # (work around obscure issue in make(1)) 601.20Slukem.if (${_KERNEL:M*/*} != "") 611.20Slukem_KERNNAME.${_K}.${_F}:= ${_K} 621.20Slukem.else 631.20Slukem_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 641.20Slukem.endif 651.20Slukem 661.20Slukem_FILENAME:=${_F} # (work around obscure issue in make(1)) 671.6Slukem.if ${_FILENAME} == "-" 681.18Slukem_KERNEL.${_K}.${_F}:= netbsd-${_K} 691.4Slukem.else 701.17Slukem_KERNEL.${_K}.${_F}:= ${_F} 711.4Slukem.endif 721.1Slukem 731.17SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.gz 741.15Slukem 751.15Slukem.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}} # { 761.17SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 771.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 781.15Slukem 791.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 801.15Slukem.if defined(${_C}) 811.15Slukem ${${_C}} 821.15Slukem.else 831.15Slukem @echo "No such variable \"${_C}\"" 841.15Slukem false 851.15Slukem.endif 861.15Slukem 871.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 881.15Slukem -rm -f ${.TARGET} 891.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 901.15Slukem 911.15Slukem.endfor # } 921.15Slukem 931.15Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) 941.17SlukemKERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 951.13Slukem.endif 961.1Slukem 971.15Slukem.if defined(MDSET_POST.${_FILENAME}) 981.17Slukem_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}} 991.6Slukem.endif 1001.6Slukem 1011.20Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 1021.20Slukem @echo "mdsetimage: ${_KERNNAME.${_K}.${_F}}" 1031.7Slukem @echo " with: ${_I}" 1041.7Slukem @echo " into: ${.TARGET}" 1051.15Slukem @rm -f ${.TARGET} ${.TARGET}.symbols.gz 1061.20Slukem @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET} 1071.15Slukem ${MDSETIMAGE} -v ${.TARGET} ${_I} 1081.15Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) 1091.15Slukem ${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz 1101.1Slukem.endif 1111.16Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME}) 1121.15Slukem ${STRIP} ${.TARGET} 1131.16Slukem.endif 1141.15Slukem.if defined(MDSET_POST.${_FILENAME}) 1151.15Slukem ${_POST.${.TARGET}} 1161.15Slukem.endif 1171.15Slukem 1181.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 1191.15Slukem -rm -f ${.TARGET} 1201.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 1211.5Sthorpej 1221.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}} 1231.1Slukem 1241.1Slukem.endfor # } 1251.1Slukem 1261.12SlukemCLEANFILES+= ${KERNELS} ${KERNELSYMS} 1271.1Slukem 1281.12Slukemrealall: ${KERNELS} 1291.1Slukem 1301.11Slukem.if defined(MDSET_RELEASEDIR) 1311.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS} 1321.11Slukem ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 1331.19Slukem ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR} 1341.1Slukem.endif 1351.21Slukem 1361.21Slukem 1371.21Slukem.endif # _MAKEFILE_MDSET_ 138