# Makefile for Chapter 7 UB Test Suite
CC      ?= gcc
STD     ?= c2x
CFLAGS  ?= -std=$(STD) -O0 -g -Wall -Wextra -pedantic -pthread
LDFLAGS ?=
SAN     ?=

SRC   := $(wildcard *.c)
EXES  := $(patsubst %.c,%,$(SRC))

.PHONY: all clean list help

all: $(EXES)
	@fails=0; \
	for t in $(patsubst %.c,%,$(wildcard *.c)); do \
		echo "Running $$t..."; \
		./$$t || { echo "$$t FAILED"; fails+=1; }; \
	done; \
	exit $$fails

%: %.c
	$(CC) $(CFLAGS) $(SAN) $< -o $@ $(LDFLAGS)

list:
	@echo $(EXES)

clean:
	$(RM) $(EXES)

help:
	@echo "Build: make"
	@echo "Run:   ./<testname>"
	@echo "Sanitizers: make SAN='-fsanitize=address,undefined -fno-omit-frame-pointer'"
