2 CMDOBJ := casl2 comet2 dumpword casl2rev comet2monitor
3 COMMONOBJ := word cmem cerr
4 ASOBJ := assemble token label
5 EXECOBJ := exec dump struct hash load disassemble monitor
8 INCLUDEDIR := ../include
12 CFLAGS := -g -Wall -Wextra -I$(INCLUDEDIR)
19 .PHONY: all build tag clean
23 # casl2、comet2、dumpword、casl2rev、comet2monitorのビルド
26 casl2: $(addsuffix .o,casl2 $(COMMONOBJ) $(ASOBJ) $(EXECOBJ))
28 comet2: $(addsuffix .o,comet2 $(COMMONOBJ) $(ASOBJ) $(EXECOBJ))
30 dumpword: $(addsuffix .o,dumpword $(COMMONOBJ))
32 casl2rev:$(addsuffix .o,casl2rev $(COMMONOBJ) $(ASOBJ) $(EXECOBJ))
34 comet2monitor:$(addsuffix .o,comet2monitor $(COMMONOBJ) $(ASOBJ) $(EXECOBJ))
36 # .dファイルからヘッダファイルの依存関係を取得する
37 # tags、check、clean、.d で終わるターゲットの場合は除く
38 NODEP := %tags %check %clean %.d
39 ifeq ($(filter $(NODEP),$(MAKECMDGOALS)),)
40 -include $(addsuffix .d,$(CMDOBJ) $(COMMONOBJ) $(STRUCTOBJ) $(ASOBJ) $(EXECOBJ))
43 # tagファイル作成 - ctags & etags
47 tags: $(INCLUDEDIR)/*.h *.c
48 $(if $(strip $(shell $(WHICH) $(CTAGS))),$(CTAGS) $^,@$(ECHO) '$(CTAGS): not found')
50 TAGS: $(INCLUDEDIR)/*.h *.c
51 $(if $(strip $(shell $(WHICH) $(ETAGS))),$(ETAGS) $^,@$(ECHO) '$(ETAGS): not found')
55 $(RM) casl2 comet2 dumpword casl2rev
58 $(RM) *.o *.d core tags TAGS
63 # ヘッダファイルの依存関係を.dファイルに出力する
64 %.d: %.c $(INCLUDEDIR)/package.h
65 $(CC) -MM -I $(INCLUDEDIR) $< | $(SED) 's,$*\.o *:,$*.o $*.d:,g' >$@
67 $(INCLUDEDIR)/package.h: ../VERSION