#
# g4u main Makefile
#
# Copyright (c) 1999-2008 Hubert Feyrer <hubert@feyrer.de>
#

# Build a kernel? May be passed in from src/g4u-build
#G4U_BUILD_KERNEL?=	true
G4U_BUILD_KERNEL?=	false

# G4U Version built into bootloader and usage:
G4UVERSION=2.5

# Kernel build flags:
BUILD_KERNEL_FLAGS=	-u	# Don't 'make clean' first

# Directory layout
FLOPPYDIR=	${.CURDIR}/../floppies/bootfloppy-g4u
CDDIR=		${.CURDIR}/../cdroms/bootcd-g4u
RAMDISKDIR=	${.CURDIR}/../ramdisks/ramdisk-g4u
INSTKERNELDIR=	${.CURDIR}/../instkernel
KMODDIR=	${.CURDIR}/../kmod

# Object directory:
.-include "${MAKECONF:U/etc/mk.conf}"
O= obj${OBJMACHINE:D.${MACHINE}}

###########################################################################

dependall all: g4u1.fs g4u.iso
	ls -l `pwd`/g4u*fs
	ls -l `pwd`/g4u.iso

g4u1.fs: ${FLOPPYDIR}/$O/g4u1.fs
	ln -f ${FLOPPYDIR}/$O/g4u*.fs .

g4u.iso: ${CDDIR}/$O/g4u.iso
	ln -f ${CDDIR}/$O/g4u.iso .

${FLOPPYDIR}/$O/g4u1.fs: ${INSTKERNELDIR}/$O/netbsd-g4u.gz
	cd ${FLOPPYDIR};  ${MAKE}

${CDDIR}/$O/g4u.iso: ${INSTKERNELDIR}/$O/netbsd-g4u.gz
	cd ${CDDIR} ;  ${MAKE} G4UVERSION=${G4UVERSION}

${INSTKERNELDIR}/$O/netbsd-g4u.gz: ${RAMDISKDIR}/$O/ramdisk-g4u.fs # +kernel
	cd ${NETBSDSRCDIR}/etc ;	${MAKE} MAKEDEV
	cd ${RAMDISKDIR} ;		${MAKE} G4UVERSION=${G4UVERSION}
	cd ${KMODDIR} ; 		${MAKE} RAMDISK=ramdisk-g4u
	:
	if ${G4U_BUILD_KERNEL} ; then ${NETBSDSRCDIR}/build.sh ${BUILD_KERNEL_FLAGS} kernel=G4U-KERNEL ; fi
	:
	cd ${INSTKERNELDIR} ; ${MAKE} -f Makefile.g4u

${RAMDISKDIR}/$O/ramdisk-g4u.fs: obj
	if ! grep HF/G4U ${NETBSDSRCDIR}/sys/dev/ata/wd.c >/dev/null ; \
	then echo "***" Please apply wd.c.patch-g4u in ${NETBSDSRCDIR}/sys/dev/ata ; exit 1 ; fi
	if ! grep HF/G4U ${NETBSDSRCDIR}/sys/dev/scsipi/sd.c >/dev/null ; \
	then echo "***" Please apply sd.c.patch-g4u in ${NETBSDSRCDIR}/sys/dev/scsipi ; exit 1 ; fi
	if ! grep HF/G4U ${NETBSDSRCDIR}/sys/kern/subr_prf.c >/dev/null ; \
	then echo "***" Please apply subr_prf.c.patch-g4u in ${NETBSDSRCDIR}/sys/kern ; exit 1 ; fi

#####

obj:
	cd ${RAMDISKDIR} ;		${MAKE} $* 
	cd ${INSTKERNELDIR} ;		${MAKE} -f Makefile.g4u $*
	cd ${FLOPPYDIR} ;		${MAKE} $* 
	cd ${CDDIR} ;			${MAKE} $* 

clean distclean cleandir:
	-cd ${RAMDISKDIR} ;		${MAKE} $*
	-cd ${INSTKERNELDIR} ;		${MAKE} -f Makefile.g4u $*
	-cd ${FLOPPYDIR} ;		${MAKE} $*
	-cd ${CDDIR} ;			${MAKE} $*
	-cd ${KMODDIR} ; 		${MAKE} $*
	-rm -fr iso
	-rm -f g4u*.iso
	-rm -f g4u*.fs

release distribution: #g4u1.fs g4u.iso
	-rm -fr /tmp/g4u
	-mkdir /tmp/g4u
	cp g4u*.fs /tmp/g4u
	cp g4u.iso /tmp/g4u
	#cd ${.CURDIR} ; ${MAKE} distclean
	cd ${NETBSDSRCDIR} ;					\
	tar -plzvcf /tmp/g4u/g4u.tgz				\
	    --exclude '*/$O*'					\
	    --exclude 'distrib/i386/g4u/g4u.iso'		\
	    --exclude 'distrib/i386/g4u/g4u*.fs'		\
		g4u-build 					\
		source_me-g4u					\
		distrib/i386/g4u				\
		distrib/i386/floppies/bootfloppy-g4u		\
		distrib/i386/cdroms/bootcd-g4u			\
		distrib/i386/instkernel/Makefile.g4u		\
		distrib/i386/ramdisks/ramdisk-g4u		\
		distrib/i386/ramdisks/common/*-g4u		\
		sys/dev/scsipi/sd.c.patch-g4u			\
		sys/dev/ata/wd.c.patch-g4u			\
		sys/kern/subr_prf.c.patch-g4u			\
		sys/arch/i386/conf/G4U-KERNEL			\
		;			
	cp ${NETBSDSRCDIR}/sys/arch/i386/conf/G4U-KERNEL /tmp/g4u/G4U-KERNEL

upload:
	ssh fehu.org mkdir www/g4u/incoming-release
	rsync --progress -a /tmp/g4u/* fehu.org:www/g4u/incoming-release
