PORTHFILES=\
	../port/error.h\
	../port/lib.h\
	../port/portdat.h\
	../port/portfns.h\

LIBFILES=${LIBS:%=$ROOT/$TARGMODEL/$OBJTYPE/lib/lib%.a}

%.$O:	%.s
	$AS $stem.s

%.$O:	%.c
	$CC $CFLAGS $stem.c

%.$O:		../port/%.c
		$CC $CFLAGS -I. ../port/$stem.c

%.$O:		../ip/%.c
		$CC $CFLAGS -I. ../ip/$stem.c

%.$O:		../kfs/%.c
		$CC $CFLAGS -I. ../kfs/$stem.c

&.$O:		$HFILES $PORTHFILES

%: Dist.a(%)
	$AR x Dist.a $stem

$INSTALLDIR/%: %
	cp $stem $INSTALLDIR/$stem

installall:V:	install-$SHELLTYPE
all:V:		default-$SHELLTYPE

acid:V: i$CONF.acid
i$CONF.acid:V: $SHELLTYPE-i$CONF.acid

rc-i$CONF.acid nt-i$CONF.acid:V: i$CONF
	{
		for (i in `{srclist -ec -r $ROOT/ i$CONF}) {
			echo '//FILE: ' $i
			$CC -I. -I../port -I$ROOT/Inferno/$OBJTYPE/include -I$ROOT/include -I$ROOT/interp '-DKERNDATE='$KERNDATE -a $i
		}
		echo 'include ("inferno");'
	} >i$CONF.acid

sh-i$CONF.acid:V: i$CONF
	for i in `srclist -ec -r $ROOT/ i$CONF`
	do
		echo '//FILE: ' $i
		$CC -I. -I../port -I$ROOT/Inferno/$OBJTYPE/include -I$ROOT/include -I$ROOT/interp '-DKERNDATE='$KERNDATE -a $i
	done >i$CONF.acid
	echo 'include ("inferno");' >> i$CONF.acid

lib%.a:V:	$SHELLTYPE-lib%.a

rc-lib%.a nt-lib%.a:VQ:
		echo '@{builtin cd' $ROOT/$stem '; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE install}'
		@{builtin cd $ROOT/$stem; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE install}

sh-lib%.a:VQ:
		echo "(cd $ROOT/$stem ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE install)"
		(cd $ROOT/$stem; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE install)

%-rc %-nt:V:
		for(i in $CONFLIST)
			mk 'CONF='$i $stem

%-sh:V:
		for i in $CONFLIST
		do
			mk 'CONF='$i $stem
		done

clean:V:	cleanconf-$SHELLTYPE
		rm -f *.[$OS] *.root.[sh] errstr.h *.out

cleanconf-sh:V:
		for i in $CONFLIST $CLEANCONFLIST
		do
			rm -f $i.c i$i i$i.* $i.ver
		done

cleanconf-rc cleanconf-nt:V:
		for(i in $CONFLIST $CLEANCONFLIST)
			rm -f $i.c i$i i$i.* $i.ver

nuke-sh:QV:
		for i in $LIBDIRS
		do
			echo "(cd $ROOT/$i ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE nuke)"
			(cd $ROOT/$i; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE nuke)
		done

nuke-rc nuke-nt:QV:
		for (i in $LIBDIRS)
		{
			echo '@{cd $ROOT/$i ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE nuke}'
			@{cd $ROOT/$i; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE nuke}
		}

nuke:V:		clean nuke-$SHELLTYPE

$CONF.c:	../port/mkdevc $CONF
		$SHELLNAME ../port/mkdevc $CONF > $CONF.c

errstr.h:	../port/error.h
		sed 's/extern //;s,;.*/\* , = ",;s, \*/,";,' < ../port/error.h > errstr.h

../init/%.dis:	../init/%.b
		cd ../init; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE $stem.dis

$ROOT/interp/runt.h:
		cd $ROOT/interp
		mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE runt.h

RUNT=$ROOT/interp/runt.h		# for culling dependencies

# devmnt.$O:	../port/fcall.h
proc.$O:	errstr.h
devroot.$O:	errstr.h
trap.$O:	$ROOT/Inferno/$OBJTYPE/include/ureg.h
devproc.$O:	$ROOT/Inferno/$OBJTYPE/include/ureg.h
devns16552.$O:	ns16552.h
devns16552.$O:	../port/netif.h
latin1.$O:	../port/latin1.h
netif.$O:	../port/netif.h
devprog.$O:	$RUNT
devsrv.$O:	$RUNT
exception.$O:	$RUNT
inferno.$O:	$RUNT
main.$O:	../port/error.h

devroot.$O:	$CONF.root.h
$CONF.$O:	$CONF.root.h
$CONF.root.s $CONF.root.h: $CONF ../init/$INIT.dis ../port/mkroot $ROOTFILES
	$SHELLNAME ../port/mkroot $CONF
