依存関係を整理
[YACASL2.git] / src / Makefile
index 0ff70c2..187a690 100644 (file)
@@ -1,23 +1,35 @@
 INCLUDE = ../include
 CC = gcc
-CFLAGS = -Wall -I $(INCLUDE)
-COMMONSRC = struct.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)
+CFLAGS = -g -Wall -I $(INCLUDE)
+
+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))
        $(CC) $(CFLAGS) -o $@ $^
-../comet2: comet2.o $(COMMONSRC) $(EXECSRC)
+
+../comet2: comet2.o $(subst .c,.o,$(COMMONSRC) $(CASL2SRC) $(EXECSRC))
        $(CC) $(CFLAGS) -o $@ $^
-../dumpword: dumpword.o $(COMMONSRC)
+
+../dumpword: dumpword.o $(subst .c,.o,$(COMMONSRC))
        $(CC) $(CFLAGS) -o $@ $^
+
 %.o: %.c
        $(CC) -c $(CFLAGS) $<
-casl2.o comet2.o $(COMMONSRC) $(ASSRC) $(EXECSRC): $(INCLUDE)/casl2.h
-casl2.o $(ASSRC): $(INCLUDE)/assemble.h
-comet2.o $(EXECSRC): $(INCLUDE)/exec.h
+
+%.d: %.c
+       @$(CC) -MM -I $(INCLUDE) $< | sed 's/\($*\.o\):/\1 $@:/g' >$@
+
+-include $(subst .c,.d,casl2.c comet2.c dumpword.c $(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))
+
 TAGS: $(INCLUDE)/*.h *.c
        @if test `which etags`; then etags $^; fi
+
 clean:
-       @rm -f *.o
+       @rm -f ../casl2 ../comet2 ../dumpword *.o *.d