# http://gl.developpez.com/tutoriel/outil/makefile/

# Ce makefile est compliqu, il y a makefile.simple comme exemple simple
# Les deux makefile font la mme chose

# "man pkg-config" pour les infos sur les options

CC=gcc
#CC=i586-mingw32msvc-gcc

ERROR_CFLAGS = -Wall -Wextra -pedantic
GTK_CFLAGS=`pkg-config --cflags gtk+-2.0`
CFLAGS = $(ERROR_FLAGS) $(GTK_CFLAGS)

GTK_LDFLAGS = `pkg-config --libs gtk+-2.0`
LDFLAGS = $(ERROR_FLAGS) $(GTK_LDFLAGS)

# -TC- On liste tous les fichiers sources du projet 
SRC1=main.c pendu.c commun.c
SRC2=lecture_pendu.c lecture.c commun.c
SRC=$(SRC1) $(SRC2)
# -TC- Pour construire la liste des fichiers objets, c'est simple, car on veut
# un fichier objet par fichier d'implantation
OBJ1=$(SRC1:.c=.o)
OBJ2=$(SRC2:.c=.o)
OBJ=$(OBJ1) $(OBJ2)
#EXEC=pendu.exe lecture_pendu.exe
EXEC=pendu lecture_pendu

all: $(EXEC)

# -TC- Instruction destine  l'dition des liens. $@ correspond  la cible et $^  
# la liste des dpendances
pendu : $(OBJ1)
#pendu.exe : $(OBJ1)
	$(CC) -o $@ $^ $(LDFLAGS)
 
lecture_pendu : $(OBJ2)
#lecture_pendu.exe : $(OBJ2)
	$(CC) -o $@ $^ $(LDFLAGS)
# -TC- Ici, on liste les dpendances pour chaque fichier d'implantation
main.o : pendu.h main.menu.xml
pendu.o: pendu.h commun.h

lecture.o : lecture.h
lecture_pendu.o : lecture.h commun.h
 
# -TC- Enfin, on utilise une rgle d'infrence gnrique pour la compilation 
# des fichiers sources. $@ dsigne la cible, et $< dsigne la 1re des 
# dpendances. Cette manire de faire est utile lorsqu'on a plus de 2 fichiers
# d'implantation  compiler
%.o: %.c
	$(CC) -o $@ -c $< $(CFLAGS)
 
# Pour dclarer que clean et mrproper ne fabriquent pas les ventuels fichiers
# clean et mrproper qui pourraient ventuellement tre prsent dans le
# rpertoire courant : .PHONY
.PHONY: clean mrproper

# Lancer avec "makefile clean"
clean:
	rm -rf *.o

# Lancer avec "makefile mrproper" qui lancera aussi clean car clean en dpend
mrproper: clean
	rm -rf $(EXEC)
	
# TC : commentaires par mujigka : http://www.developpez.net/forums/member.php?u=62148
