#-------------- basic settings ---------------
TARGET = comp_test
CFLAGS = -Wall -O3
CC = g++
INCLUDE = -I/usr/local/include/alglib
SRCDIR  = /usr/local/src/alglib/

#-------------- compile and link ---------------
$(TARGET): Makefile test_c.o alglibinternal.o alglibmisc.o ap.o dataanalysis.o diffequations.o fasttransforms.o integration.o interpolation.o linalg.o optimization.o solvers.o specialfunctions.o statistics.o
	$(CC) $(CFLAGS) -o $(TARGET) test_c.o alglibinternal.o alglibmisc.o ap.o dataanalysis.o diffequations.o fasttransforms.o integration.o interpolation.o linalg.o optimization.o solvers.o specialfunctions.o statistics.o

test_c.o: Makefile test_c.cpp
	$(CC) $(CFLAGS) -c  -o $@ $*.cpp $(INCLUDE)

alglibinternal.o: Makefile $(SRCDIR)alglibinternal.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

alglibmisc.o: Makefile $(SRCDIR)alglibmisc.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

ap.o: Makefile $(SRCDIR)ap.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

dataanalysis.o: Makefile $(SRCDIR)dataanalysis.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

diffequations.o: Makefile $(SRCDIR)diffequations.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

fasttransforms.o: Makefile $(SRCDIR)fasttransforms.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

integration.o: Makefile $(SRCDIR)integration.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

interpolation.o: Makefile $(SRCDIR)interpolation.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

linalg.o: Makefile $(SRCDIR)linalg.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

optimization.o: Makefile $(SRCDIR)optimization.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

solvers.o: Makefile $(SRCDIR)solvers.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

specialfunctions.o: Makefile $(SRCDIR)specialfunctions.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)

statistics.o: Makefile $(SRCDIR)statistics.cpp
	$(CC) $(CFLAGS) -c  -o $@ $(SRCDIR)$*.cpp $(INCLUDE)


#-------------- others ------------------------
.PHONY: clean
clean:
	rm *.o
	rm $(TARGET)
