CFLAGS=$(INCLUDEDDIRS)                \
	-I../thirdparty/glew/include  \
	-I../thirdparty/deelx/include \
	-g -Wall
CXXFLAGS=$(CFLAGS)
LOADLIBES=../thirdparty/glew/lib/libGLEW.a      \
	-lX11 -lpthread -rdynamic -lglut -lGLU
TARGET=renderer


# Default target
all: $(TARGET)

# Variables definition
-include Makefile.d


$(TARGET) : $(SRCOBJS)
	$(LINK.cpp) $+ -o $@ $(LOADLIBES)


.PHONY: run rebuild clean

run : $(TARGET)
	./$(TARGET)

rebuild: clean $(TARGET)

clean: fast-clean
	find -name \*.d -o -name \*.o -o -name \*~ -o -name $(TARGET) | xargs rm -f




# Dependencies of the executable
Makefile.d:
	@echo -n SRCOBJS= > $@
	@find . -iname \*.cpp -o -iname \*.c | sed 's/\(.*\.\)c\(pp\)\?/\1o \\/' >> $@
	@echo >> $@
	@echo INCLUDEDDIRS=-I. \\ >> $@
	@find . -iname \* -type d | sed 's/\(.*\)/-I\1 \\/' >> $@
	@echo >> $@
	@echo -e -include \\044\(SRCOBJS:.o=.d\) >> $@




# Dependencies of the source files
%.d : %.cpp
	@$(CXX) $(CXXFLAGS) -c $< -MM | sed 's/.*\.o[ :]*/$(subst /,\/,$*).o $(subst /,\/,$*).d : /' > $@;

%.d : %.c
	@$(CC) $(CFLAGS) -c $< -MM | sed 's/.*\.o[ :]*/$(subst /,\/,$*).o $(subst /,\/,$*).d : /' > $@;




# "Poor man precompiled headers": Compile all file in only one cpp to
# save compile time spent in compiling headers
TARGET_FAST=$(TARGET)-fast
FAST_SUFFIX=cpp.tmp

.PHONY: fast-run fast-clean

fast-run : $(TARGET_FAST)
	./$(TARGET_FAST)

fast-clean:
	rm -f $(TARGET_FAST) $(TARGET_FAST).$(FAST_SUFFIX)


fast: $(TARGET_FAST)

.PHONY: $(TARGET_FAST)
$(TARGET_FAST): $(TARGET_FAST).$(FAST_SUFFIX)
	$(LINK.cpp) -x c++ $+ -o $@ $(LOADLIBES)

.PHONY: $(TARGET_FAST).$(FAST_SUFFIX)
$(TARGET_FAST).$(FAST_SUFFIX):
	rm -f $@
	find . -iname \*.cpp -o -iname \*.c | sed -e 's/\(.*\)/#include "\1"/' > $@
