# *************************************************************************
# *                                                                       *
# *  Makefile for  mpcc1 compiler                                         *
# *                                                                       *
# *************************************************************************

TARGETS = reuselib front-end back-end triv-rts

FRONT	= mpc_main.o mpcScanSource.o mpcScan.o mpcPars.o make_ast.o\
	  eval_ast.o topo_fun.o mpc_sn_rel.o mpc_adv.o Tree.o mpcAttr.o\
	  mpcErrors.o mpc_demo.o c2mpC.o CocktailIO.o

BACK	= BackEnd.o BEprint.o be_print.o Type.o Gen.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 IlpTree.o\
	  Optim_print.o ress.o tiling.o ilp.o

REUSE	= System.o General.o Memory.o DynArray.o Sets.o StringMem.o\
	  Idents.o Time.o Errors.o Positions.o Source.o

OBJS	= cent-buf.o cent-net.o dnet-test.o expr-test.o gauss.o gauss1.o \
	  matmul.o matmulv.o mnorm.o mxm-lib.o mxm-par.o mxm-parnet.o\
	  psearch1.o psearch2.o sum-vec.o vecsum.o


all:	mpcc1

mpcc1:	$(TARGETS)
	$(CC) -g -o mpcc1 $(FRONT) $(BACK) $(REUSE) triv_rts.o
	@echo; echo "mpcc1 DONE"

reuselib:	reuse_src
	@echo; echo "Making public reuse modules"
	cd reuse && $(MAKE) $(MFLAGS) TARGET=$(TARGET)

front-end:	front_src
	@echo; echo "Making front-end"
	cd front && $(MAKE) $(MFLAGS)

back-end:	back_src
	@echo; echo "Making back-end"
	cd back && $(MAKE) $(MFLAGS)

triv-rts:	triv_rts.c
	$(CC) -c -I../../h $(OPT) triv_rts.c

test:	test_src
	@echo; echo "RECOMPILATION OF TESTS:"
	cd tests && $(MAKE) MPICC=$(MPICC)
	@echo; echo "RECOMPILATION DONE"

reuse_src:
	cd reuse && $(MAKE) source

front_src:
	cd front && $(MAKE) source

back_src:
	cd back && $(MAKE) source

test_src:
	cd tests && $(MAKE) source
 
clean:
	rm -f mpcc1 core *.o h/*.* *% *.*%
	cd reuse && $(MAKE) clean
	cd front && $(MAKE) clean
	cd back	 && $(MAKE) clean
	cd tests && $(MAKE) clean
