CC = gcc
CFLAGS = -g
COBJECTS = clex.o comp.tab.o cmain.o exp.o states.o const.o code.o out.o tree.o data.o intrinsic.o load_int.o
CDEFS = $(DEFS) -D COMPILER -D DEBUG
YACC=yacc
.SUFFIXES: $(SUFFIXES) .x .51 .r

all: rl rsim rcvt

rcvt:	rcvt.o
	$(CC) $(CFLAGS) rcvt.o -o rcvt

logtosim:	logtosim.c
	 $(CC) $(CFLAGS) logtosim.c -o logtosim

ctl.tab.o: ctl.tab.c 
ctl.tab.c: ctl.y action.h
	$(YACC) -d -v ctl.y
	 mv y.tab.c ctl.tab.c
	 mv y.tab.h ctl.tab.h
slex.o: slex.c ctl.tab.c 

comp.tab.o: comp.tab.c lex.h
comp.tab.c: comp.y
	$(YACC) -d -v comp.y
	 mv y.tab.c comp.tab.c
	 mv y.tab.h comp.tab.h

mkint:	mkint.c	
	$(CC) $(CFLAGS) mkint.c -o mkint

load_int.o:	load_int.c
load_int.c:	mkint intrinsics
	mkint <intrinsics >load_int.c

cmain.o: cmain.c 
clex.o: clex.c comp.tab.c lex.h
tree.o: tree.c lex.h
data.o: data.c lex.h
out.o: out.c lex.h code.h
code.o: code.c lex.h code.h
intrinsic.o: intrinsic.c lex.h code.h
exp.o: exp.c lex.h code.h
states.o: states.c lex.h code.h
const.o: const.c lex.h
sim.o: sim.c action.h code.h
rcvt.o: rcvt.c code.h

rl:	$(COBJECTS)
	$(CC) $(CFLAGS) $(COBJECTS) -o rl

rsim:	sim.o  data.o code.h ctl.tab.o slex.o
	$(CC) $(CFLAGS) sim.o data.o slex.o  ctl.tab.o -o rsim

.r.x:
	rl $*.r

.x.51:
	rcvt $*.x -o $*.s
	../51/asm51 $*.s


a.51:	a.r rl rcvt rsim
	rl -lc 0 -lw 200 -lt 200 -lr 1 a.r 
	rcvt a.x -o a.s
	../51/asm51 a.s

b.51:	b.r rl rcvt rsim
	rl b.r 
	rcvt b.x -o b.s
	../51/asm51 b.s

e.51:	e.r rl rcvt rsim
	rl -lc 1 -lw 200 -lt 200 -lr 0 e.r 
	rcvt e.x -o e.s
	../51/asm51 e.s

z.51:	z.r rl rcvt rsim
	rl z.r 
	rcvt z.x -o z.s
	../51/asm51 z.s

x.51:	x.r rl rcvt rsim
	rl x.r 
	rcvt x.x -o x.s
	../51/asm51 x.s

y.51:	y.r rl rcvt rsim
	rl y.r 
	rcvt y.x -o y.s
	../51/asm51 y.s

test.51:	test.r rl rcvt rsim
	rl test.r 
	rcvt test.x -o test.s
	../51/asm51 test.s
