###############################################
# global Makefile with automatic dependencies #
###############################################

CXX = g++
CPU = native
OPT = -O0 -ggdb # -march=$(CPU) 
# OPT = -O3 -DNDEBUG

##################
# compiler flags #
##################

INCLUDE_DIRS = -I.

FLAGS        = -Wall -Werror $(OPT) -pipe $(INCLUDE_DIRS)
# FLAGS        = $(OPT) -pipe $(INCLUDE_DIRS)

CXXFLAGS     = $(FLAGS)

LIB = -Wl,-Bstatic -lboost_program_options -Wl,-Bdynamic

################
# object files #
################

OBJ := prohver.o \
	Controller.o \
	SparseLoader.o \
	SparseNonDet.o \
	IterationVectorsMDP.o \
	MDPExporter.o \
	DOTExporter.o \
	PARAMExporter.o

####################
# build executable #
####################

prohver: $(OBJ) 
	$(CXX) $(FLAGS) -o prohver $(OBJ) $(LIB)

###########
# cleanup #
###########
clean:
	@for obj in $(OBJ); do \
		(if [ -e $$obj ]; then rm $$obj; fi) \
		done

######################
# build dependencies #
######################
Makefile.dep:
	@if [ ! -e Makefile.dep ]; then echo "# automatic dependencies" > Makefile.dep; fi
	@makedepend -w -a -Y -fMakefile.dep -- $(FLAGS) $(INCLUDE_DIRS) -- main.cpp &> /dev/null
	@for dir in $(DIRS); do \
		(makedepend -w -a -Y -fMakefile.dep -- $(FLAGS) $(INCLUDE_DIRS) -- $$dir/*.hpp $$dir/*.h $$dir/*.cpp) \
	done &> /dev/null

depend:
	@if [ -e Makefile.dep ]; then rm Makefile.dep; fi
	make Makefile.dep

########################################
# automatically generated dependencies #
########################################
include Makefile.dep
