1 INCLUDEDIR := ../include
2 INCLUDE = -I $(INCLUDEDIR)
6 CFLAGS := -g -Wall -Wextra $(INCLUDE)
13 CMDOBJ := casl2 comet2 dumpword
14 COMMONOBJ := word cmem cerr
15 CASL2OBJ := struct hash
16 ASOBJ := assemble token label
19 .PHONY: all build tag clean
23 # ヘッダファイルの依存関係を.dファイルに出力する
25 @($(CC) -MM -I $(INCLUDEDIR) $< | $(SED) 's/\($*\.o\):/\1 $@:/g' >$@ && echo '$@ is created from $<')
27 # .dファイルからヘッダファイルの依存関係を取得する
28 # ターゲットに clean が含まれている場合は除く
29 ifeq (,$(filter %clean,$(MAKECMDGOALS)))
30 -include $(addsuffix .d,$(CMDOBJ) $(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
33 # casl2、comet2、dumpwordのビルド
36 casl2: casl2.o $(addsuffix .o,$(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
38 comet2: comet2.o $(addsuffix .o,$(COMMONOBJ) $(CASL2OBJ) $(EXECOBJ))
40 dumpword: dumpword.o $(addsuffix .o,$(COMMONOBJ))
42 # tagファイル作成 - ctags & etags
46 tags: $(INCLUDEDIR)/*.h *.c
47 $(if $(strip $(shell $(WHICH) $(CTAGS))),$(CTAGS) $^,@$(ECHO) '$(CTAGS): not found')
49 TAGS: $(INCLUDEDIR)/*.h *.c
50 $(if $(strip $(shell $(WHICH) $(ETAGS))),$(ETAGS) $^,@$(ECHO) '$(ETAGS): not found')
53 clean: cmd-clean work-clean tag-clean
56 @$(RM) casl2 comet2 dumpword