gittag: VERSION
$(GITTAG) $(VERSION)
-distclean: cmd-clean gtags-clean version-clean clean
+distclean: cmd-clean src-distclean gtags-clean version-clean clean
clean: src-clean doc-clean doc_inner-clean
src-clean:
$(MAKE) -sC src clean
+src-distclean:
+ $(MAKE) -sC src distclean
+
gtags-clean:
$(RM) GPATH GRTAGS GSYMS GTAGS
CFLAGS := -g -Wall -Wextra $(INCLUDE)
CTAGS := ctags
ETAGS := etags
+ECHO := echo
SED := sed
WHICH := which
all: build tag
-# ヘッダファイルの依存関係を.dファイルに出力する
-%.d: %.c
- @($(CC) -MM -I $(INCLUDEDIR) $< | $(SED) 's/\($*\.o\):/\1 $@:/g' >$@ && echo '$@ is created from $<')
-
-# .dファイルからヘッダファイルの依存関係を取得する
-# ターゲットに clean が含まれている場合は除く
-ifeq (,$(filter %clean,$(MAKECMDGOALS)))
- -include $(addsuffix .d,$(CMDOBJ) $(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
-endif
-
# casl2、comet2、dumpwordのビルド
build: $(CMDOBJ)
dumpword: dumpword.o $(addsuffix .o,$(COMMONOBJ))
+# .dファイルからヘッダファイルの依存関係を取得する
+# tags、check、cleanで終わるターゲットの場合は除く
+ifeq (,$(strip $(filter %tags,$(MAKECMDGOALS)) $(filter %check,$(MAKECMDGOALS)) $(filter %clean,$(MAKECMDGOALS))))
+ -include $(addsuffix .d,$(CMDOBJ) $(COMMONOBJ) $(CASL2OBJ) $(ASOBJ) $(EXECOBJ))
+endif
+
# tagファイル作成 - ctags & etags
# コマンドがない場合はなにもしない
tag: tags TAGS
$(if $(strip $(shell $(WHICH) $(ETAGS))),$(ETAGS) $^,@$(ECHO) '$(ETAGS): not found')
# makeで生成したファイルの削除
-clean: cmd-clean work-clean tag-clean
-
-cmd-clean:
+distclean: clean
@$(RM) casl2 comet2 dumpword
-work-clean:
+clean: tag-clean
@$(RM) *.o *.d
tag-clean:
@$(RM) TAGS tags
+
+# ヘッダファイルの依存関係を.dファイルに出力する
+%.d: %.c
+ $(CC) -MM -I $(INCLUDEDIR) $< | $(SED) 's/\($*\.o\):/\1 $@:/g' >$@