V10/cmd/oworm/scsi/mkfile
NAMES=y.tab lex inquiry init status disk sense start read diag capacity helptab\
media odump reset worm write copy search config testunit internal\
i0.tab i1.tab scsi.tab alternate readid diskid
L=lib.a
OBJ=`echo $NAMES|sed -e 's/[^ ][^ ]*/$L(&.o)/g'`
CLIB=`echo $NAMES|sed -e 's/[^ ][^ ]*/O\/&.O/g'`
CFLAGS=-g
NPROC=2
ALL=wmount scsish
W=/usr/lib/worm
INS=$W/wmount $W/scsish
install:V: $INS
ship: $INS
ship $newprereq && touch ship
$W/(wmount|scsish):R: \\1
cp $prereq $target && strip -g $target && chmod 775 $target
wmount: wmount.o $L
$CC $CFLAGS -o $target $prereq
scsish: scsish.o $L
$CC $CFLAGS -o $target $prereq
clean:V:
rm -f O/* $ALL *.o
%.tab.c:Q: %.tab
echo generating $target
p=$stem.tab
awk -F' ' '
BEGIN { h["0"]=0;h["1"]=1;h["2"]=2;h["3"]=3;h["4"]=4;h["5"]=5;h["6"]=6;h["7"]=7;
h["8"]=8;h["9"]=9;h["a"]=10;h["b"]=11;h["c"]=12;h["d"]=13;h["e"]=14;h["f"]=15;
}
function done( i){
for(i = 0; i < 256; i++) if(x[i]){
print "\t\"" x[i] "\","
x[i] = ""
} else printf "\t\"<#%x>\",\n", i
print "};"
}
function hex(n, i){
return(h[substr(n, 1, 1)]*16+h[substr(n, 2, 1)]);
}
NF == 1 { if(NR > 1) done(); print "char *" $1 "[] = {" }
NF > 1 { x[hex($1)] = $2; }
END { done(); }' < $p > $p.c
%.o O/%.O: scsi.h
cyntax:V: O/wmount O/scsish
O/wmount: O/wmount.O $CLIB
cyntax $prereq && touch $target
O/scsish: O/scsish.O $CLIB
cyntax $prereq && touch $target
pp:
smalllp [a-w]*.h [a-w]*.[cy]
y.tab.c y.tab.h: gram.y
yacc -d -D gram.y
ed - y.tab.c <<!
,s/printf/print/
w
q
!
x.tab.h:Q: y.tab.h
cmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.h
y.tab.o lex.o: x.tab.h
lex.o: lex.l
lex -t lex.l > lex.c
ed - lex.c <<!
,s/fprintf(yyout/fprint(2/
w
q
!
$CC $CFLAGS -c lex.c && rm lex.c
helptab.c:QD: gram.y
( echo 'char *helpstrs[] = {'
sed -n -e '1,/^line/d
/^drive/,$d
/::/s/::.*/",/
/:/s/.*:/ "/p
/|/s/ *{.*/",/
/|/s/.*| */ "/p' < gram.y
echo ' 0'
echo '};'
) > $target
$L(%.o):N: %.o
$L:Q: $OBJ
names=`membername $newprereq`
ar rv $L $names && rm $names
ranlib $L
O/%.O: %.c
cyntax -c $CFLAGS $stem.c && mv $stem.O O
O/y.tab.O: y.tab.c
cyntax -c -Vyyerror:1 y.tab.c && mv y.tab.O O
O/lex.O: lex.l
> /tmp/lex.c
cyntax -c /tmp/lex.c && mv /tmp/lex.O O
spit: scsish
push spit $newprereq . && touch $target
scsi.out: scsi.ms
tbl scsi.ms | troff -Tpost > $target
scsi.lp: scsi.out
lp -dpsu $prereq
scsi.man:V:
troff -Tpost -man /usr/man/man1/worm.1 /usr/man/man?/scsi*.? | lp -dpsu