EXE         := program.exe
CPP         := g++
SRC         := $(wildcard *.cpp)
OBJDIR      := .
OBJ         := $(patsubst %.cpp,$(OBJDIR)/%.o,$(SRC))
DEP         := depend.d
DEPSRC      := $(wildcard *.cpp) $(wildcard *.h)
CFLAGS      := -c -O2 -ffast-math -fomit-frame-pointer -funroll-loops -s -D__GTHREAD_HIDE_WIN32API
LFLAGS      := -laldmd -ldumbd -lagl -lalleg -lopengl32 -lglu32 -luser32 -lgdi32 -mwindows 

ifeq ($(_DEBUG_),1)
 CFLAGS := $(filter-out -s -fomit-frame-pointer, $(CFLAGS)) -g -DDEBUG
endif

ifeq ($(PROFILE),1)
 CFLAGS := $(filter-out -s -fomit-frame-pointer, $(CFLAGS)) -pg
 LFLAGS := $(LFLAGS) -pg
endif

.PHONY: clean veryclean go

default: $(DEP) $(OBJ) $(EXE)

$(DEP): $(DEPSRC)
	g++ -MM $(SRC) > $(DEP)

-include $(DEP)


$(OBJDIR)/%.o: %.cpp
	$(CPP) -o $@ $(CFLAGS) $<

$(EXE): $(OBJ)
	$(CPP) -o $(EXE) $(OBJ) $(LFLAGS)

clean:
	$(RM) $(subst /,\,$(OBJ) $(DEP))

veryclean: clean
	$(RM) $(EXE)

go:
	cd $(dir $(EXE)) && $(notdir $(EXE))
