X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=R_mk%2FR.mk;h=c1f021c951cc53abcf31c44ce83d6dc50942f136;hb=30a7a5534a4f43fa1b1c2b98b1dd9431fa9bde7b;hp=5f19e7b6b9a0ebc5e57db2ba458e5f37c4bd98b2;hpb=addbf3540829f63cb3f30537fdb197f160e7b2de;p=makefiles.git diff --git a/R_mk/R.mk b/R_mk/R.mk index 5f19e7b..c1f021c 100644 --- a/R_mk/R.mk +++ b/R_mk/R.mk @@ -1,16 +1,46 @@ .PHONY: R-clean R-distclean -CAT = cat -ECHO = echo -EPSTOPDF = epstopdf -R = R +CAT := cat +ECHO := echo +EPSTOPDF := epstopdf +R := R +SED := sed RFLAG = --slave --vanilla +# read.table文で読み込まれるtableファイル +tablefiles = $(strip $(shell $(SED) -n -e 's/.*read\.table."\(.*\)".*;/\1/gp' $<)) + +# source文で読み込まれるtableファイル +sourcefiles = $(strip $(shell $(SED) -n -e 's/.*source."\(.*\)".*;/\1/gp' $<)) + # used by R postscript device. # For details, type '?postscriptFonts' in R. psfamily ?= Japan1 +# 依存関係を自動生成し、dファイルに格納 +%.d: %.R + @$(ECHO) '$@ is created by scanning $^.' + # 画像ファイルとRファイルの依存関係 + @($(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $<' >$@) + # テーブルファイルの依存関係 + $(if $(tablefiles),@( \ + $(ECHO); \ + $(ECHO) '# Table Files'; \ + $(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $(tablefiles)') >>$@) + # ソースファイルの依存関係 + $(if $(sourcefiles),@( \ + $(ECHO); \ + $(ECHO) '# Source Files'; \ + $(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $(sourcefiles)') >>$@) + +# 変数TARGETSで指定されたターゲットファイルに対応するdファイルをインクルード +# .dファイルからヘッダファイルの依存関係を取得する +# ターゲットに clean が含まれている場合は除く +ifeq (,$(filter %clean,$(MAKECMDGOALS))) + -include $(addsuffix .d,$(basename $(TARGETS))) +endif + %.eps.R: %.R @$(ECHO) 'postscript(file="$(subst .R,.eps,$<)",family="$(psfamily)", onefile=F, horizontal=F)' >$@ @$(CAT) $< >>$@ @@ -49,7 +79,7 @@ psfamily ?= Japan1 $(R) $(RFLAG) <$< R-clean: - $(RM) *.pdf.R *.png.R *.jpeg.R *.svg.R *.eps.R + $(RM) *.pdf.R *.png.R *.jpeg.R *.svg.R *.eps.R *.d R-distclean: R-clean $(RM) $(subst .R,.pdf,$(wildcard *.R)) $(subst .R,.png,$(wildcard *.R)) $(subst .R,.jpeg,$(wildcard *.R)) $(subst .R,.svg,$(wildcard *.R)) $(subst .R,.eps,$(wildcard *.R))