--- /dev/null
+GCC := gcc
+CFLAGS := -g -Wall -Wno-unused-variable --std=c99
+
+SRCS := $(wildcard *.c)
+OBJS := ${SRCS:%.c=%.o}
+BINS := $(filter-out main util,${SRCS:%.c=%})
+
+all: $(BINS) main
+
+%-test: %
+ ./$<
+
+main: main.o util.o
+ $(GCC) $(CFLAGS) -o $@ $+
+
+$(BINS): %: %.o
+ $(GCC) $(CFLAGS) -o $@ $+
+
+%.o: %.c
+ $(GCC) $(CFLAGS) -c -o $@ $+