--- /dev/null
+#!make
+
+ifeq "$(origin CC)" "default"
+CC = clang
+endif
+
+CFLAGS += -g -Wall -Wextra
+#CPPFLAGS += -DNDEBUG
+LDFLAGS +=
+
+MAKEDEPEND = $(CC) -MM
+
+TARGETS = reservoir_sample
+TEST_DIR = test
+TESTS = $(addprefix $(TEST_DIR)/, reservoir_sample_test)
+SOURCES = reservoir_sample.c notify.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)/%_test.o: %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -DTEST -c -o $@ $<
+
+$(TEST_DIR)/reservoir_sample_test: %: %.o test_suite.o notify.o
+
+reservoir_sample: %: %.o notify.o
+
+-include .depend