X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=R_mk%2FR.mk;h=5b2ecf151acb24e5bfd09d8813cbc2c8f36ff2a6;hb=c9f614ba4858cd6456e1bac89350d09f12b7a183;hp=5f19e7b6b9a0ebc5e57db2ba458e5f37c4bd98b2;hpb=addbf3540829f63cb3f30537fdb197f160e7b2de;p=makefiles.git diff --git a/R_mk/R.mk b/R_mk/R.mk index 5f19e7b..5b2ecf1 100644 --- a/R_mk/R.mk +++ b/R_mk/R.mk @@ -1,16 +1,47 @@ .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文で読み込まれるファイル +tablefiles = $(strip $(shell $(SED) -n -e 's/.*read\.table."\(.*\)".*;/\1/gp' $<)) + +# source文で読み込まれるファイル +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で指定されたターゲットファイルの拡張子が.Rの場合、 +# ターゲットがclean で終わるもの以外の場合、 +# ターゲットファイルに対応するdファイルをインクルードし、 +# ヘッダファイルの依存関係を取得する +ifeq (,$(strip $(filter-out %.R,$(TARGETS)) $(filter %clean %d,$(MAKECMDGOALS)))) + -include $(addsuffix .d,$(basename $(TARGETS))) +endif + %.eps.R: %.R @$(ECHO) 'postscript(file="$(subst .R,.eps,$<)",family="$(psfamily)", onefile=F, horizontal=F)' >$@ @$(CAT) $< >>$@ @@ -32,10 +63,10 @@ psfamily ?= Japan1 @$(CAT) $< >>$@ @$(ECHO) 'invisible(dev.off())' >>$@ -# install.packages("RSVGTipsDevice") +# install.packages("RSvgDevice") %.svg.R: %.R - @$(ECHO) 'library("RSVGTipsDevice")' >$@ - @$(ECHO) 'devSVGTips("$(subst .R,.svg,$<)")' >>$@ + @$(ECHO) 'library("RSvgDevice")' >$@ + @$(ECHO) 'devSVG("$(subst .R,.svg,$<)")' >>$@ @$(CAT) $< >>$@ @$(ECHO) 'invisible(dev.off())' >>$@ @@ -49,7 +80,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))