CC = mpicc
CXX = mpicxx
CFLAGS = -Wall -Wconversion -O3 -fPIC
LIBS = blas/blas.a

all: train predict

train: solver.o linear.o train.c $(LIBS)
	$(CXX) $(CFLAGS) -o train train.c solver.o linear.o $(LIBS)

predict: solver.o linear.o predict.c $(LIBS)
	$(CXX) $(CFLAGS) -o predict predict.c solver.o linear.o $(LIBS)

solver.o: solver.cpp solver.h
	$(CXX) $(CFLAGS) -c -o solver.o solver.cpp

linear.o: linear.cpp linear.h
	$(CXX) $(CFLAGS) -c -o linear.o linear.cpp

blas/blas.a: blas/*.c blas/*.h
	make -C blas OPTFLAGS='$(CFLAGS)' CC='$(CC)';

clean:
	make -C blas clean
	rm -f *~ solver.o linear.o train predict
