Makefile.bootcd revision 1.8
11.8Sbouyer# $NetBSD: Makefile.bootcd,v 1.8 2007/03/06 21:38:29 bouyer Exp $ 21.1Shubertf# 31.1Shubertf# Makefile snipped to create a CD/DVD ISO 41.1Shubertf# 51.1Shubertf 61.1Shubertf# XXX TODO: 71.1Shubertf# 1) merge with src/distrib/cdrom 81.1Shubertf# 2) teach makefs to add data from more than 1 directory (see below) 91.1Shubertf 101.1Shubertf# 111.1Shubertf# Required variables: 121.1Shubertf# CDBASE Basename of the iso 131.1Shubertf# 141.1Shubertf# Optional variables: 151.1Shubertf# CDRELEASE Set to 'true' to include $RELEASEDIR/$MACHINE on the CD 161.7Shubertf# CDRELEASE_NOISOS Excludes installation/cdrom directory if set 171.1Shubertf# BOOT Defaults to $DESTDIR/usr/mdec/boot 181.1Shubertf# BOOTXX_CD9660 Defaults to $DESTDIR/usr/mdec/bootxx_cd9660 191.1Shubertf# CDBOOTOPTIONS Options for installboot, eg -o console=com0,speed=9600 201.8Sbouyer# CDMAKEFSOPTIONS Options for makefs, eg bootimage=i386;bootxx,no-emul-boot 211.1Shubertf# CDROMS_RELEASEDIR Where to install ${CDBASE}.iso 221.8Sbouyer# CDINSTKERNEL instkernel directory (relative to ${.CURDIR}) 231.8Sbouyer# CDKERNELS couples of the form: 241.8Sbouyer# source name_on_cd 251.8Sbouyer# source kernels are copied from ${CDINSTKENRNEL} (or it's obj dir) 261.8Sbouyer# note that as of yet, bootxx_cd9660 can't load kernel names of more than 271.8Sbouyer# 8 chars. 281.1Shubertf# 291.1Shubertf 301.1ShubertfBOOT?= ${DESTDIR}/usr/mdec/boot 311.1ShubertfBOOTXX_CD9660?= ${DESTDIR}/usr/mdec/bootxx_cd9660 321.1ShubertfCDRELEASE?= false 331.8Sbouyer.if ${CDRELEASE} == false 341.8SbouyerCDROMS_RELEASEDIR?= ${MACHINE}/installation/cdrom 351.8Sbouyer.else 361.8SbouyerCDROMS_RELEASEDIR?= iso 371.8Sbouyer.endif 381.7Shubertf.if defined(CDRELEASE_NOISOS) 391.7ShubertfCDRELEASE_EXCLUDE= -s ',./installation/cdrom.*,,gp' 401.7Shubertf.endif 411.1Shubertf 421.8Sbouyer.include <bsd.sys.mk> # for HOST_SH 431.8Sbouyer.include <bsd.own.mk> # For PRINTOBJDIR 441.8Sbouyer.include <bsd.kernobj.mk> # For KERNSRCDIR 451.8Sbouyer 461.8SbouyerDISTRIBREV!= ${HOST_SH} ${KERNSRCDIR}/conf/osrelease.sh -s 471.8SbouyerISO_VOLID!= echo NETBSD_${DISTRIBREV} | tr a-z A-Z 481.8SbouyerPUBLISHER?= The_NetBSD_Project 491.8Sbouyer.if defined(CDMAKEFSOPTIONS) 501.8Sbouyer_CDMAKEFSOPTIONS= rockridge,label=${ISO_VOLID},publisher=${PUBLISHER},${CDMAKEFSOPTIONS} 511.8Sbouyer.else 521.8Sbouyer_CDMAKEFSOPTIONS= rockridge,label=${ISO_VOLID},publisher=${PUBLISHER} 531.8Sbouyer.endif 541.8Sbouyer 551.1Shubertf# Stuff that should come from elsewhere - XXX where? - HF 561.1ShubertfCP?= cp 571.1ShubertfRM?= rm 581.1ShubertfMKDIR?= mkdir -p 591.1ShubertfCHMOD?= chmod 601.1Shubertf 611.1Shubertf 621.1ShubertfCLEANFILES+= ${CDBASE}.iso 631.8SbouyerCLEANFILES+= bootxx.${MACHINE} 641.1Shubertf 651.1Shubertf 661.1Shubertf.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib" 671.1Shubertf 681.8Sbouyer.if defined(CDINSTKERNEL) 691.8Sbouyer_INSTKERNELNOBJDIR!= cd ${.CURDIR}/${CDINSTKERNEL} && ${PRINTOBJDIR} 701.8Sbouyer.endif 711.8Sbouyer.if exists(${DESTDIR}/usr/mdec/bootxx_cd9660) 721.8Sbouyer.if exists(${DESTDIR}/usr/mdec/boot.${MACHINE}) 731.8SbouyerBOOT2=boot.${MACHINE} 741.8Sbouyer.else 751.8SbouyerBOOT2=boot 761.8Sbouyer.endif 771.8Sbouyer.endif 781.1Shubertf 791.1Shubertfprepare: 801.1Shubertf ${MKDIR} cdrom 811.8Sbouyer.if defined(CDKERNELS) 821.8Sbouyer.for kernel target in ${CDKERNELS} 831.8Sbouyer ${CP} ${_INSTKERNELNOBJDIR}/${kernel} cdrom/${target} 841.8Sbouyer.endfor 851.8Sbouyer.if exists(${DESTDIR}/usr/mdec/bootxx_cd9660) 861.8Sbouyer ${RM} -f cdrom/${BOOT2} 871.8Sbouyer ${CP} ${DESTDIR}/usr/mdec/${BOOT2} cdrom/${BOOT2} 881.8Sbouyer ${RM} -f bootxx.${MACHINE} 891.8Sbouyer ${CP} ${DESTDIR}/usr/mdec/bootxx_cd9660 bootxx.${MACHINE} 901.8Sbouyer ${CHMOD} +w bootxx.${MACHINE} 911.8Sbouyer.if defined(CDBOOTOPTIONS) 921.8Sbouyer ${TOOL_INSTALLBOOT} -m${MACHINE} -e ${CDBOOTOPTIONS} bootxx.${MACHINE} 931.8Sbouyer.endif 941.8Sbouyer.endif 951.8Sbouyer.endif 961.1Shubertf 971.1Shubertf# Copy $RELEASEDIR/${MACHINE} in the CDROM dir 981.1Shubertf# 991.1Shubertf# XXX This could be done a lot easier if makefs(8) could 1001.1Shubertf# XXX include more than one directory on the image - HF 1011.1Shubertf# 1021.1Shubertfcopy-releasedir: 1031.8Sbouyer ${RM} -f ${RELEASEDIR}/${CDROMS_RELEASEDIR}/${CDBASE}.iso 1041.1Shubertf if ${CDRELEASE} ; then \ 1051.1Shubertf if [ ! -d ${RELEASEDIR}/${MACHINE} ]; then \ 1061.1Shubertf echo "No releasedir ${RELEASEDIR}/${MACHINE}, aborting" ; \ 1071.1Shubertf exit 1 ; \ 1081.1Shubertf fi ; \ 1091.1Shubertf ${MKDIR} cdrom/${MACHINE} ; \ 1101.1Shubertf release_destdir=`pwd`/cdrom/${MACHINE} ; \ 1111.1Shubertf cd ${RELEASEDIR}/${MACHINE} ; \ 1121.1Shubertf echo Copying `pwd` to $$release_destdir ... ; \ 1131.7Shubertf ${TOOL_PAX} \ 1141.7Shubertf -rw -pe -v \ 1151.7Shubertf ${CDRELEASE_EXCLUDE} \ 1161.7Shubertf . $$release_destdir ; \ 1171.1Shubertf fi 1181.1Shubertf 1191.1Shubertfimage: 1201.8Sbouyer ${TOOL_MAKEFS} -t cd9660 -o ${_CDMAKEFSOPTIONS:Q} ${CDBASE}.iso cdrom 1211.8Sbouyer 1221.8Sbouyer.if ${CDRELEASE} == false 1231.8Sbouyerrelease: prepare .WAIT prepare_md_post .WAIT copy-releasedir .WAIT image .WAIT image_md_post 1241.8Sbouyer ${MKDIR} ${RELEASEDIR}/${CDROMS_RELEASEDIR} 1251.8Sbouyer ${RELEASE_INSTALL} ${CDBASE}.iso ${RELEASEDIR}/${CDROMS_RELEASEDIR} 1261.1Shubertf 1271.8Sbouyeriso_image: 1281.8Sbouyer.else 1291.1Shubertfrelease: 1301.8Sbouyer 1311.8Sbouyeriso_image: prepare .WAIT prepare_md_post .WAIT copy-releasedir .WAIT image .WAIT image_md_post 1321.8Sbouyer ${MKDIR} ${RELEASEDIR}/${CDROMS_RELEASEDIR} 1331.8Sbouyer ${RELEASE_INSTALL} ${CDBASE}.iso ${RELEASEDIR}/${CDROMS_RELEASEDIR} 1341.8Sbouyer.endif 1351.1Shubertf 1361.1Shubertfclean: 1371.1Shubertf ${RM} -fr cdrom 1381.1Shubertf 1391.8Sbouyerprepare_md_post: .PHONY 1401.8Sbouyerimage_md_post: .PHONY 1411.8Sbouyer 1421.8Sbouyer 1431.1Shubertf.include <bsd.prog.mk> 144