Makefile.bootcd revision 1.7
11.7Shubertf#	$NetBSD: Makefile.bootcd,v 1.7 2007/01/17 00:47:40 hubertf 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#	CDKERNEL	Kernel to copy from ../instkernel (or it's obj dir)
141.1Shubertf#
151.1Shubertf# Optional variables:
161.1Shubertf#	CDRELEASE	Set to 'true' to include $RELEASEDIR/$MACHINE on the CD
171.7Shubertf#	CDRELEASE_NOISOS Excludes installation/cdrom directory if set
181.1Shubertf#	BOOT		Defaults to $DESTDIR/usr/mdec/boot
191.1Shubertf#	BOOTXX_CD9660	Defaults to $DESTDIR/usr/mdec/bootxx_cd9660
201.1Shubertf#	CDBOOTOPTIONS	Options for installboot, eg -o console=com0,speed=9600
211.1Shubertf#	CDROMS_RELEASEDIR Where to install ${CDBASE}.iso
221.1Shubertf#
231.1Shubertf
241.1ShubertfBOOT?=		${DESTDIR}/usr/mdec/boot
251.1ShubertfBOOTXX_CD9660?=	${DESTDIR}/usr/mdec/bootxx_cd9660
261.1ShubertfCDRELEASE?=	false
271.1ShubertfCDROMS_RELEASEDIR?=	installation/cdrom
281.7Shubertf.if defined(CDRELEASE_NOISOS)
291.7ShubertfCDRELEASE_EXCLUDE=	-s ',./installation/cdrom.*,,gp'
301.7Shubertf.endif
311.1Shubertf
321.1Shubertf# Stuff that should come from elsewhere - XXX where? - HF
331.1ShubertfCP?=		cp
341.1ShubertfRM?=		rm
351.1ShubertfMKDIR?=		mkdir -p
361.1ShubertfCHMOD?=		chmod
371.1Shubertf
381.1Shubertf
391.1ShubertfCLEANFILES+=	${CDBASE}.iso
401.1ShubertfCLEANFILES+=	bootxx
411.1Shubertf
421.1Shubertf
431.1Shubertf# for PRINTOBJDIR
441.1Shubertf.include <bsd.own.mk>
451.1Shubertf
461.1Shubertf.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
471.1Shubertf
481.1Shubertf_INSTKERELNOBJDIR!=	cd ${.CURDIR}/../../instkernel && ${PRINTOBJDIR}
491.1Shubertf
501.1Shubertf
511.2Sosterdependall all: prepare .WAIT copy-releasedir .WAIT image
521.1Shubertf
531.1Shubertfprepare:
541.1Shubertf	${MKDIR} cdrom
551.1Shubertf	${CP} ${_INSTKERELNOBJDIR}/${CDKERNEL} cdrom/netbsd
561.1Shubertf	${RM} -f cdrom/boot
571.1Shubertf	${CP} ${DESTDIR}/usr/mdec/boot cdrom/boot
581.1Shubertf	${RM} -f bootxx
591.1Shubertf	${CP} ${DESTDIR}/usr/mdec/bootxx_cd9660 bootxx
601.1Shubertf	${CHMOD} +w bootxx
611.6Sdsl	${TOOL_INSTALLBOOT} -m${MACHINE} -e ${CDBOOTOPTIONS} bootxx
621.1Shubertf
631.1Shubertf# Copy $RELEASEDIR/${MACHINE} in the CDROM dir
641.1Shubertf#
651.1Shubertf# XXX This could be done a lot easier if makefs(8) could
661.1Shubertf# XXX include more than one directory on the image - HF
671.1Shubertf#
681.1Shubertfcopy-releasedir:
691.1Shubertf	if ${CDRELEASE} ; then 						\
701.1Shubertf		if [ ! -d ${RELEASEDIR}/${MACHINE} ]; then 		\
711.1Shubertf			echo "No releasedir ${RELEASEDIR}/${MACHINE}, aborting" ; \
721.1Shubertf			exit 1 ; 					\
731.1Shubertf		fi ; 							\
741.1Shubertf		${MKDIR} cdrom/${MACHINE} ; 				\
751.1Shubertf		release_destdir=`pwd`/cdrom/${MACHINE} ; 		\
761.1Shubertf		cd ${RELEASEDIR}/${MACHINE} ; 				\
771.1Shubertf		echo Copying `pwd` to $$release_destdir ... ; 		\
781.7Shubertf		${TOOL_PAX} 						\
791.7Shubertf			-rw -pe -v 					\
801.7Shubertf			${CDRELEASE_EXCLUDE}				\
811.7Shubertf			. $$release_destdir ; 				\
821.1Shubertf	fi
831.1Shubertf
841.1Shubertfimage:
851.1Shubertf	${TOOL_MAKEFS} -t cd9660 \
861.4Shubertf		-o 'rockridge,bootimage=i386;bootxx,no-emul-boot' \
871.1Shubertf		${CDBASE}.iso cdrom
881.1Shubertf
891.1Shubertfrelease:
901.5Shubertf	${RELEASE_INSTALL} ${CDBASE}.iso ${RELEASEDIR}/${MACHINE}/${CDROMS_RELEASEDIR}
911.1Shubertf
921.1Shubertfclean:
931.1Shubertf	${RM} -fr cdrom
941.1Shubertf
951.1Shubertf.include <bsd.prog.mk>
96