Makefile.mdset revision 1.29
11.29She# $NetBSD: Makefile.mdset,v 1.29 2007/06/07 15:12:34 he 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.27Slukem# MDSET_NOGZIP If defined, don't gzip any kernels. 291.27Slukem# 301.27Slukem# MDSET_NOGZIP.${FILENAME} If defined, don't gzip ${FILENAME} 311.27Slukem# 321.23Slukem# MDSET_NOSTRIP If defined, don't strip any kernels. 331.23Slukem# 341.16Slukem# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 351.16Slukem# 361.23Slukem# MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz 371.23Slukem# 381.15Slukem# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 391.13Slukem# ${FILENAME}.symbols.gz 401.13Slukem# 411.27Slukem# MDSET_POST For each kernel, 421.27Slukem# execute this after ${NM} / ${STRIP}. 431.27Slukem# Kernel is available as "${.TARGET}" 441.27Slukem# 451.15Slukem# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 461.6Slukem# execute this after ${NM} / ${STRIP}. 471.15Slukem# Kernel is available as "${.TARGET}" 481.15Slukem# 491.15Slukem# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 501.15Slukem# and build commands to create from 511.15Slukem# ${FILENAME} after its created by 521.22Slukem# ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}: 531.15Slukem# SUFFIX COMMANDVAR 541.15Slukem# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 551.15Slukem# COMMANDVAR is the name of the variable 561.15Slukem# containing the command to build 571.15Slukem# ${.TARGET}. 581.3Slukem# 591.3Slukem# Variables modified by this: 601.4Slukem# KERNELS List of kernel .gz files to build 611.13Slukem# KERNELSYMS List of kernel .symbol.gz files to build 621.1Slukem# 631.1Slukem 641.21Slukem.if !defined(_MAKEFILE_MDSET_) 651.21Slukem_MAKEFILE_MDSET_=1 661.21Slukem 671.1Slukem.include <bsd.kernobj.mk> 681.1Slukem 691.6Slukem.for _K _I _F in ${MDSETTARGETS} # { 701.20Slukem 711.20Slukem_KERNEL:=${_K} # (work around obscure issue in make(1)) 721.20Slukem.if (${_KERNEL:M*/*} != "") 731.20Slukem_KERNNAME.${_K}.${_F}:= ${_K} 741.20Slukem.else 751.20Slukem_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 761.20Slukem.endif 771.20Slukem 781.20Slukem_FILENAME:=${_F} # (work around obscure issue in make(1)) 791.6Slukem.if ${_FILENAME} == "-" 801.18Slukem_KERNEL.${_K}.${_F}:= netbsd-${_K} 811.28Sbouyer_FILENAME:= ${_KERNEL.${_K}.${_F}} 821.4Slukem.else 831.17Slukem_KERNEL.${_K}.${_F}:= ${_F} 841.4Slukem.endif 851.1Slukem 861.29She.for _S _C in ${MDSET_SUFFIXES.${_F}} # { 871.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 881.15Slukem 891.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 901.15Slukem.if defined(${_C}) 911.15Slukem ${${_C}} 921.15Slukem.else 931.15Slukem @echo "No such variable \"${_C}\"" 941.15Slukem false 951.15Slukem.endif 961.15Slukem 971.27Slukem.if defined(MDSET_NOGZIP.${_FILENAME}) && defined(MDSET_NOGZIP) 981.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S} 991.27Slukem.else # { 1001.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 1011.27Slukem 1021.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 1031.25Slukem ${_MKTARGET_CREATE} 1041.15Slukem -rm -f ${.TARGET} 1051.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 1061.27Slukem.endif # } 1071.15Slukem 1081.15Slukem.endfor # } 1091.15Slukem 1101.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1111.17SlukemKERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 1121.13Slukem.endif 1131.1Slukem 1141.27Slukem.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST) 1151.27Slukem_POST.${_KERNEL.${_K}.${_F}}:= ${${MDSET_POST.${_FILENAME}}:U${MDSET_POST}} 1161.6Slukem.endif 1171.6Slukem 1181.27Slukem 1191.27SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}} 1201.27Slukem 1211.20Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 1221.25Slukem ${_MKTARGET_CREATE} "(from: ${.ALLSRC})" 1231.24Sdsl @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz 1241.24Sdsl @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp 1251.24Sdsl ${TOOL_MDSETIMAGE} -v ${.TARGET}.tmp ${_I} 1261.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1271.24Sdsl ${NM} ${.TARGET}.tmp | gzip -9 > ${.TARGET}.symbols.gz 1281.1Slukem.endif 1291.23Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 1301.26Sdsl ${STRIP} -R .comment -R .ident ${.TARGET}.tmp 1311.16Slukem.endif 1321.24Sdsl @mv ${.TARGET}.tmp ${.TARGET} 1331.27Slukem.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST) 1341.15Slukem ${_POST.${.TARGET}} 1351.15Slukem.endif 1361.15Slukem 1371.27Slukem.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP) 1381.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}} 1391.27Slukem.else # { 1401.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.gz 1411.27Slukem 1421.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 1431.25Slukem ${_MKTARGET_CREATE} 1441.15Slukem -rm -f ${.TARGET} 1451.15Slukem gzip -9c ${.ALLSRC} > ${.TARGET} 1461.27Slukem.endif # } 1471.1Slukem 1481.1Slukem.endfor # } 1491.1Slukem 1501.12SlukemCLEANFILES+= ${KERNELS} ${KERNELSYMS} 1511.1Slukem 1521.12Slukemrealall: ${KERNELS} 1531.1Slukem 1541.11Slukem.if defined(MDSET_RELEASEDIR) 1551.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS} 1561.11Slukem ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 1571.19Slukem ${RELEASEDIR}/${MACHINE}/${MDSET_RELEASEDIR} 1581.1Slukem.endif 1591.21Slukem 1601.21Slukem 1611.21Slukem.endif # _MAKEFILE_MDSET_ 162