Makefile.mdset revision 1.23
11.23Slukem# $NetBSD: Makefile.mdset,v 1.23 2003/10/24 00:11:24 lukem Exp $ 21.1Slukem# 31.22Slukem# Makefile snippet to ${TOOL_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.22Slukem# MDSETTARGETS List of images to ${TOOL_MDSETIMAGE} into kernels, 101.7Slukem# containing one or more tuples of the form: 111.4Slukem# KERNEL IMAGE FILENAME 121.7Slukem# 131.22Slukem# The kernel is ${TOOL_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.23Slukem# MDSET_NOSTRIP If defined, don't strip any kernels. 291.23Slukem# 301.16Slukem# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 311.16Slukem# 321.23Slukem# MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz 331.23Slukem# 341.15Slukem# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 351.13Slukem# ${FILENAME}.symbols.gz 361.13Slukem# 371.15Slukem# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 381.6Slukem# execute this after ${NM} / ${STRIP}. 391.15Slukem# Kernel is available as "${.TARGET}" 401.15Slukem# 411.15Slukem# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 421.15Slukem# and build commands to create from 431.15Slukem# ${FILENAME} after its created by 441.22Slukem# ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}: 451.15Slukem# SUFFIX COMMANDVAR 461.15Slukem# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 471.15Slukem# COMMANDVAR is the name of the variable 481.15Slukem# containing the command to build 491.15Slukem# ${.TARGET}. 501.3Slukem# 511.3Slukem# Variables modified by this: 521.4Slukem# KERNELS List of kernel .gz files to build 531.13Slukem# KERNELSYMS List of kernel .symbol.gz files to build 541.1Slukem# 551.1Slukem 561.21Slukem.if !defined(_MAKEFILE_MDSET_) 571.21Slukem_MAKEFILE_MDSET_=1 581.21Slukem 591.1Slukem.include <bsd.kernobj.mk> 601.1Slukem 611.6Slukem.for _K _I _F in ${MDSETTARGETS} # { 621.20Slukem 631.20Slukem_KERNEL:=${_K} # (work around obscure issue in make(1)) 641.20Slukem.if (${_KERNEL:M*/*} != "") 651.20Slukem_KERNNAME.${_K}.${_F}:= ${_K} 661.20Slukem.else 671.20Slukem_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 681.20Slukem.endif 691.20Slukem 701.20Slukem_FILENAME:=${_F} # (work around obscure issue in make(1)) 711.6Slukem.if ${_FILENAME} == "-" 721.18Slukem_KERNEL.${_K}.${_F}:= netbsd-${_K} 731.4Slukem.else 741.17Slukem_KERNEL.${_K}.${_F}:= ${_F} 751.4Slukem.endif 761.1Slukem 771.17SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.gz 781.15Slukem 791.15Slukem.for _S _C in ${MDSET_SUFFIXES.${_FILENAME}} # { 801.17SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 811.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 821.15Slukem 831.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 841.15Slukem.if defined(${_C}) 851.15Slukem ${${_C}} 861.15Slukem.else 871.15Slukem @echo "No such variable \"${_C}\"" 881.15Slukem false 891.15Slukem.endif 901.15Slukem 911.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 921.15Slukem -rm -f ${.TARGET} 931.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 941.15Slukem 951.15Slukem.endfor # } 961.15Slukem 971.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 981.17SlukemKERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 991.13Slukem.endif 1001.1Slukem 1011.15Slukem.if defined(MDSET_POST.${_FILENAME}) 1021.17Slukem_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}} 1031.6Slukem.endif 1041.6Slukem 1051.20Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 1061.20Slukem @echo "mdsetimage: ${_KERNNAME.${_K}.${_F}}" 1071.7Slukem @echo " with: ${_I}" 1081.7Slukem @echo " into: ${.TARGET}" 1091.15Slukem @rm -f ${.TARGET} ${.TARGET}.symbols.gz 1101.20Slukem @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET} 1111.22Slukem ${TOOL_MDSETIMAGE} -v ${.TARGET} ${_I} 1121.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1131.15Slukem ${NM} ${.TARGET} | gzip -9 > ${.TARGET}.symbols.gz 1141.1Slukem.endif 1151.23Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 1161.15Slukem ${STRIP} ${.TARGET} 1171.16Slukem.endif 1181.15Slukem.if defined(MDSET_POST.${_FILENAME}) 1191.15Slukem ${_POST.${.TARGET}} 1201.15Slukem.endif 1211.15Slukem 1221.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 1231.15Slukem -rm -f ${.TARGET} 1241.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 1251.5Sthorpej 1261.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}} 1271.1Slukem 1281.1Slukem.endfor # } 1291.1Slukem 1301.12SlukemCLEANFILES+= ${KERNELS} ${KERNELSYMS} 1311.1Slukem 1321.12Slukemrealall: ${KERNELS} 1331.1Slukem 1341.11Slukem.if defined(MDSET_RELEASEDIR) 1351.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS} 1361.11Slukem ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 1371.19Slukem ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR} 1381.1Slukem.endif 1391.21Slukem 1401.21Slukem 1411.21Slukem.endif # _MAKEFILE_MDSET_ 142