#Ces deux options exportent les dÃ©pendances dans un fichier <source.d> (par dÃ©faut) sans arrÃªter la compilation.
#-MD exporte tous les include (y compris les include des include...)
#-MMD filtre les include "standards" (#include <...>) ce qui produit des fichiers .d beaucoup plus petits et lisibles
CFLAGS=-Wall -MP -MMD
LDFLAGS=-lm
#mettre ici le nom du fichier exécutable 
EXEC=demo
INCLUDES=.

# mettre ici les fichiers images à construire
OBJECTS = $(EXEC).o image.o bmp.o 

all : $(EXEC)

# liste des modules objets (".o") pour produire l'executable
# "$@" pour le nom de la regle
# "$^" on prend toutes les dependances, meme si deja resolues (quelque soit les dates des fichiers)
$(EXEC): $(OBJECTS)
	gcc $(LDFLAGS) -o $@ $^

# chaque module objet ("%.o") necessite le fichier source ("%.c") correspondant (de meme nom ou "basename")
# "$<" precise que l'on ne garde que les dependances non resolues (fichiers modifies / date des fichiers source)
%.o: %.c
	gcc -c $(CFLAGS) -I$(INCLUDES) $<

clean:
	rm -f *.o

