1 INCLUDEDIR := ../include
2 INCLUDE = -I $(INCLUDEDIR)
6 CFLAGS := -g -Wall -Wextra $(INCLUDE)
14 CMDOBJ := casl2 comet2 dumpword
15 COMMONOBJ := word cmem cerr
16 CASL2OBJ := struct hash
17 ASOBJ := assemble token label
20 .PHONY: all build tag clean
24 # casl2、comet2、dumpwordのビルド
27 casl2: casl2.o $(addsuffix .o,$(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
29 comet2: comet2.o $(addsuffix .o,$(COMMONOBJ) $(CASL2OBJ) $(EXECOBJ))
31 dumpword: dumpword.o $(addsuffix .o,$(COMMONOBJ))
33 # .dファイルからヘッダファイルの依存関係を取得する
34 # tags、check、cleanで終わるターゲットの場合は除く
35 ifeq (,$(strip $(filter %tags,$(MAKECMDGOALS)) $(filter %check,$(MAKECMDGOALS)) $(filter %clean,$(MAKECMDGOALS))))
36 -include $(addsuffix .d,$(CMDOBJ) $(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
39 # tagファイル作成 - ctags & etags
43 tags: $(INCLUDEDIR)/*.h *.c
44 $(if $(strip $(shell $(WHICH) $(CTAGS))),$(CTAGS) $^,@$(ECHO) '$(CTAGS): not found')
46 TAGS: $(INCLUDEDIR)/*.h *.c
47 $(if $(strip $(shell $(WHICH) $(ETAGS))),$(ETAGS) $^,@$(ECHO) '$(ETAGS): not found')
51 @$(RM) casl2 comet2 dumpword
59 # ヘッダファイルの依存関係を.dファイルに出力する
61 $(CC) -MM -I $(INCLUDEDIR) $< | $(SED) 's,$*\.o *:,$*.o $*.d:,g' >$@