Makefile.mdset revision 1.35
11.35Sjym# $NetBSD: Makefile.mdset,v 1.35 2011/01/01 16:56:18 jym 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.35Sjym# MDSET_NOIMAGE.${FILENAME} If defined, don't add ${IMAGE} to 331.35Sjym# ${FILENAME} 341.35Sjym# 351.23Slukem# MDSET_NOSTRIP If defined, don't strip any kernels. 361.23Slukem# 371.16Slukem# MDSET_NOSTRIP.${FILENAME} If defined, don't strip ${FILENAME} 381.16Slukem# 391.23Slukem# MDSET_NOSYMBOLS If defined, don't generate *.symbols.gz 401.23Slukem# 411.15Slukem# MDSET_NOSYMBOLS.${FILENAME} If defined, don't generate 421.13Slukem# ${FILENAME}.symbols.gz 431.13Slukem# 441.27Slukem# MDSET_POST For each kernel, 451.27Slukem# execute this after ${NM} / ${STRIP}. 461.27Slukem# Kernel is available as "${.TARGET}" 471.27Slukem# 481.15Slukem# MDSET_POST.${FILENAME} For each kernel named ${FILENAME}, 491.6Slukem# execute this after ${NM} / ${STRIP}. 501.15Slukem# Kernel is available as "${.TARGET}" 511.15Slukem# 521.15Slukem# MDSET_SUFFIXES.${FILENAME} List of extra install kernel suffixes 531.15Slukem# and build commands to create from 541.15Slukem# ${FILENAME} after its created by 551.22Slukem# ${TOOL_MDSETIMAGE} ; ${NM} ; ${STRIP}: 561.15Slukem# SUFFIX COMMANDVAR 571.15Slukem# "${.TARGET}" is "${FILENAME}.${SUFFIX}" 581.15Slukem# COMMANDVAR is the name of the variable 591.15Slukem# containing the command to build 601.15Slukem# ${.TARGET}. 611.3Slukem# 621.3Slukem# Variables modified by this: 631.4Slukem# KERNELS List of kernel .gz files to build 641.13Slukem# KERNELSYMS List of kernel .symbol.gz files to build 651.1Slukem# 661.1Slukem 671.21Slukem.if !defined(_MAKEFILE_MDSET_) 681.21Slukem_MAKEFILE_MDSET_=1 691.21Slukem 701.1Slukem.include <bsd.kernobj.mk> 711.1Slukem 721.6Slukem.for _K _I _F in ${MDSETTARGETS} # { 731.20Slukem 741.20Slukem_KERNEL:=${_K} # (work around obscure issue in make(1)) 751.20Slukem.if (${_KERNEL:M*/*} != "") 761.20Slukem_KERNNAME.${_K}.${_F}:= ${_K} 771.20Slukem.else 781.20Slukem_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 791.20Slukem.endif 801.20Slukem 811.20Slukem_FILENAME:=${_F} # (work around obscure issue in make(1)) 821.6Slukem.if ${_FILENAME} == "-" 831.18Slukem_KERNEL.${_K}.${_F}:= netbsd-${_K} 841.28Sbouyer_FILENAME:= ${_KERNEL.${_K}.${_F}} 851.4Slukem.else 861.17Slukem_KERNEL.${_K}.${_F}:= ${_F} 871.4Slukem.endif 881.1Slukem 891.29She.for _S _C in ${MDSET_SUFFIXES.${_F}} # { 901.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 911.15Slukem 921.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 931.15Slukem.if defined(${_C}) 941.15Slukem ${${_C}} 951.15Slukem.else 961.15Slukem @echo "No such variable \"${_C}\"" 971.15Slukem false 981.15Slukem.endif 991.15Slukem 1001.27Slukem.if defined(MDSET_NOGZIP.${_FILENAME}) && defined(MDSET_NOGZIP) 1011.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S} 1021.27Slukem.else # { 1031.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 1041.27Slukem 1051.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 1061.25Slukem ${_MKTARGET_CREATE} 1071.15Slukem -rm -f ${.TARGET} 1081.34Sperry gzip -9nc ${.ALLSRC} > ${.TARGET} 1091.27Slukem.endif # } 1101.15Slukem 1111.15Slukem.endfor # } 1121.15Slukem 1131.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1141.17SlukemKERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 1151.13Slukem.endif 1161.1Slukem 1171.30Schris.if defined(MDSET_POST.${_FILENAME}) 1181.30Schris_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}} 1191.30Schris.elif defined(MDSET_POST) 1201.30Schris_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST} 1211.6Slukem.endif 1221.6Slukem 1231.27Slukem 1241.27SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}} 1251.27Slukem 1261.31Sad.if defined(MDSET_NOIMAGE.${_FILENAME}) 1271.31Sad${_I}= 1281.31Sad.endif 1291.31Sad 1301.33Sagc# Darwin requires a special hack - this is documented in 1311.33Sagc# doc/HACKS, and just works around the problems described more 1321.33Sagc# fully in http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html 1331.33SagcOPSYS!= uname -s 1341.33Sagc.if ${OPSYS} == "Darwin" 1351.33SagcMDSETIMAGEFLAGS= 1361.33Sagc.else 1371.33SagcMDSETIMAGEFLAGS=-v 1381.33Sagc.endif 1391.33Sagc 1401.20Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 1411.25Slukem ${_MKTARGET_CREATE} "(from: ${.ALLSRC})" 1421.24Sdsl @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz 1431.24Sdsl @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp 1441.31Sad.if !defined(MDSET_NOIMAGE.${_FILENAME}) 1451.33Sagc ${TOOL_MDSETIMAGE} ${MDSETIMAGEFLAGS} ${.TARGET}.tmp ${_I} 1461.31Sad.endif 1471.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1481.34Sperry ${NM} ${.TARGET}.tmp | gzip -9n > ${.TARGET}.symbols.gz 1491.1Slukem.endif 1501.23Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 1511.26Sdsl ${STRIP} -R .comment -R .ident ${.TARGET}.tmp 1521.16Slukem.endif 1531.24Sdsl @mv ${.TARGET}.tmp ${.TARGET} 1541.27Slukem.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST) 1551.15Slukem ${_POST.${.TARGET}} 1561.15Slukem.endif 1571.15Slukem 1581.27Slukem.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP) 1591.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}} 1601.27Slukem.else # { 1611.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.gz 1621.27Slukem 1631.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 1641.25Slukem ${_MKTARGET_CREATE} 1651.15Slukem -rm -f ${.TARGET} 1661.34Sperry gzip -9nc ${.ALLSRC} > ${.TARGET} 1671.27Slukem.endif # } 1681.1Slukem 1691.1Slukem.endfor # } 1701.1Slukem 1711.12SlukemCLEANFILES+= ${KERNELS} ${KERNELSYMS} 1721.1Slukem 1731.12Slukemrealall: ${KERNELS} 1741.1Slukem 1751.11Slukem.if defined(MDSET_RELEASEDIR) 1761.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS} 1771.11Slukem ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 1781.32Smatt ${RELEASEDIR}/${RELEASEMACHINEDIR}/${MDSET_RELEASEDIR} 1791.1Slukem.endif 1801.21Slukem 1811.21Slukem 1821.21Slukem.endif # _MAKEFILE_MDSET_ 183