Makefile.mdset revision 1.42
11.42Smaya# $NetBSD: Makefile.mdset,v 1.42 2018/01/16 09:59:37 maya 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.37She# The default is to build for all MDSETTARGETS 731.37SheALL_KERNELS?= + 741.37She 751.6Slukem.for _K _I _F in ${MDSETTARGETS} # { 761.36Smlelstv.for currentsel in ${ALL_KERNELS} # { 771.36Smlelstv.if ${currentsel} == "+" || ${_K} == ${currentsel} 781.20Slukem 791.20Slukem_KERNEL:=${_K} # (work around obscure issue in make(1)) 801.20Slukem.if (${_KERNEL:M*/*} != "") 811.20Slukem_KERNNAME.${_K}.${_F}:= ${_K} 821.20Slukem.else 831.20Slukem_KERNNAME.${_K}.${_F}:= ${KERNOBJDIR}/${_K}/netbsd 841.20Slukem.endif 851.20Slukem 861.20Slukem_FILENAME:=${_F} # (work around obscure issue in make(1)) 871.6Slukem.if ${_FILENAME} == "-" 881.18Slukem_KERNEL.${_K}.${_F}:= netbsd-${_K} 891.28Sbouyer_FILENAME:= ${_KERNEL.${_K}.${_F}} 901.4Slukem.else 911.17Slukem_KERNEL.${_K}.${_F}:= ${_F} 921.4Slukem.endif 931.1Slukem 941.29She.for _S _C in ${MDSET_SUFFIXES.${_F}} # { 951.17SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}}.${_S} 961.15Slukem 971.17Slukem${_KERNEL.${_K}.${_F}}.${_S}: ${_KERNEL.${_K}.${_F}} 981.15Slukem.if defined(${_C}) 991.15Slukem ${${_C}} 1001.15Slukem.else 1011.15Slukem @echo "No such variable \"${_C}\"" 1021.15Slukem false 1031.15Slukem.endif 1041.15Slukem 1051.42Smaya.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP) 1061.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S} 1071.27Slukem.else # { 1081.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.${_S}.gz 1091.27Slukem 1101.17Slukem${_KERNEL.${_K}.${_F}}.${_S}.gz: ${_KERNEL.${_K}.${_F}}.${_S} 1111.25Slukem ${_MKTARGET_CREATE} 1121.15Slukem -rm -f ${.TARGET} 1131.40Sapb ${TOOL_GZIP_N} -9c ${.ALLSRC} > ${.TARGET} 1141.27Slukem.endif # } 1151.15Slukem 1161.15Slukem.endfor # } 1171.15Slukem 1181.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1191.17SlukemKERNELSYMS+= ${_KERNEL.${_K}.${_F}}.symbols.gz 1201.13Slukem.endif 1211.1Slukem 1221.30Schris.if defined(MDSET_POST.${_FILENAME}) 1231.30Schris_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST.${_FILENAME}} 1241.30Schris.elif defined(MDSET_POST) 1251.30Schris_POST.${_KERNEL.${_K}.${_F}}:= ${MDSET_POST} 1261.6Slukem.endif 1271.6Slukem 1281.27Slukem 1291.27SlukemCLEANFILES+= ${_KERNEL.${_K}.${_F}} 1301.27Slukem 1311.31Sad.if defined(MDSET_NOIMAGE.${_FILENAME}) 1321.31Sad${_I}= 1331.31Sad.endif 1341.31Sad 1351.33Sagc# Darwin requires a special hack - this is documented in 1361.33Sagc# doc/HACKS, and just works around the problems described more 1371.33Sagc# fully in http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html 1381.33SagcOPSYS!= uname -s 1391.33Sagc.if ${OPSYS} == "Darwin" 1401.33SagcMDSETIMAGEFLAGS= 1411.33Sagc.else 1421.33SagcMDSETIMAGEFLAGS=-v 1431.33Sagc.endif 1441.33Sagc 1451.20Slukem${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 1461.25Slukem ${_MKTARGET_CREATE} "(from: ${.ALLSRC})" 1471.24Sdsl @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz 1481.24Sdsl @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp 1491.31Sad.if !defined(MDSET_NOIMAGE.${_FILENAME}) 1501.33Sagc ${TOOL_MDSETIMAGE} ${MDSETIMAGEFLAGS} ${.TARGET}.tmp ${_I} 1511.31Sad.endif 1521.23Slukem.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 1531.40Sapb ${NM} ${.TARGET}.tmp | ${TOOL_GZIP_N} -9 > ${.TARGET}.symbols.gz 1541.1Slukem.endif 1551.23Slukem.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 1561.41Schristos ${STRIP} -R .eh_frame -R .eh_frame_hdr -R .comment -R .ident ${MDSET_STRIPSECTIONS} ${.TARGET}.tmp 1571.16Slukem.endif 1581.24Sdsl @mv ${.TARGET}.tmp ${.TARGET} 1591.27Slukem.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST) 1601.15Slukem ${_POST.${.TARGET}} 1611.15Slukem.endif 1621.15Slukem 1631.27Slukem.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP) 1641.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}} 1651.27Slukem.else # { 1661.27SlukemKERNELS+= ${_KERNEL.${_K}.${_F}}.gz 1671.27Slukem 1681.17Slukem${_KERNEL.${_K}.${_F}}.gz: ${_KERNEL.${_K}.${_F}} 1691.25Slukem ${_MKTARGET_CREATE} 1701.15Slukem -rm -f ${.TARGET} 1711.40Sapb ${TOOL_GZIP_N} -9c ${.ALLSRC} > ${.TARGET} 1721.27Slukem.endif # } 1731.1Slukem 1741.36Smlelstv.endif 1751.36Smlelstv.endfor # } 1761.1Slukem.endfor # } 1771.1Slukem 1781.12SlukemCLEANFILES+= ${KERNELS} ${KERNELSYMS} 1791.1Slukem 1801.12Slukemrealall: ${KERNELS} 1811.1Slukem 1821.11Slukem.if defined(MDSET_RELEASEDIR) 1831.14Slukemrelease:: check_RELEASEDIR .WAIT ${KERNELS} 1841.36Smlelstv test -z "${KERNELS}" || \ 1851.11Slukem ${RELEASE_INSTALL} ${KERNELS} ${KERNELSYMS} \ 1861.32Smatt ${RELEASEDIR}/${RELEASEMACHINEDIR}/${MDSET_RELEASEDIR} 1871.1Slukem.endif 1881.21Slukem 1891.21Slukem 1901.21Slukem.endif # _MAKEFILE_MDSET_ 191