PROGRAMS = \
	chatter \
	crc64 \
	fd \
	limits \
	path \
	process \
	progress \
	task \

all: test

test: $(PROGRAMS:%=%.txt) Makefile
FORCE:

include ../makeflags
-include ../localconf

LIBS = -lcrucible -lpthread
LDFLAGS = -L../lib -Wl,-rpath=$(shell realpath ../lib)

.depends/%.dep: %.cc tests.h Makefile
	@mkdir -p .depends
	$(CXX) $(CXXFLAGS) -M -MF $@ -MT $(<:.cc=.o) $<

depends.mk: $(PROGRAMS:%=.depends/%.dep)
	cat $^ > $@.new
	mv -f $@.new $@

include depends.mk

%.o: %.cc %.h ../makeflags Makefile
	@echo "Implicit rule %.o: %.cc"
	$(CXX) $(CXXFLAGS) -o $@ -c $<

$(PROGRAMS): %: %.o ../makeflags Makefile
	@echo "Implicit rule %: %.o"
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $< $(LIBS)

%.txt: % Makefile FORCE
	./$< >$@ 2>&1 || (RC=$$?; cat $@; exit $$RC)

clean:
	rm -fv $(PROGRAMS:%=%.o) $(PROGRAMS:%=%.txt) $(PROGRAMS)
