CFLAGS=-g -Wall -Wextra -Wno-unused-parameter
LDLIBS=-lpthread
C=$(wildcard *.c)
O=$(C:.c=)
A=$(C:.c=.asan)
L=$(C:.c=.lsan)
U=$(C:.c=.usan)
T=$(C:.c=.tsan)

all: $O $A $U $T

%.asan: %.c
	$(CC) -fsanitize=address -fPIC $< -o $@ $(CFLAGS) $(LDLIBS)
%.lsan: %.c
	$(CC) -fsanitize=leak -fPIC $< -o $@ $(CFLAGS) $(LDLIBS)
%.usan: %.c
	$(CC) -fsanitize=undefined -fPIC $< -o $@ $(CFLAGS) $(LDLIBS)
%.tsan: %.c
	$(CC) -fsanitize=thread -fPIC $< -o $@ $(CFLAGS) $(LDLIBS)

clean:
	rm -f $O $A $L $U $T
