#!make #ifeq "$(origin CC)" "default" #CC = clang #endif CFLAGS += -g -Wall -Wextra CFLAGS += -O3 CPPFLAGS += -DNDEBUG LDFLAGS += MAKEDEPEND = $(CC) -MM TARGETS = reservoir_sample TEST_DIR = test TESTS = $(addprefix $(TEST_DIR)/, buf_test reservoir_test) SOURCES = reservoir_sample.c notify.c buf.c randomness.c reservoir.c OBJECTS = $(SOURCES:.c=.o) TEST_OBJECTS = $(TESTS:=.o) test_suite.o .PHONY: all test check clean all: $(TARGETS) .depend version.h: ./version.sh 0 0 prototype .depend: $(SOURCES) version.h $(MAKEDEPEND) $(CPPFLAGS) $^ > $@ clean: @rm -rf $(TARGETS) $(TESTS) $(TEST_OBJECTS) $(OBJECTS) *.dSYM .depend core test: $(TESTS) $(TARGETS) check: test @for t in $(TESTS); do \ echo Checking $${t};\ ./$${t} > /dev/null || echo -- $${t} FAILED --;\ done $(TEST_DIR)/validate-statistics.sh $(TEST_DIR)/%_test.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) -DTEST -c -o $@ $< $(TEST_DIR)/buf_test: %: %.o test_suite.o notify.o $(TEST_DIR)/reservoir_test: %: %.o test_suite.o notify.o buf.o randomness.o reservoir_sample: %: %.o notify.o buf.o randomness.o reservoir.o -include .depend