comet2monitorの追加と、モニター機能作成
[YACASL2.git] / doc_inner / Makefile
index ff9e405..e57591f 100644 (file)
@@ -1,34 +1,63 @@
-.PHONY: all clean clean_doxygen clean_gnu_global
-CD ?= cd
-MV ?= mv
-MAKE ?= make
-DOXYGEN ?= doxygen
-HTAGS ?= htags
-RMRF ?= rm -rf
-PWD ?= pwd
-WHICH ?= which
+.PHONY: all clean doxygen-clean gnu_global-clean cmetrics-clean
+
+CD := cd
+CMETRICS := cmetrics
+CP := cp
+DOXYGEN := doxygen
+ECHO := echo
+HTAGS := htags
+INSTALL := install
+MV := mv
+RMR := rm -rf
+SED := sed
+WHICH := which
 
 DOXYGEN_DIR := doxygen
+DOXYSRCDIR := ..
 GNU_GLOBAL_DIR := gnu_global
+GNU_GLOBAL_SRCDIR := ..
+CMETRICS_DIR := cmetrics
+CMETRICS_SRCDIR := ../src
+
+# chk_file_ext: 指定されたコマンドが実在する場合にターゲットを指定。
+# 用例: $(call chk_cmd_ext,cmd,target)
+define chk_cmd_ext
+    $(if $(strip $(shell $(WHICH) $1)),$2)
+endef
 
-all: $(DOXYGEN_DIR) $(GNU_GLOBAL_DIR)
+all: $(call chk_cmd_ext,$(DOXYGEN),$(DOXYGEN_DIR)) $(call chk_cmd_ext,$(HTAGS),$(GNU_GLOBAL_DIR)) $(call chk_cmd_ext $(CMETRICS),$(CMETRICS_DIR))
 
 # doxygenのHTMLドキュメント作成先は、
 # ../Doxyfileで設定された以下のディレクトリーの下のhtmlディレクトリー
 #   OUTPUT_DIRECTORY = doc_inner
-$(DOXYGEN_DIR): ../Doxyfile
-       @($(WHICH) $(DOXYGEN) && $(CD) .. && $(DOXYGEN) && $(CD) - && $(MV) html $@) >/dev/null
+$(DOXYGEN_DIR): $(DOXYSRCDIR)/Doxyfile ../src ../include
+       $(INSTALL) -d $(DOXYGEN_DIR)
+       $(CD) $(DOXYSRCDIR) && $(DOXYGEN)
+
+$(DOXYSRCDIR)/Doxyfile: Doxyfile
+       @$(CP) -vf Doxyfile $(DOXYSRCDIR)/
 
 # htagsのHTMLドキュメント作成先は、
 # 引数DIRで指定されたディレクトリーの下のHTMLディレクトリー
-$(GNU_GLOBAL_DIR):
-       @$(MAKE) -sC .. gtags
-       @($(WHICH) $(HTAGS) && $(CD) .. && $(HTAGS) -anosx doc_inner && $(CD) - && $(MV) HTML $@) >/dev/null
+$(GNU_GLOBAL_DIR): ../src ../include
+       $(MAKE) -C $(GNU_GLOBAL_SRCDIR) gtags
+       $(CD) $(GNU_GLOBAL_SRCDIR) && $(HTAGS) -anos $(CURDIR) && $(RMR) $(CURDIR)/$@ && $(MV) $(CURDIR)/HTML $(CURDIR)/$@
+
+$(CMETRICS_DIR):
+       $(INSTALL) -d $(CMETRICS_DIR)
+       $(CMETRICS) $(CMETRICS_SRCDIR) | $(SED) -e '1s/ \{2,\}/ /g' -e '2,$$s/  \{1,\}/ /g' >$(CMETRICS_DIR)/files.tsv
+       $(CMETRICS) -f $(CMETRICS_SRCDIR) | $(SED) -e '1s/ \{2,\}/      /g' -e '2,$$s/  \{1,\}/ /g' >$(CMETRICS_DIR)/functions.tsv
+
+clean: doxygen-clean gnu_global-clean cmetrics-clean
+
+distclean: clean
 
-clean: clean_doxygen clean_gnu_global
+doxygen-clean:
+       $(RMR) $(DOXYGEN_DIR)
+       $(RM) ../Doxyfile
 
-clean_doxygen:
-       @$(RMRF) $(DOXYGEN_DIR)
+gnu_global-clean:
+       $(RMR) $(GNU_GLOBAL_DIR)
 
-clean_gnu_global:
-       @$(RMRF) $(GNU_GLOBAL_DIR)
+cmetrics-clean:
+       $(RMR) $(CMETRICS_DIR)