INCLUDE_DIR_SDL = -I/usr/include/SDL2
LIBS_SDL = -lSDL2 -lSDL2_ttf -lSDL2_image -lSDL2_mixer -lGL
INCLUDE_DIR = -Isrc -I$(SRC_DIR)/

ifeq ($(OS),Windows_NT)
	INCLUDE_DIR_SDL = 	-Isrc/SDL2 \
						-Iextern/SDL2_mingw-cb20/SDL2-2.0.12/x86_64-w64-mingw32/include/SDL2 \
						-Iextern/SDL2_mingw-cb20/SDL2_ttf-2.0.15/x86_64-w64-mingw32/include/SDL2 \
						-Iextern/SDL2_mingw-cb20/SDL2_image-2.0.5/x86_64-w64-mingw32/include/SDL2 \
						-Iextern/SDL2_mingw-cb20/SDL2_mixer-2.0.4/x86_64-w64-mingw32/include/SDL2

	LIBS_SDL = -Lextern \
			-Lextern/SDL2_mingw-cb20/SDL2-2.0.12/x86_64-w64-mingw32/lib \
			-Lextern/SDL2_mingw-cb20/SDL2_ttf-2.0.15/x86_64-w64-mingw32/lib \
			-Lextern/SDL2_mingw-cb20/SDL2_image-2.0.5/x86_64-w64-mingw32/lib \
			-Lextern/SDL2_mingw-cb20/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib \
			-lmingw32 -lSDL2main -lSDL2.dll -lSDL2_ttf.dll -lSDL2_image.dll -lSDL2_mixer.dll

else
	INCLUDE_DIR_SDL = -I/usr/include/SDL2
	LIBS_SDL = -lSDL2 -lSDL2_ttf -lSDL2_image -lSDL2_mixer -lGL
endif


default: make_dir bin/jeu_txt bin/jeu_sdl bin/test

make_dir:
	@mkdir -p obj/txt obj/core obj/sdl bin


################################### les executables ######################################

bin/jeu_txt: obj/txt/jeuTxt.o obj/txt/WinTxt.o obj/core/Jeu.o obj/core/Basilic.o obj/core/Vec2.o obj/core/Galerie.o obj/core/TableauDynamique.o obj/core/Sorcier.o obj/core/PiluleM.o
	g++ -o bin/jeu_txt $^

bin/jeu_sdl: obj/sdl/sdlJeu.o obj/core/Jeu.o obj/core/Basilic.o obj/core/Vec2.o obj/core/Galerie.o obj/core/TableauDynamique.o obj/core/Sorcier.o obj/core/PiluleM.o
	g++ -o bin/jeu_sdl $^ $(LIBS_SDL)

bin/test : obj/core/mainTest.o obj/core/Vec2.o obj/core/TableauDynamique.o obj/core/Galerie.o obj/core/Sorcier.o obj/core/PiluleM.o obj/core/Basilic.o obj/core/Jeu.o
	g++ -o bin/test obj/core/mainTest.o obj/core/Vec2.o obj/core/TableauDynamique.o obj/core/Galerie.o obj/core/Sorcier.o obj/core/PiluleM.o obj/core/Basilic.o obj/core/Jeu.o

################################## les fichiers objets ####################################

obj/sdl/sdlJeu.o: src/sdl/sdlJeu.cpp src/core/Jeu.h src/sdl/sdlJeu.h
	g++ -Wall $(INCLUDE_DIR_SDL) $(INCLUDE_DIR) -c $< -o $@

obj/txt/jeuTxt.o: src/txt/jeuTxt.cpp src/core/Jeu.h src/txt/jeuTxt.h
	g++ -Wall $(INCLUDE_DIR) -c $< -o $@

obj/txt/WinTxt.o: src/txt/WinTxt.cpp src/txt/WinTxt.h src/core/Basilic.h src/core/Galerie.h src/core/TableauDynamique.h src/core/Sorcier.h
	g++ -Wall $(INCLUDE_DIR) -c $< -o $@

obj/core/mainTest.o : src/core/mainTest.cpp src/core/Vec2.h src/core/Galerie.h src/core/TableauDynamique.h src/core/Sorcier.h src/core/PiluleM.h src/core/Basilic.h src/core/Jeu.h
	g++ -c src/core/mainTest.cpp -o obj/core/mainTest.o


obj/core/%.o: src/core/%.cpp src/core/%.h
	g++ -Wall $(INCLUDE_DIR) -c $< -o $@

################ pour lancer la documentation ####################################

doc: doc/doxyfile
	doxygen doc/doxyfile	
	firefox doc/html/index.html

############## pour supprimer les icher objet, les executable et les fichiers generés pas doxygen ######################

clean:
	rm -rf obj/txt/*.o obj/core/*.o obj/sdl/*.o 

veryclean: clean
	rm -rf bin/*

cleandoc:
	rm -r doc/latex doc/html
