# Makefile du TP de la Seance 5 -- make : tout compiler ; make <programme> : un seul programme ;
# make asan : versions *_asan des etapes 2 et 3 (AddressSanitizer) ; make clean
CC = gcc
CFLAGS = -std=c17 -Wall -Wextra -O0 -g
ASAN = -fsanitize=address -fno-omit-frame-pointer
PROGS = etape1_vecteur etape2_invalide etape3_liste etape4_parentheses etape5_glibc etape6_mini

all: $(PROGS)

etape1_vecteur: etape1_vecteur.c
	$(CC) $(CFLAGS) $< -o $@
etape2_invalide: etape2_invalide.c
	$(CC) $(CFLAGS) $< -o $@
etape3_liste: etape3_liste.c
	$(CC) $(CFLAGS) $< -o $@
etape4_parentheses: etape4_parentheses.c
	$(CC) $(CFLAGS) $< -o $@
etape5_glibc: etape5_glibc.c
	$(CC) $(CFLAGS) $< -o $@
etape6_mini: etape6_mini.c
	$(CC) $(CFLAGS) $< -o $@

asan: etape2_invalide_asan etape3_liste_asan
etape2_invalide_asan: etape2_invalide.c
	$(CC) $(CFLAGS) $(ASAN) $< -o $@
etape3_liste_asan: etape3_liste.c
	$(CC) $(CFLAGS) $(ASAN) $< -o $@

clean:
	rm -f $(PROGS) *_asan

.PHONY: all asan clean
