-INCLUDE = ../include
-CC = gcc
-CFLAGS = -g -Wall -I $(INCLUDE)
-COMMONSRC = struct.o hash.o cmd.o cerr.o dump.o
-ASSRC = assemble.o token.o label.o macro.o
-EXECSRC = exec.o
-.PHPNY: all clean
-all: ../casl2 ../comet2 ../dumpword TAGS
-../casl2: casl2.o $(COMMONSRC) $(ASSRC) $(EXECSRC)
+INCLUDE := ../include
+CC := gcc
+CFLAGS := -g -Wall -Wextra -I $(INCLUDE)
+RM := rm -f
+
+COMMONSRC := word.c cmem.c cerr.c
+CASL2SRC := struct.c cmd.c hash.c
+ASSRC := assemble.c token.c label.c
+EXECSRC := exec.c dump.c
+
+.PHONY: all clean
+
+all: ../casl2 ../comet2 ../dumpword
+
+../casl2: casl2.o $(subst .c,.o,$(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))