CC = @CC@ COV_CFLAGS = -ggdb3 -O0 -ftest-coverage -fprofile-arcs -pg LDFLAGS = CFLAGS ?= -Wall @CFLAGS@ ALL_CFLAGS = $(CFLAGS) @DEFS@ LIBNAME = libnagios.a all: $(LIBNAME) SOCKETLIBS=@SOCKETLIBS@ SNPRINTF_O=@SNPRINTF_O@ TESTED_SRC_C := squeue.c kvvec.c iocache.c iobroker.c bitmap.c dkhash.c runcmd.c TESTED_SRC_C += nsutils.c fanout.c SRC_C := $(TESTED_SRC_C) pqueue.c worker.c skiplist.c nsock.c SRC_C += nspath.c SRC_O := $(patsubst %.c,%.o,$(SRC_C)) $(SNPRINTF_O) TESTS := $(patsubst %.c,test-%,$(TESTED_SRC_C)) test: $(TESTS) @for t in $(TESTS); do echo $$t:; ./$$t || exit 1; echo; done test-squeue: pqueue.o test-squeue.o t-utils.o $(CC) $(ALL_CFLAGS) $(LDFLAGS) $^ -o $@ test-iocache: t-utils.o test-iocache.o $(CC) $(ALL_CFLAGS) $(SOCKETLIBS) $^ -o $@ test-iobroker: t-utils.o test-iobroker.o $(CC) $(ALL_CFLAGS) $(SOCKETLIBS) $^ -o $@ %.o: %.c %.h Makefile lnag-utils.h $(CC) $(ALL_CFLAGS) -c $< -o $@ test-%.o: test-%.c %.c %.h Makefile $(CC) $(ALL_CFLAGS) -c $< -o $@ test-%: t-utils.o test-%.o $(CC) $(ALL_CFLAGS) $^ -o $@ $(LIBNAME): $(SRC_O) $(AR) cr $@ $^ wproc: wproc.o $(LIBNAME) $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $^ -o $@ coverage: @$(MAKE) -s --no-print-directory clean @$(MAKE) --no-print-directory cov-build @$(MAKE) --no-print-directory cov-report cov-build: $(MAKE) CFLAGS='$(COV_CFLAGS)' LDFLAGS='$(COV_CFLAGS)' test cov-report: @{ for f in $(TESTS) pqueue; do \ gcov -b -p $$f.c >/dev/null; \ done; } @rm -f *.h.gcov test-*.c.gcov @echo "--- untested functions:" | tee -a untested @grep '^function .* called 0' *.c.gcov \ | sed -e 's/function \([^ ]*\) called 0.*/\1/' \ | sed -e 's/\.c\.gcov:/\.c:/' | tee -a untested distclean: clean rm -f Makefile iobroker.h clean: clean-test clean-coverage rm -f core.* *.o *~ wproc *.a clean-test: clean-coverage rm -f $(TESTS) clean-coverage: rm -f untested *.gcov *.gcda *.gcno gmon.out .PHONY: clean clean-test clean-coverage coverage # stop make from removing intermediary files, as ours aren't really # intermediary .SECONDARY: