REUSE	= ../../../reuse
TREEDIR	= ../front
IFLAGS	= -I$(REUSE) -I$(TREEDIR)
MPCFLGS	= -kANSI $(IFLAGS)

BE	= BackEnd.o BEprint.o be_print.o
PRINT	= Type.o Gen.o IlpTree.o\
	  File_print.o VarDecl_print.o Type_print.o \
	  Expr_print.o Stats_print.o  Prop.o\
	  NetType_print.o VarName.o NetDecl_print.o print_NetCreate.o\
	  GenTree.o Traverse.o Communication.o PredExpr_print.o Assign.o\
	  stack.o ConvertType.o Optim_print.o\
	  ress.o tiling.o ilp.o

OBJS	= $(BE) $(PRINT)

all:	$(OBJS)
	cp $(OBJS) ..

Tree_h =	$(TREEDIR)/Tree.h
TreeBE_h =	$(Tree_h) be_print.h 
TreeBEGen_h =	$(TreeBE_h) Gen.h Type.h

Gen.o:	Gen.h
Type.o:	Type.h
IlpTree.o:	IlpTree.h

BackEnd.o:	$(TreeBE_h)
BEprint.o:	$(TreeBE_h)
be_print.o:	$(TreeBE_h)

File_print.o:		$(TreeBEGen_h)
VarDecl_print.o: 	$(TreeBEGen_h)
Type_print.o:		$(TreeBE_h)
Expr_print.o:		$(TreeBE_h)
Stats_print.o:		$(TreeBEGen_h)
Prop.o:			$(TreeBEGen_h)
NetType_print.o:	$(TreeBE_h)
VarName.o:		$(TreeBE_h)
NetDecl_print.o:	$(TreeBE_h)
print_NetCreate.o:	$(TreeBEGen_h)
GenTree.o:		$(TreeBEGen_h)
Traverse.o:		$(TreeBE_h)
Communication.o:	$(TreeBE_h)
PredExpr_print.o:	$(TreeBE_h)
Assign.o:		$(TreeBE_h)
stack.o:		$(TreeBE_h)
ConvertType.o:		$(TreeBE_h) 
Optim_print.o:		$(TreeBE_h)
ress.o:			$(TreeBE_h)
tiling.o:		$(TreeBE_h) machdep.h
ilp.o:			$(TreeBE_h) ilp.h

source:
	cp ../../../back/*.h .
	cp ../../../back/*.w .
	cp ../../../back/Assign.c Assign.mpc
	cp ../../../back/BEprint.c BEprint.mpc
	cp ../../../back/BackEnd.c BackEnd.mpc
	cp ../../../back/Communication.c Communication.mpc
	cp ../../../back/ConvertType.c ConvertType.mpc
	cp ../../../back/Expr_print.c Expr_print.mpc
	cp ../../../back/File_print.c File_print.mpc
	cp ../../../back/Gen.c Gen.mpc
	cp ../../../back/GenTree.c GenTree.mpc
	cp ../../../back/NetDecl_print.c NetDecl_print.mpc
	cp ../../../back/NetType_print.c NetType_print.mpc
	cp ../../../back/PredExpr_print.c PredExpr_print.mpc
	cp ../../../back/Prop.c Prop.mpc
	cp ../../../back/Stats_print.c Stats_print.mpc
	cp ../../../back/Traverse.c Traverse.mpc
	cp ../../../back/Type.c Type.mpc
	cp ../../../back/Type_print.c Type_print.mpc
	cp ../../../back/VarDecl_print.c VarDecl_print.mpc
	cp ../../../back/VarName.c VarName.mpc
	cp ../../../back/be_print.c be_print.mpc
	cp ../../../back/print_NetCreate.c print_NetCreate.mpc
	cp ../../../back/stack.c stack.mpc
	cp ../../../back/IlpTree.c IlpTree.mpc
	cp ../../../back/Optim_print.c Optim_print.mpc
	cp ../../../back/ress.c ress.mpc
	cp ../../../back/tiling.c tiling.mpc
	cp ../../../back/ilp.c ilp.mpc

clean:
	rm -f core *.c *.h *.mpc *.w *.o *% *.*%

.SUFFIXES:	.mpc .c

.mpc.o:
	../../../mpcc $(MPCFLGS) $*.mpc
	$(CC) -c -I../../../h $(OPT) $(SF) $*.c
	rm -f $*.c
