diff --git a/Makefile b/Makefile
index 11c9a8b..2eed425 100644
--- a/Makefile
+++ b/Makefile
@@ -1,34 +1,35 @@
-# Makefile
-# Auteur : Farès BELHADJ
-# Email : amsi@up8.edu
-# Date : 16/11/2021
-# définition des commandes utilisées
-CC = gcc
-ECHO = echo
-RM = rm -f
-TAR = tar
-ZIP = zip
+# Auteur : Farès BELHADJ (amsi@up8.edu)
+
+# Définition des commandes utilisées
+CC = gcc
+ECHO = echo
+RM = rm -f
+TAR = tar
+ZIP = zip
MKDIR = mkdir
CHMOD = chmod
-CP = rsync -R
-# déclaration des options du compilateur
-CFLAGS = -Wall -O3
+CP = rsync -R
+
+# Déclaration des options du compilateur
+CFLAGS =
CPPFLAGS = -I.
-LDFLAGS = -lm
-# définition des fichiers et dossiers
-PACKNAME = sc_00_07
-PROGNAME = demo
-VERSION = 1.0
-distdir = $(PACKNAME)_$(PROGNAME)-$(VERSION)
-HEADERS = $(wildcard includes/*.h)
-SOURCES = window.c $(wildcard src/*.c)
-MSVCSRC = $(patsubst %,,$(SOURCES))
-OBJ = $(SOURCES:.c=.o)
-DOXYFILE = documentation/Doxyfile
-VSCFILES = $(PROGNAME).vcxproj $(PROGNAME).sln
+LDFLAGS = -lm
+
+# Définition des fichiers et dossiers
+PACKNAME = projet
+PROGNAME = demo
+VERSION = 1.0
+distdir = $(PACKNAME)_$(PROGNAME)-$(VERSION)
+HEADERS = $(wildcard includes/*.h)
+SOURCES = window.c $(wildcard src/*.c)
+MSVCSRC = $(patsubst %,,$(SOURCES))
+OBJ = $(SOURCES:.c=.o)
+DOXYFILE = documentation/Doxyfile
+VSCFILES = $(PROGNAME).vcxproj $(PROGNAME).sln
EXTRAFILES = COPYING $(wildcard shaders/*.?s images/*) $(VSCFILES)
-DISTFILES = $(SOURCES) Makefile $(HEADERS) $(DOXYFILE) $(EXTRAFILES)
-# Traitements automatiques pour ajout de chemins et options (ne pas modifier)
+DISTFILES = $(SOURCES) Makefile $(HEADERS) $(DOXYFILE) $(EXTRAFILES)
+
+# Traitements automatiques pour ajout des chemins et options
ifneq (,$(shell ls -d /usr/local/include 2>/dev/null | tail -n 1))
CPPFLAGS += -I/usr/local/include
endif
@@ -48,36 +49,54 @@ ifeq ($(shell uname),Darwin)
else
LDFLAGS += -lGL
endif
+
CPPFLAGS += $(shell sdl2-config --cflags)
LDFLAGS += -lGL4Dummies $(shell sdl2-config --libs)
-all: $(PROGNAME)
-$(PROGNAME): $(OBJ)
- $(CC) $(OBJ) $(LDFLAGS) -o $(PROGNAME)
+
%.o: %.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
+
+# Par défaut
+$(PROGNAME): CFLAGS += -Wall -Wextra -Wshadow -pedantic -g -Wsign-conversion
+$(PROGNAME): compilation
+
+# Version finale avec optimisation
+release: CFLAGS += -O3
+release: compilation
+
+compilation: $(OBJ)
+ $(CC) $(OBJ) $(LDFLAGS) -o $(PROGNAME)
+
dist: distdir
$(CHMOD) -R a+r $(distdir)
$(TAR) zcvf $(distdir).tgz $(distdir)
$(RM) -r $(distdir)
+
zip: distdir
$(CHMOD) -R a+r $(distdir)
$(ZIP) -r $(distdir).zip $(distdir)
$(RM) -r $(distdir)
+
distdir: $(DISTFILES)
$(RM) -r $(distdir)
$(MKDIR) $(distdir)
$(CHMOD) 777 $(distdir)
$(CP) $(DISTFILES) $(distdir)
+
doc: $(DOXYFILE)
cat $< | sed -e "s/PROJECT_NAME *=.*/PROJECT_NAME = $(PROGNAME)/" |\
sed -e "s/PROJECT_NUMBER *=.*/PROJECT_NUMBER = $(VERSION)/" >> $<.new
mv -f $<.new $<
cd documentation && doxygen && cd ..
+
msvc: $(VSCFILES)
@echo "Now these files ($?) already exist. If you wish to regenerate them, you should first delete them manually."
$(VSCFILES):
@echo "Generating $@ ..."
@cat ../../Windows/templates/gl4dSample$(suffix $@) | sed -e "s/INSERT_PROJECT_NAME/$(PROGNAME)/g" | sed -e "s/INSERT_TARGET_NAME/$(PROGNAME)/" | sed -e "s/INSERT_SOURCE_FILES/$(MSVCSRC)/" > $@
+
+all: $(PROGNAME)
+
clean:
@$(RM) -r $(PROGNAME) $(OBJ) *~ $(distdir).tgz $(distdir).zip gmon.out \
core.* documentation/*~ shaders/*~ documentation/html