52 lines
888 B
Standard ML
Executable file
52 lines
888 B
Standard ML
Executable file
TMP=tmp$$
|
|
cat $* >$TMP
|
|
ed - $TMP <<'--EOI--'
|
|
g/^%/d
|
|
g/^$/d
|
|
g/^ /.-1,.j
|
|
1,$s/[ ]*|[ ]*/|/g
|
|
g/NOTIMPLEMENTED/d
|
|
1,$s/\([^|]*\)|\([^|]*\)|\(.*\)$/\
|
|
NAME \1\
|
|
HEAD \1\
|
|
PLST \2\
|
|
DECL \2\
|
|
BODY \3/
|
|
$a
|
|
END
|
|
.
|
|
g/^NAME/m$
|
|
g/^PLST/s/[ ][ ]*\([^:]*\):\([^ ]*\)/,\2/g
|
|
g/^PLST,/s//PLST /
|
|
g/^PLST /s/^PLST \(.*\)$/(\1)/
|
|
g/^HEAD/.,.+1j
|
|
g/^HEAD /s/^HEAD \([^(]*\)\(.*\)$/cat >\1.c <<'--EOF--'\
|
|
#include "em_private.h"\
|
|
\
|
|
\1\2/
|
|
g/^DECL/s/[ ][ ]*\([^:]*\):\([^ ]*\)/\
|
|
\1 \2;/g
|
|
g/^DECL/d
|
|
g/^BODY/s/^BODY \(.*\)$/{\
|
|
\1;\
|
|
}\
|
|
--EOF--/
|
|
1,/^END/-1p
|
|
1,/^END/d
|
|
g:^NAME:s:^NAME \(.*\)$:cc -c -O -I$1 -I$EMHOME/modules/h -I$EMHOME/h \1.c:
|
|
1i
|
|
cat >make.sh <<'--EOF--'
|
|
: script for making lib
|
|
rm -f C_*.o
|
|
.
|
|
$a
|
|
rm -f libem$1.a
|
|
cc -c -O -I. -I$1 -I$EMHOME/modules/h -I$EMHOME/h $1/em.c
|
|
mv em.o em$1.o
|
|
ar rc libem$1.a C_*.o em$1.o insert.o failed.o internerr.o getid.o
|
|
rm -f C_*.o
|
|
--EOF--
|
|
.
|
|
1,$p
|
|
--EOI--
|
|
rm -f $TMP
|