相互参照警告が解決できない時に警告メッセージを表示するよう動作を変更
[makefiles.git] / R_mk / R.mk
1 .PHONY: R-clean R-distclean
2
3 CAT := cat
4 ECHO := echo
5 EPSTOPDF := epstopdf
6 R := R
7 SED := sed
8
9 RFLAG = --slave --vanilla
10
11 # read.table文で読み込まれるファイル
12 tablefiles = $(strip $(shell $(SED) -n -e 's/.*read\.table."\(.*\)".*;/\1/gp' $<))
13
14 # source文で読み込まれるファイル
15 sourcefiles = $(strip $(shell $(SED) -n -e 's/.*source."\(.*\)".*;/\1/gp' $<))
16
17 # used by R postscript device.
18 # For details, type '?postscriptFonts' in R.
19 psfamily ?= Japan1
20
21 # 依存関係を自動生成し、dファイルに格納
22 %.d: %.R
23         @$(ECHO) '$@ is created by scanning $^.'
24   # 画像ファイルとRファイルの依存関係
25         @($(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $<' >$@)
26   # テーブルファイルの依存関係
27         $(if $(tablefiles),@( \
28       $(ECHO); \
29       $(ECHO) '# Table Files'; \
30       $(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $(tablefiles)') >>$@)
31   # ソースファイルの依存関係
32         $(if $(sourcefiles),@( \
33       $(ECHO); \
34       $(ECHO) '# Source Files'; \
35       $(ECHO) '$(subst .R,.eps,$<) $(subst .R,.png,$<) $(subst .R,.jpeg,$<): $(sourcefiles)') >>$@)
36
37 # ターゲットがclean で終わるもの以外の場合、
38 # RTARGETSで指定されたファイルに対応するdファイルをインクルードし、
39 # ヘッダファイルの依存関係を取得する
40 ifeq (,$(filter %clean %d,$(MAKECMDGOALS))))
41   -include $(addsuffix .d,$(basename $(RTARGETS)))
42 endif
43
44 %.eps.R: %.R
45         @$(ECHO) 'postscript(file="$(subst .R,.eps,$<)",family="$(psfamily)", onefile=F, horizontal=F)' >$@
46         @$(CAT) $< >>$@
47         @$(ECHO) 'invisible(dev.off())' >>$@
48
49 %.eps: %.eps.R
50         $(R) $(RFLAG) <$<
51
52 # %.pdf: %.eps
53 #       $(EPSTOPDF) $<
54
55 %.pdf.R: %.R
56         @$(ECHO) 'pdf("$(subst .R,.pdf,$<)", family="Japan1")' >$@
57         @$(CAT) $< >>$@
58         @$(ECHO) 'invisible(dev.off())' >>$@
59
60 %.png.R: %.R
61         @$(ECHO) 'png("$(subst .R,.png,$<)")' >$@
62         @$(CAT) $< >>$@
63         @$(ECHO) 'invisible(dev.off())' >>$@
64
65 %.jpeg.R: %.R
66         @$(ECHO) 'jpeg("$(subst .R,.jpeg,$<)")' >$@
67         @$(CAT) $< >>$@
68         @$(ECHO) 'invisible(dev.off())' >>$@
69
70 # install.packages("RSvgDevice")
71 %.svg.R: %.R
72         @$(ECHO) 'library("RSvgDevice")' >$@
73         @$(ECHO) 'devSVG("$(subst .R,.svg,$<)")' >>$@
74         @$(CAT) $< >>$@
75         @$(ECHO) 'invisible(dev.off())' >>$@
76
77 %.pdf: %.pdf.R
78         $(R) $(RFLAG) <$<
79
80 %.png: %.png.R
81         $(R) $(RFLAG) <$<
82
83 %.jpeg: %.jpeg.R
84         $(R) $(RFLAG) <$<
85
86 %.svg: %.svg.R
87         $(R) $(RFLAG) <$<
88
89 R-clean:
90         $(RM) *.pdf.R *.png.R *.jpeg.R *.svg.R *.eps.R *.d
91
92 R-distclean: R-clean
93         $(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))