CC= cc
CFLAGS= -O3 -DMCBSP_COMPATIBILITY_MODE -I.
LFLAGS= -lm -lrt -pthread ../MulticoreBSP-for-C/lib/compat-libmcbsp1.2.0.a
OBJIP= bspinprod.o bspedupack.o
OBJBEN= bspbench.o bspedupack.o
OBJLU= bsplu_test.o bsplu.o bspedupack.o
OBJFFT= bspfft_test.o bspfft.o bspedupack.o
OBJMV= bspmv_test.o bspmv.o bspedupack.o

all: bsp.h ip bench lu fft matvec

../MulticoreBSP-for-C/lib/compat-libmcbsp1.2.0.a:
	(cd ../MulticoreBSP-for-C; make compat)

bsp.h: ../MulticoreBSP-for-C/include/mcbsp.h ../MulticoreBSP-for-C/lib/compat-libmcbsp1.2.0.a
	ln ../MulticoreBSP-for-C/include/mcbsp.h bsp.h || true

ip: $(OBJIP)
	$(CC) $(CFLAGS) -o ip $(OBJIP) $(LFLAGS)

bench: $(OBJBEN)
	$(CC) $(CFLAGS) -o bench $(OBJBEN) $(LFLAGS)

lu: $(OBJLU)
	$(CC) $(CFLAGS) -o lu $(OBJLU) $(LFLAGS)

fft: $(OBJFFT)
	$(CC) $(CFLAGS) -o fft $(OBJFFT) $(LFLAGS)

matvec: $(OBJMV)
	$(CC) $(CFLAGS) -o matvec $(OBJMV) $(LFLAGS)

bspinprod.o: bspinprod.c bspedupack.h
	$(CC) $(CFLAGS) -c bspinprod.c

bspbench.o: bspbench.c bspedupack.h
	$(CC) $(CFLAGS) -c bspbench.c

bsplu_test.o: bsplu_test.c bspedupack.h
	$(CC) $(CFLAGS) -c bsplu_test.c

bsplu.o: bsplu.c bspedupack.h
	$(CC) $(CFLAGS) -c bsplu.c

bspfft_test.o: bspfft_test.c bspedupack.h
	$(CC) $(CFLAGS) -c bspfft_test.c

bspfft.o: bspfft.c bspedupack.h
	$(CC) $(CFLAGS) -c bspfft.c

bspmv_test.o: bspmv_test.c bspedupack.h
	$(CC) $(CFLAGS) -c bspmv_test.c

bspmv.o: bspmv.c bspedupack.h
	$(CC) $(CFLAGS) -c bspmv.c

bspedupack.o: bspedupack.c bspedupack.h
	$(CC) $(CFLAGS) -c bspedupack.c

clean:
	rm -f *.o ip bench lu fft matvec
