# setting compilation
DO_TESTING=1
DO_MATIO=0
DO_DEBUG=1
TARGET=libndwgraph.a
CC=g++
LIBS=

# change cc flags according to debug
ifeq ($(DO_DEBUG),1)
	CCFLAGS=-Wall -static -O3 -fPIC
else
	CCFLAGS=-Wall -static -O0 -fPIC -g3
endif

# paths to particular parts
CORE=../core
AUX=../aux
TESTING=../testing
IO=../io

# names of source files
SRC_NAMES_MAT=$(IO)/MatlabConnector.cpp
SRC_NAMES_TESTING=$(TESTING)/testSparseUndiGraph.cpp $(TESTING)/TestGraph.cpp $(TESTING)/TestFullUndiGraph.cpp
SRC_NAMES_CORE=$(CORE)/BinaryGraph.cpp $(CORE)/FullUndiGraph.cpp $(CORE)/Graph.cpp $(CORE)/SparseUndiGraph.cpp $(CORE)/SymMatrix.cpp $(CORE)/UndiGraph.cpp $(AUX)/StringOperations.cpp
SRC_NAMES=$(SRC_NAMES_CORE)

# name of object files
OBJ_NAMES_MAT=MatlabConnector.o
OBJ_NAMES_TESTING=testSparseUndiGraph.o TestFullUndiGraph.o TestGraph.o
OBJ_NAMES_CORE=BinaryGraph.o FullUndiGraph.o Graph.o SparseUndiGraph.o SymMatrix.o UndiGraph.o StringOperations.o
OBJ_NAMES=$(OBJ_NAMES_CORE)

# Testing inclusion
ifeq ($(DO_TESTING),1)
	SRC_NAMES+=$(SRC_NAMES_TESTING) 
	OBJ_NAMES+=$(OBJ_NAMES_TESTING) 
endif

# matio settings
ifeq ($(DO_MATIO),1)
	MATIOLIB=/home/hartman/lib/lib/libmatio.a
	MATIOINC=-I"/home/hartman/lib/include" -L/home/hartman/lib/lib
	LIBS+=-lmatio -lz
	SRC_NAMES=$(SRC_NAMES) $(SRC_NAMES_MAT) 
	OBJ_NAMES=$(OBJ_NAMES) $(OBJ_NAMES_MAT) 
endif


# compilation
all:
	$(CC) -c $(A) $(CCFLAGS) $(LIBS) $(MATIOINC) $(SRC_NAMES) 
	ar -cvq $(TARGET) $(OBJ_NAMES) $(MATIOLIB)

clean:
	rm *.o $(TARGET)

