diff --git a/webserver/Makefile b/webserver/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..1ed083fb7cc640522405354ec2e361ee237f2280 --- /dev/null +++ b/webserver/Makefile @@ -0,0 +1,58 @@ +# Ces variables servent à préciser le compilateur que l'on veut utiliser +# ainsi que les paramètres de compilation +CC=gcc +LD=gcc +CFLAGS=-Wall -W -Werror +LDFLAGS= +# Le nom de l'exécutable à fabriquer +EXE=pawnee +# Les variables HEADERS, CFILES et OBJS vont contenir respectivement +# la listes des fichiers .h, .c et le nom des fichiers .o à fabriquer +# On utilise la directive particulière \$(wildcard ...) qui permet +# de construire automatiquement une liste de fichiers +HEADERS=$(wildcard *.h) +CFILES=$(wildcard *.c) +# Cette construction de variable veut dire : remplacer la chaine ".c" par +# ".o" dans la variable CFILES +# Ceci nous permet de construire la liste des fichiers .o à fabriquer +OBJS=$(CFILES:.c=.o) +# Même utilisation que précédemment. On précise les règles qui +# ne fabrique pas de fichier du nom de leur cible +.PHONY: all clean mrproper +# La règle par défaut déclenche la fabrication de l'exécutable +# par dépendance +all: $(EXE) +# Cette règle permet de construire l'exécutable. Elle dépend des fichiers +# .o et effectue l'édition de lien. Rien de nouveau ici +$(EXE): $(OBJS) +$(LD) $^ $(LDFLAGS) -o $@ +# Cette règle permet de construire automatiquement les règles +# de compilation pour chacun des fichiers .c +# l'option -MM de gcc analyse un fichier .c et +# affiche sur sa sortie standard une règle compatible +# make pour le compiler. +# Ceci permet d'ajouter automatiquement les fichiers .h aux dépendances +# des fichiers .o à construire. Ainsi, en modifiant un fichier .h +# tous les fichiers .c qui incluent ce fichier sont recompilés +# Après votre première compilation, regardez le contenu du fichier +# makefile.dep généré afin de comprendre exactement de quoi il retourne. + +makefile.dep: $(CFILES) $(HEADERS) +$(CC) -MM $(CFILES) > $@ + +# Cette règle efface le fichier de dépendances et les fichiers .o + +clean: +$(RM) $(OBJS) makefile.dep + +# Cette règle effectue la précédente et efface en plus l'exécutable + +mrproper: clean +$(RM) $(EXE) + +# On inclue le fichier de dépendance qui va contenir les règles +# de construction des fichiers .o +# S'il n'existe pas, make invoque automatiquement la règle +# qui l'a pour cible + +include makefile.dep