-wordgame: wordgame.o
- $(CC) $(CFLAGS) $(LDFLAGS) -lreadline -lm -o $@ $^
+WGCFLAGS=-Wall -Wextra -Wmissing-prototypes -Wno-unused-parameter
+
+PROGRAMS=grid4 drill2 rack
+all: $(PROGRAMS)
+
+LIBRARY=dict.o grid.o word-game.o
+
+%: %.o $(LIBRARY)
+ $(CC) $(CFLAGS) $(WGCFLAGS) $(LDFLAGS) -lreadline -lm -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(WGCFLAGS) -c -o $@ $<
+
+Makefile.dep: *.c
+ $(CC) -M $(CPPFLAGS) $^ > $@
+-include Makefile.dep
+
+.PHONY: clean
+clean:
+ rm -f $(PROGRAMS) *.o Makefile.dep