# Makefile du TP de la Seance 3 -- make : tout compiler ; make <programme> : un seul programme ;
# make asan : versions *_asan de l'etape 4 (AddressSanitizer) ; make clean
CC = gcc
CFLAGS = -std=c17 -Wall -Wextra -O0 -g
ASAN = -fsanitize=address -fno-omit-frame-pointer
PROGS = etape1_octets etape2_zones etape3_tableaux etape4_debord etape4_chaine etape5_tas etape6_hexdump

all: $(PROGS)

etape1_octets: etape1_octets.c
	$(CC) $(CFLAGS) $< -o $@
etape2_zones: etape2_zones.c
	$(CC) $(CFLAGS) $< -o $@
etape3_tableaux: etape3_tableaux.c
	$(CC) $(CFLAGS) $< -o $@
etape4_debord: etape4_debord.c
	$(CC) $(CFLAGS) $< -o $@
etape4_chaine: etape4_chaine.c
	$(CC) $(CFLAGS) $< -o $@
etape5_tas: etape5_tas.c
	$(CC) $(CFLAGS) $< -o $@
etape6_hexdump: etape6_hexdump.c
	$(CC) $(CFLAGS) $< -o $@

asan: etape4_debord_asan etape4_chaine_asan
etape4_debord_asan: etape4_debord.c
	$(CC) $(CFLAGS) $(ASAN) $< -o $@
etape4_chaine_asan: etape4_chaine.c
	$(CC) $(CFLAGS) $(ASAN) $< -o $@

clean:
	rm -f $(PROGS) *_asan

.PHONY: all asan clean
