CPP = g++
LINKING = -lgsl -lgslcblas
CFLAGS = -O3
OPTIONS = -Wall -pedantic  -W -Werror -Wconversion -Wshadow \
	  -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings  \
	  -fshort-enums -fno-common -Wfatal-errors 
OBJECTFILES = linalg.o error.o utils.o main.o
HEADERFILES = include/linalg.hpp include/error.hpp include/utils.hpp 

.SUFFIXES : .cpp .o

.cpp.o :
	$(CPP) $(CFLAGS) $(OPTIONS) -c $< 

main: $(OBJECTFILES) 
	$(CPP) -o main $(OBJECTFILES)  $(LINKING)

all: test

test: main
	./main

linalg.o: linalg.cpp include/linalg.hpp
error.o: error.cpp include/error.hpp
utils.o: utils.cpp include/utils.hpp

main.o: main.cpp $(HEADERFILES)

clean:
	rm -f *.o main