# Directory to store compiled binaries.
BINDIR ?= /tmp/bin/

CC      ?= clang
CFLAGS  ?= -c -Wall -g
LDFLAGS ?=

CFILES=$(wildcard *.c)
EXEC=$(patsubst %.c,$(BINDIR)%,$(CFILES))
TESTS=$(addsuffix .test, $(patsubst %.c,%,$(CFILES)))

all: $(BINDIR) $(EXEC)

$(BINDIR):;         -mkdir -p $(BINDIR)
$(EXEC): $(CFILES); $(CC) $(LDFLAGS) `basename $@`.c -o $@
clean:;             @-rm $(EXEC)

# to test a binary "prog" : make prog.test
$(TESTS):; valgrind --leak-check=full -v --track-origins=yes $(BINDIR)$(basename $@)

test: all $(TESTS)