#build the gui?
GUI=yes

CC=g++

OPTFLAGS=-O3
GLLIBS=-lglut -lGLU -lGL
XLIBS=-lXi -lXmu -lX11 -lXext
MLIB=-lm

CFLAGS=-Wall -DLINUX_COMPILE $(OPTFLAGS)
LDFLAGS=$(MLIB)

ifeq ($(GUI), yes)
	LDFLAGS+= $(GLLIBS) $(XLIBS)
	CFLAGS+= -DGUI
endif

BINARIES=breach
OFILES=breach.o map.o edge.o math_functions.o map_init.o node.o graph.o point.o

all: $(BINARIES)

breach: $(OFILES)
	$(CC) $(LDFLAGS) -o breach $(OFILES)

breach.o: breach.cpp map.h map_init.h
	$(CC) $(CFLAGS) -c breach.cpp

map.o: map.cpp map.h edge.h node.h point.h math_functions.h globals.h graph.h
	$(CC) $(CFLAGS) -c map.cpp
	
edge.o: edge.cpp edge.h point.h globals.h
	$(CC) $(CFLAGS) -c edge.cpp
	
math_functions.o: math_functions.cpp math_functions.h point.h globals.h
	$(CC) $(CFLAGS) -c math_functions.cpp
	
map_init.o: map_init.cpp map_init.h map.h
	$(CC) $(CFLAGS) -c map_init.cpp
	
node.o: node.cpp node.h edge.h math_functions.h globals.h
	$(CC) $(CFLAGS) -c node.cpp
	
graph.o: graph.cpp graph.h
	$(CC) $(CFLAGS) -c graph.cpp
	
point.o: point.cpp point.h globals.h
	$(CC) $(CFLAGS) -c point.cpp

clean:
	rm -f $(BINARIES) *~ core* $(OFILES)
