PROJECT= gltp1
DATA= Doxyfile bigguy.obj ground.obj simple.vsl simple.fsl simple.mtl bbox.obj verdana.ttf

CC= g++
LD= g++

# options de compilation / link par defaut
CFLAGS= -Wall -pipe -g
LDFLAGS= -lm -lGL -g

# options pour glew
GLEW_CFLAGS= -I /usr/include/GL
#~ GLEW_CFLAGS= -I $(HOME)/local/include/
#~ GLEW_LDFLAGS= -L $(HOME)/local/lib -Wl,-rpath,$(HOME)/local/lib -lGLEW
GLEW_LDFLAGS= -lGLEW
 
CFLAGS+= $(GLEW_CFLAGS)
LDFLAGS+= $(GLEW_LDFLAGS)

# options pour sdl
SDL_CFLAGS= `sdl-config --cflags`
SDL_LDFLAGS= `sdl-config --libs` -lSDL_image -lSDL_ttf
CFLAGS+= $(SDL_CFLAGS)
LDFLAGS+= $(SDL_LDFLAGS)

# compiler gKit
GKIT_SRC= App.cpp Scene.cpp Geometry.cpp Mesh.cpp MeshOBJ.cpp Transform.cpp TextFile.cpp GL/GLShaderObject.cpp GL/TPShaderProgram.cpp
GKIT_CFLAGS= -I . -D VERBOSE -D GK_OPENGL3
GKIT_LDFLAGS=
CFLAGS+= $(GKIT_CFLAGS)
LDFLAGS+= $(GKIT_LDFLAGS)

# compiler nvWidgets
NVWIDGETS_SRC= Widgets/nvwidgets/nvWidgets.cpp Widgets/nvwidgets/nvGLWidgets.cpp Widgets/nvwidgets/nvSdlWidgets.cpp Widgets/nvwidgets/nvSdlTextPainter.cpp 
NVWIDGETS_CFLAGS= -I Widgets
NVWIDGETS_LDFLAGS=
CFLAGS+= $(NVWIDGETS_CFLAGS)
LDFLAGS+= $(NVWIDGETS_LDFLAGS)

# application
SRC= $(GKIT_SRC) $(NVWIDGETS_SRC)

# objets et dependances
OBJ= $(SRC:.cpp=.o)
DEP= $(SRC:.cpp=.d)

# executables a produire
#~ BIN= shadercc widgets_main shader_main glmain scene_main
BIN= shadercc widgets_main shader_main glmain 
#~ DEP+= widgets_main.d shadercc.d shader_main.d scene_main.d glmain.d
DEP+= widgets_main.d shadercc.d shader_main.d glmain.d

.PHONY: all
all: $(BIN)

# construction des executables
widgets_main : widgets_main.o $(OBJ)
	@echo; echo $@
	$(LD)  -o $@ $(LDFLAGS) $+

shadercc: shadercc.o $(OBJ)
	@echo; echo $@
	$(LD) -o $@ $(LDFLAGS) $+

shader_main : shader_main.o $(OBJ)
	@echo; echo $@
	$(LD) -o $@ $(LDFLAGS) $+

#~ scene_main : scene_main.o $(OBJ)
	#~ @echo; echo $@
	#~ $(LD) -o $@ $(LDFLAGS) $+

glmain: glmain.o $(OBJ)
	@echo; echo $@
	$(LD) -o $@ $(LDFLAGS) $+

# compilation des objets et des dependances
%.o: %.cpp
	$(CC) $(CFLAGS) -c $< -o $@

%.d: %.cpp
	$(CC) $(CFLAGS) -o $@ -MM $<

.PHONY: clean
clean: rebuild
	rm -f $(BIN) *.o *.d

.PHONY: tarball
tarball:
	@echo $(PROJECT)_b$(BUILD).tar.gz
	tar --ignore-failed-read --dereference -zcf $(PROJECT)_b$(BUILD).tar.gz Makefile *.c *.cpp *.h */*.h */*.cpp */*/*.h */*/*.cpp $(DATA) build
	@-rm -f $(PROJECT)_latest.tar.gz
	@ln -s $(PROJECT)_b$(BUILD).tar.gz $(PROJECT)_latest.tar.gz

# numero de version auto
-include build

build:
	@echo BUILD= 1 > build

rebuild: build
	@echo BUILD= `expr $(BUILD) + 1` > build

ifneq ($(MAKECMDGOALS), clean)
-include $(DEP)
endif
