# $Id: Makefile,v 1.10 2007/05/29 13:47:13 kostik Exp $

proj?=misc
builddir?=
tgt?=
kernconf?=QEMU
target_arch?=i386

base=/usr/home/kostik/build/bsd/DEV
obj?=$(base)/obj-$(target_arch)
dest=$(base)/p

KERNOPTS=-DNO_KERNELCLEAN -DNO_KERNELCONFIG -DNO_KERNELDEPEND
MK_PREFIX=cd src$(builddir) && MAKEOBJDIRPREFIX=$(obj) DESTDIR=$(dest)
MK=$(MK_PREFIX) TARGET_ARCH=$(target_arch) sudo make
MK_NOARCH=$(MK_PREFIX) sudo make

.PHONY:	all
all:
	true

.PHONY:	buildkernel
buildkernel:
	($(MK) buildkernel KERNCONF=$(kernconf))

.PHONY:	buildkernel1
buildkernel1:
	($(MK) buildkernel KERNCONF=$(kernconf) $(KERNOPTS))

.PHONY:	buildworld
buildworld:
	($(MK) buildworld)

.PHONY:	buildworld1
buildworld1:
	($(MK) buildworld NO_CLEAN=yes)

.PHONY:	installkernel
installkernel:
	($(MK) installkernel KERNCONF=$(kernconf) -DINSTALL_NODEBUG)

.PHONY:	installworld
installworld:
	($(MK) installworld)

.PHONY:	buildenv
buildenv:
	($(MK) buildenv)

.PHONY:	build
build:
	($(MK) $(tgt))

.PHONY:	universe
universe:
	($(MK_NOARCH) universe)

.PHONY:	install
install:
	($(MK) install)

.PHONY:	do-savecore
do-savecore:
	savecore -v . /dev/$(MD)s1b
	chmod a+rx vmcore.* info.*

.PHONY:	savecore
savecore:	mdconfig do-savecore mdunconfig

mdconfig:
	mdconfig -a -t vnode -f c-$(target_arch).img >mdconfig
MD=$(shell cat mdconfig)

.PHONY:	mdunconfig
mdunconfig:
	mdconfig -d -u `cat mdconfig | sed 's/^md//'`
	rm mdconfig

.PHONY:	do-mount
do-mount:
	mount /dev/$(MD)s1a p
	mount /dev/$(MD)s1e p/var

.PHONY:	do-umount
do-umount:
	umount /dev/$(MD)s1e
	umount /dev/$(MD)s1a

.PHONY:	mount
mount:	mdconfig do-mount

.PHONY:	umount
umount:	do-umount mdunconfig

.PHONY:	do-mountb
do-mountb:
	mount /dev/$(MDB)s1a p/usr/home

.PHONY:	do-umountb
do-umountb:
	umount /dev/$(MDB)s1e

.PHONY:	mountb
mountb:	mount mdconfigb do-mountb

.PHONY:	umountb
umountb:do-umountb mdunconfigb

.PHONY:	do-fscka
do-fscka:
	fsck -fy /dev/$(MD)s1a
	fsck -fy /dev/$(MD)s1e

.PHONY:	fscka
fscka:	mdconfig do-fscka mdunconfig

mdconfigb:
	mdconfig -a -t vnode -f d.img >mdconfigb
MDB=$(shell cat mdconfigb)

.PHONY:	mdunconfigb
mdunconfigb:
	mdconfig -d -u `echo $(MDB) | sed 's/^md//'`
	rm mdconfigb

.PHONY:	do-fsckb
do-fsckb:
	fsck -fy /dev/$(MDB)s1a

.PHONY:	fsckb
fsckb:	mdconfigb do-fsckb mdunconfigb

.PHONY:	fsck
fsck:	fscka fsckb

.PHONY:	qemu
qemu:
	qemu -m 64 -hda c-i386.img -hdb d.img -boot c -s

.PHONY:	qemu-amd64
qemu-amd64:
	qemu-system-x86_64 -m 128 -hda c-amd64.img -hdb d.img -boot c -s

.PHONY:	git-rm-missed-files
git-rm-missed-files:
	git ls-files -z --deleted | git update-index -z --remove --stdin 

