</$objtype/mkfile TARG=snoopyPROTOS=\ aoe\ aoeata\ aoecmd\ aoemask\ aoemd\ aoerr\ arp\ bootp\ cec\ dhcp\ dns\ dump\ eap\ eap_identity\ eapol\ eapol_key\ ether\ gre\ hdlc\ icmp6\ icmp\ il\ ip6\ ip\ ninep\ ospf\ ppp\ ppp_ccp\ ppp_chap\ ppp_ipcp\ ppp_lcp\ pppoe_disc\ pppoe_sess\ rarp\ rc4keydesc\ rtcp\ rtp\ tcp\ ttls\ udp\ POBJS=${PROTOS:%=%.$O} OFILES= main.$O\ y.tab.$O\ protos.$O\ convM2DNS.$O\ $POBJS HFILES=dat.h\ protos.h\ y.tab.h\ YFILES=filter.y BIN=/$objtype/binUPDATE=\ mkfile\ dat.h\ main.c\ ${POBJS:%.$O=%.c}\ CLEANFILES=protos.c protos.h </sys/src/cmd/mkone convM2DNS.$O: /sys/src/cmd/ndb/convM2DNS.c $CC $CFLAGS /sys/src/cmd/ndb/convM2DNS.c protos.h:D: mkfile { for(i in $PROTOS) echo extern Proto $i';' } >$target protos.c:D: mkfile { echo '#include <u.h>' echo '#include <libc.h>' echo '#include "dat.h"' echo '#include "protos.h"' echo 'Proto *protos[] =' echo '{' for(i in $PROTOS) echo ' &'$i',' echo ' 0,' echo '};' } >$target
</$objtype/mkfile
TARG=snoopy
PROTOS=\
aoe\
aoeata\
aoecmd\
aoemask\
aoemd\
aoerr\
arp\
bootp\
cec\
dhcp\
dns\
dump\
eap\
eap_identity\
eapol\
eapol_key\
ether\
gre\
hdlc\
icmp6\
icmp\
il\
ip6\
ip\
ninep\
ospf\
ppp\
ppp_ccp\
ppp_chap\
ppp_ipcp\
ppp_lcp\
pppoe_disc\
pppoe_sess\
rarp\
rc4keydesc\
rtcp\
rtp\
tcp\
ttls\
udp\
POBJS=${PROTOS:%=%.$O}
OFILES= main.$O\
y.tab.$O\
protos.$O\
convM2DNS.$O\
$POBJS
HFILES=dat.h\
protos.h\
y.tab.h\
YFILES=filter.y
BIN=/$objtype/bin
UPDATE=\
mkfile\
dat.h\
main.c\
${POBJS:%.$O=%.c}\
CLEANFILES=protos.c protos.h
</sys/src/cmd/mkone
convM2DNS.$O: /sys/src/cmd/ndb/convM2DNS.c
$CC $CFLAGS /sys/src/cmd/ndb/convM2DNS.c
protos.h:D: mkfile
{
for(i in $PROTOS)
echo extern Proto $i';'
} >$target
protos.c:D: mkfile
{
echo '#include <u.h>'
echo '#include <libc.h>'
echo '#include "dat.h"'
echo '#include "protos.h"'
echo 'Proto *protos[] ='
echo '{'
for(i in $PROTOS)
echo ' &'$i','
echo ' 0,'
echo '};'
} >$target