F2DFLAGS=-L ps -p x -z Letter -P -c

FE=../coercer.c ../fe_optimizer.c ../ir.c ../main.c ../showir.c ../sym.c
BE= ../be_optimizer.c ../cpool.c ../fragmenter.c ../oputils.c ../output.c \
    ../pseudoregs.c ../scheduler.c ../spool.c ../tuple_binop.c \
    ../tuple_immed.c ../tuplegen.c
UTILS=../messages.c

all: \
	be_optimizer.ps \
	coercer.ps \
	cpool.ps \
	fe_optimizer.ps \
	fragmenter.ps \
	ir.ps \
	main.ps \
	messages.ps \
	oputils.ps \
	output.ps \
	pseudoregs.ps \
	scheduler.ps \
	showir.ps \
	spool.ps \
	sym.ps \
	tuple_binop.ps \
	tuple_immed.ps \
	tuplegen.ps \
\
	frontend.ps frontend-crs.ps fe.ps \
	backend.ps backend-crs.ps be.ps \
	scc.ps

figures: \
	be_optimizer.fig \
	coercer.fig \
	cpool.fig \
	fe_optimizer.fig \
	fragmenter.fig \
	ir.fig \
	main.fig \
	messages.fig \
	oputils.fig \
	output.fig \
	pseudoregs.fig \
	scheduler.fig \
	showir.fig \
	spool.fig \
	sym.fig \
	tuple_binop.fig \
	tuple_immed.fig \
	tuplegen.fig \
\
	frontend.fig frontend-crs.fig fe.fig \
	backend.fig backend-crs.fig be.fig \
	scc.fig



be_optimizer.ps: be_optimizer.fig
	fig2dev ${F2DFLAGS} be_optimizer.fig | sed -f fixmag.sed \
	  > be_optimizer.ps

be_optimizer.fig: ../be_optimizer.c
	callblock ../be_optimizer.c > be_optimizer.fig

coercer.ps: coercer.fig
	fig2dev ${F2DFLAGS} coercer.fig | sed -f fixmag.sed > coercer.ps

coercer.fig: ../coercer.c
	callblock ../coercer.c > coercer.fig

cpool.ps: cpool.fig
	fig2dev ${F2DFLAGS} cpool.fig | sed -f fixmag.sed > cpool.ps

cpool.fig: ../cpool.c
	callblock ../cpool.c > cpool.fig

fe_optimizer.ps: fe_optimizer.fig
	fig2dev ${F2DFLAGS} fe_optimizer.fig | sed -f fixmag.sed \
	  > fe_optimizer.ps

fe_optimizer.fig: ../fe_optimizer.c
	callblock ../fe_optimizer.c > fe_optimizer.fig

fragmenter.ps: fragmenter.fig
	fig2dev ${F2DFLAGS} fragmenter.fig | sed -f fixmag.sed > fragmenter.ps

fragmenter.fig: ../fragmenter.c
	callblock ../fragmenter.c > fragmenter.fig

ir.ps: ir.fig
##	fig2dev ${F2DFLAGS} -x 72 -M ir.fig | sed -f fixmag.sed > ir.ps
#	fig2dev ${F2DFLAGS} -l x -m 0.90 ir.fig | sed -f fixmag.sed > ir.ps
	fig2dev ${F2DFLAGS} -m 0.80 ir.fig | sed -f fixmag.sed > ir.ps

ir.fig: ../ir.c
	callblock ../ir.c > ir.fig

main.ps: main.fig
	fig2dev ${F2DFLAGS} main.fig | sed -f fixmag.sed > main.ps

main.fig: ../main.c
	callblock ../main.c > main.fig

messages.ps: messages.fig
	fig2dev ${F2DFLAGS} messages.fig | sed -f fixmag.sed > messages.ps

messages.fig: ../messages.c
	callblock ../messages.c > messages.fig

oputils.ps: oputils.fig
	fig2dev ${F2DFLAGS} oputils.fig | sed -f fixmag.sed > oputils.ps

oputils.fig: ../oputils.c
	callblock ../oputils.c > oputils.fig

output.ps: output.fig
	fig2dev ${F2DFLAGS} output.fig | sed -f fixmag.sed > output.ps

output.fig: ../output.c
	callblock ../output.c > output.fig

pseudoregs.ps: pseudoregs.fig
	fig2dev ${F2DFLAGS} pseudoregs.fig | sed -f fixmag.sed > pseudoregs.ps

pseudoregs.fig: ../pseudoregs.c
	callblock ../pseudoregs.c > pseudoregs.fig

scheduler.ps: scheduler.fig
	fig2dev ${F2DFLAGS} scheduler.fig | sed -f fixmag.sed > scheduler.ps

scheduler.fig: ../scheduler.c
	callblock ../scheduler.c > scheduler.fig

showir.ps: showir.fig
	fig2dev ${F2DFLAGS} showir.fig | sed -f fixmag.sed > showir.ps

showir.fig: ../showir.c
	callblock ../showir.c > showir.fig

spool.ps: spool.fig
	fig2dev ${F2DFLAGS} spool.fig | sed -f fixmag.sed > spool.ps

spool.fig: ../spool.c
	callblock ../spool.c > spool.fig

sym.ps: sym.fig
	fig2dev ${F2DFLAGS} sym.fig | sed -f fixmag.sed > sym.ps

sym.fig: ../sym.c
	callblock ../sym.c > sym.fig

tuple_binop.ps: tuple_binop.fig
	fig2dev ${F2DFLAGS} tuple_binop.fig | sed -f fixmag.sed > tuple_binop.ps

tuple_binop.fig: ../tuple_binop.c
	callblock ../tuple_binop.c > tuple_binop.fig

tuple_immed.ps: tuple_immed.fig
	fig2dev ${F2DFLAGS} tuple_immed.fig | sed -f fixmag.sed > tuple_immed.ps

tuple_immed.fig: ../tuple_immed.c
	callblock ../tuple_immed.c > tuple_immed.fig

tuplegen.ps: tuplegen.fig
	fig2dev ${F2DFLAGS} tuplegen.fig | sed -f fixmag.sed > tuplegen.ps

tuplegen.fig: ../tuplegen.c
	callblock ../tuplegen.c > tuplegen.fig



# The front end includes: coerce.c ir.c main.c showir.c swarc.g sym.c opti.c
frontend.ps: frontend.fig
	fig2dev ${F2DFLAGS} -y -72 -M frontend.fig \
	  | sed -f fixmag.sed > frontend.ps

frontend.fig: ${FE}
	callblock ${FE} > frontend.fig

frontend-crs.ps: frontend-crs.fig
	fig2dev ${F2DFLAGS} -y -72 -M frontend-crs.fig \
	  | sed -f fixmag.sed > frontend-crs.ps

frontend-crs.fig: ${FE}
	callblock -f Exclude -b Exclude -fe Blue -be Red ${FE} \
	  > frontend-crs.fig

fe.ps: fe.fig
	fig2dev ${F2DFLAGS} fe.fig | sed -f fixmag.sed > fe.ps

fe.fig: ${FE}
	callblock -t fe.txt -ms ${FE} > fe.fig




backend.ps: backend.fig
	fig2dev ${F2DFLAGS} -y -72 -M backend.fig \
	  | sed -f fixmag.sed > backend.ps

backend.fig: ${BE}
	callblock ${BE} > backend.fig


backend-crs.ps: backend-crs.fig
	fig2dev ${F2DFLAGS} -y -72 -M backend-crs.fig \
	  | sed -f fixmag.sed > backend-crs.ps

backend-crs.fig: ${BE}
	callblock -f Exclude -b Exclude -fe Blue -be Red ${BE} \
	  > backend-crs.fig

be.ps: be.fig
	fig2dev ${F2DFLAGS} be.fig | sed -f fixmag.sed > be.ps

be.fig: ${BE}
	callblock -t fe.txt -ms ${BE} > be.fig




scc.ps: scc.fig
	fig2dev ${F2DFLAGS} scc.fig | sed -f fixmag.sed > scc.ps

scc.fig: ${FE} ${BE} ${UTILS}
	callblock -t scc.txt -ms ${FE} ${BE} ${UTILS} > scc.fig


clean:
	rm -f *.fig.bak

distclean: clean
	rm -f *.fig *.ps *.txt

