# austen : chaîne C de la page tempête Austen. # Dépendances : libaec (décompression CCSDS des GRIB2), freetype (texte des cartes), libwebp (images). CC = gcc WARN = -Wall -Wextra -Wformat=2 -Wshadow -Wconversion -Wno-sign-conversion -Wvla -Werror HARDEN = -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fPIE -fno-strict-overflow -fstack-clash-protection CFLAGS = -std=c11 -O2 -g $(WARN) $(HARDEN) $(shell pkg-config --cflags freetype2) LDFLAGS = -pie -Wl,-z,relro,-z,now,-z,noexecstack LDLIBS = -laec $(shell pkg-config --libs freetype2) -lwebp -lm SRC = util.c grib2.c json.c field.c decode.c analyze.c ensemble.c render.c main.c OBJ = $(SRC:.c=.o) austen: $(OBJ) $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) %.o: %.c *.h $(CC) $(CFLAGS) -c -o $@ $< # Banc d'essai du décodeur (comparaison à eccodes) et version instrumentée ASan + UBSan. test/check_grib: test/check_grib.c grib2.c util.c grib2.h util.h $(CC) -std=c11 -O1 -g $(WARN) -fsanitize=address,undefined -fno-sanitize-recover=all -I. -o $@ test/check_grib.c grib2.c util.c -laec -lm test/fuzz_grib: test/fuzz_grib.c grib2.c util.c grib2.h util.h $(CC) -std=c11 -O1 -g $(WARN) -fsanitize=address,undefined -fno-sanitize-recover=all -I. -o $@ test/fuzz_grib.c grib2.c util.c -laec -lm clean: rm -f $(OBJ) austen test/check_grib test/fuzz_grib .PHONY: clean