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