PORTFILES=`{../port/mkfilelist ../port}
^($PORTFILES)\.$O:R:    ../port/\1.c
       $CC $CFLAGS -I. ../port/$stem1.c

IPFILES=`{../port/mkfilelist ../ip}
^($IPFILES)\.$O:R:      ../ip/\1.c ../ip/ip.h ../ip/ipv6.h
       $CC $CFLAGS -I. ../ip/$stem1.c

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

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

%.acid: %.c
       $CC $CFLAGS -a $stem.c >$stem.acid

%.acid: ../ip/%.c
       $CC $CFLAGS -a -I.  ../ip/$stem.c >$stem.acid

%.acid: ../port/%.c
       $CC $CFLAGS -a -I. ../port/$stem.c >$stem.acid

installall:V:
       for(i in $CONFLIST)
               mk 'CONF='$i install

all:V:
       for(i in $CONFLIST)
               mk 'CONF='$i

clean:V:
       rm -f *.[$OS] *.i *.root.s *.rootc.c cfs.h fs.h conf.h *.out *.m errstr.h init.h reboot.h boot bootfs.paq
       for(i in $CONFLIST $CRAPLIST)
               mk $i.clean

%.clean:V:
       rm -f $stem.c [9bz]$stem [9bz]$stem.gz [9bz]$stem.u s[9bz]$stem boot$stem.*

nuke:V: clean
       rm -f ../boot/libboot.a$O *.elf *.rr *.acid

%.$O:   /$objtype/include/u.h ../port/lib.h mem.h dat.h fns.h io.h ../port/error.h ../port/portdat.h ../port/portfns.h

./port/systab.h:D:      /sys/src/libc/9syscall/sys.h ../port/mksystab
       rc ../port/mksystab > ../port/systab.h

$CONF.$O:       $CONF.c $OBJ $LIB
       $CC $CFLAGS '-DKERNDATE='`{date -n} $CONF.c

$CONF.c:D:      ../port/mkdevc $CONF
       rc ../port/mkdevc $CONF > $CONF.c
       {echo 'uchar configfile[]={'
        xd -1x $CONF |
               sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
        echo 0,
        echo '};'} >> $CONF.c

errstr.h:D:     ../port/mkerrstr ../port/error.h
       rc ../port/mkerrstr > errstr.h

%.i:D:  %.out
       {echo 'uchar '^$stem^'[]={'
        xd -1x <$stem.out |
               sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
        echo '};'} > $target

%.db:D: main.c
       $CC -s$stem main.c | dbfmt > $stem.db

alloc.$O ucalloc.$O devswap.$O devproc.$O:      /sys/include/pool.h
devmnt.$O:      /sys/include/fcall.h
proc.$O proc.acid:      errstr.h
devroot.$O:     errstr.h
devaudio.$O:    ../port/audioif.h
devaoe.$O:      ../port/sd.h /$objtype/include/ureg.h
devfs.$O:       ../port/sd.h /$objtype/include/ureg.h
devsd.$O:       ../port/sd.h /$objtype/include/ureg.h
sdscsi.$O:      ../port/sd.h /$objtype/include/ureg.h
sdaoe.$O:       ../port/sd.h /$objtype/include/ureg.h
trap.$O:        /$objtype/include/ureg.h
devproc.$O:     /$objtype/include/ureg.h
userinit.$O:    initcode.i
trap.$O:        ../port/systab.h
devpipe.$O:     ../port/netif.h
netif.$O:       ../port/netif.h
devuart.$O:     ../port/netif.h
devbridge.$O:   ../port/netif.h ../ip/ip.h ../ip/ipv6.h
devdtracy.$O dtracysys.$O dtracytimer.$O:       /sys/include/dtracy.h
devdraw.$O:     screen.h /sys/include/draw.h /sys/include/memdraw.h /sys/include/memlayer.h /sys/include/cursor.h
devmouse.$O:    screen.h /sys/include/draw.h /sys/include/memdraw.h /sys/include/cursor.h
swcursor.$O:    screen.h /sys/include/draw.h /sys/include/memdraw.h /sys/include/cursor.h
screen.$O:      screen.h /sys/include/draw.h /sys/include/memdraw.h /sys/include/cursor.h
thwack.$O:      ../port/thwack.h
unthwack.$O:    ../port/thwack.h
devsdp.$O:      ../port/thwack.h
portclock.$O sysproc.$O:        /sys/include/tos.h
devproc.$O edf.$O proc.$O:      /sys/include/trace.h
auth.$O devcons.$O:     /sys/include/authsrv.h
devcap.$O:      /sys/include/libsec.h
devfs.$O:       /sys/include/libsec.h
devsdp.$O:      /sys/include/libsec.h
devssl.$O:      /sys/include/libsec.h
devtls.$O:      /sys/include/libsec.h
devswap.$O:     /sys/include/libsec.h
random.$O:      /sys/include/libsec.h
devaoe.$O sdaoe.$O:     /sys/include/fis.h
sysproc.$O:     /sys/include/a.out.h
syscallfmt.$O:  /sys/src/libc/9syscall/sys.h
devusb.$O usbxhci.$O:   ../port/usb.h
devether.$O ethersink.$O:       ../port/etherif.h ../port/netif.h
wifi.$O:        ../port/etherif.h ../port/netif.h ../port/wifi.h /sys/include/libsec.h
wifi.$O:        ../ip/ip.h ../ip/ipv6.h
ethermii.$O:    ../port/ethermii.h