LIBS=-lm 
CC=g++
MPICC=mpic++
MPICFLAGS=-DMPIBART
CCOPS=-Wall -g -O2 

OBS=tree.o funs.o bd.o rng.o
MPIOBS=mtree.o mfuns.o mbd.o rng.o

bart: bart.o $(OBS) 
	$(CC) -o bart bart.o $(OBS) $(LIBS)

bart.o: bart.cpp
	$(CC) $(CCOPS) -c bart.cpp 

tree.o: tree.h tree.cpp
	$(CC) $(CCOPS) -c tree.cpp

bd.o: bd.cpp bd.h
	$(CC) $(CCOPS) -c bd.cpp 

funs.o: funs.cpp funs.h
	$(CC) $(CCOPS) -c funs.cpp 

rng.o: rng.C
	$(CC) $(CCOPS) -c rng.C 

clean:
	rm -f ./bart
	rm -f ./mpibart
	rm -f ./bartpred
	rm -f ./bartsa
	rm -f *.o

mtree.o: tree.h tree.cpp
	 $(MPICC) $(MPICFLAGS) $(CCOPS) -c tree.cpp -o mtree.o

mbd.o: bd.cpp bd.h
	 $(MPICC) $(MPICFLAGS) $(CCOPS) -c bd.cpp -o mbd.o

mfuns.o: funs.cpp funs.h
	 $(MPICC) $(MPICFLAGS) $(CCOPS) -c funs.cpp -o mfuns.o

mbart.o: mpibart.cpp
	 $(MPICC) $(MPICFLAGS) $(CCOPS) -c mpibart.cpp -o mbart.o

mpibart: mbart.o $(MPIOBS)
	$(MPICC) -o mpibart mbart.o $(MPIOBS) $(LIBS)

mpred.o: mpipred.cpp
	$(MPICC) $(MPICFLAGS) $(CCOPS) -c mpipred.cpp -o mpred.o

mpipred: mpred.o $(MPIOBS)
	$(MPICC) -o bartpred mpred.o $(MPIOBS) $(LIBS)

msa.o: mpisa.cpp
	$(MPICC) $(MPICFLAGS) $(CCOPS) -c mpisa.cpp -o msa.o

mpisa: msa.o $(MPIOBS)
	$(MPICC) -o bartsa msa.o $(MPIOBS) $(LIBS)

