Makefile群
authorj8takagi <j8takagi@nifty.com>
Mon, 28 Jan 2013 00:07:54 +0000 (09:07 +0900)
committerj8takagi <j8takagi@nifty.com>
Mon, 28 Jan 2013 00:07:54 +0000 (09:07 +0900)
R_mk/Makefile [new file with mode: 0644]
R_mk/R.mk [new file with mode: 0644]
eukleides_mk/eukleides.mk [new file with mode: 0644]
latex_mk/Makefile [new file with mode: 0644]
latex_mk/latex.mk [new file with mode: 0644]
texinfo_mk/Makefile [new file with mode: 0644]
texinfo_mk/install-info.mk [new file with mode: 0644]
texinfo_mk/texinfo.mk [new file with mode: 0644]

diff --git a/R_mk/Makefile b/R_mk/Makefile
new file mode 100644 (file)
index 0000000..fcec929
--- /dev/null
@@ -0,0 +1,19 @@
+# ファイルから作成されるグラフィックファイルを
+# ターゲットファイルとして指定
+#
+# make および make all でのターゲットファイルになるほか、
+# R-distcleanでの削除対象になる。
+#
+# 初期設定では、ディレクトリにあるすべての
+# Rファイルに対するpdfファイル
+TARGETS := $(subst .R,.pdf,$(wildcard *.R))
+
+.PHONY: all clean distclean
+
+all: $(TARGETS)
+
+include R.mk
+
+clean: R-clean
+
+distclean: R-distclean
diff --git a/R_mk/R.mk b/R_mk/R.mk
new file mode 100644 (file)
index 0000000..5f19e7b
--- /dev/null
+++ b/R_mk/R.mk
@@ -0,0 +1,55 @@
+.PHONY: R-clean R-distclean
+
+CAT = cat
+ECHO = echo
+EPSTOPDF = epstopdf
+R = R
+
+RFLAG = --slave --vanilla
+
+# used by R postscript device.
+# For details, type '?postscriptFonts' in R.
+psfamily ?= Japan1
+
+%.eps.R: %.R
+       @$(ECHO) 'postscript(file="$(subst .R,.eps,$<)",family="$(psfamily)", onefile=F, horizontal=F)' >$@
+       @$(CAT) $< >>$@
+       @$(ECHO) 'invisible(dev.off())' >>$@
+
+%.eps: %.eps.R
+       $(R) $(RFLAG) <$<
+
+%.pdf: %.eps
+       $(EPSTOPDF) $<
+
+%.png.R: %.R
+       @$(ECHO) 'png("$(subst .R,.png,$<)")' >$@
+       @$(CAT) $< >>$@
+       @$(ECHO) 'invisible(dev.off())' >>$@
+
+%.jpeg.R: %.R
+       @$(ECHO) 'jpeg("$(subst .R,.jpeg,$<)")' >$@
+       @$(CAT) $< >>$@
+       @$(ECHO) 'invisible(dev.off())' >>$@
+
+# install.packages("RSVGTipsDevice")
+%.svg.R: %.R
+       @$(ECHO) 'library("RSVGTipsDevice")' >$@
+       @$(ECHO) 'devSVGTips("$(subst .R,.svg,$<)")' >>$@
+       @$(CAT) $< >>$@
+       @$(ECHO) 'invisible(dev.off())' >>$@
+
+%.png: %.png.R
+       $(R) $(RFLAG) <$<
+
+%.jpeg: %.jpeg.R
+       $(R) $(RFLAG) <$<
+
+%.svg: %.svg.R
+       $(R) $(RFLAG) <$<
+
+R-clean:
+       $(RM) *.pdf.R *.png.R *.jpeg.R *.svg.R *.eps.R
+
+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))
diff --git a/eukleides_mk/eukleides.mk b/eukleides_mk/eukleides.mk
new file mode 100644 (file)
index 0000000..f5781b5
--- /dev/null
@@ -0,0 +1,22 @@
+EUKLEIDES = eukleides
+EPSTOPDF = epstopdf
+# ImageMagick
+CONVERT = convert
+
+%.eps: %.euk
+       $(EUKLEIDES) $<
+
+%.pdf: %.eps
+       $(EPSTOPDF) $<
+
+%.png: %.eps
+       $(CONVERT) $< $@
+
+%.jpeg: %.eps
+       $(CONVERT) $< $@
+
+eukleides-clean:
+       $(RM) $(subst .euk,.png,*.eps)
+
+eukleides-distclean:
+       $(RM) $(subst .euk,.pdf,*.euk) $(subst .euk,.png,*.euk) $(subst .euk,.jpeg,*.euk)
diff --git a/latex_mk/Makefile b/latex_mk/Makefile
new file mode 100644 (file)
index 0000000..64fde09
--- /dev/null
@@ -0,0 +1,20 @@
+# texファイルから作成されるpdfまたはdviファイルを
+# ターゲットファイルとして指定
+#
+# make および make all でのターゲットファイルになるほか、
+# latex.mkで、ターゲットファイルに対応する依存関係が
+# 自動的に作成されてdファイルに格納される。
+# また、tex-distcleanの削除対象になる。
+#
+# 初期設定では、ディレクトリにあるすべてのtexファイル
+TARGETS := $(subst .tex,.pdf,$(wildcard *.tex))
+
+.PHONY: all clean distclean
+
+all: $(TARGETS)
+
+include latex.mk
+
+clean: tex-clean
+
+distclean: tex-distclean
diff --git a/latex_mk/latex.mk b/latex_mk/latex.mk
new file mode 100644 (file)
index 0000000..ead3a7a
--- /dev/null
@@ -0,0 +1,129 @@
+.PHONY: clean-tex distclean-tex
+
+# シェルコマンド
+ECHO := echo
+GREP := grep
+SED := sed
+
+# LaTeXコマンド
+BIBTEX := pbibtex
+DVIPDFMX := dvipdfmx
+EXTRACTBB := extractbb
+LATEX := platex
+MENDEX := mendex
+
+#LaTeXオプション
+BIBTEXFLAG ?=
+DVIPDFMXFLAG ?=
+EXTRACTBBFLAGS ?=
+LATEXFLAG ?=
+MENDEXFLAG ?=
+
+# LaTeXで処理
+COMPILE.tex = $(LATEX) -interaction=batchmode $(LATEXFLAG) $(addsuffix .tex,$(basename $<))
+
+# logファイルに未定義参照の警告があるか確認
+REFWARN := 'LaTeX Warning: There were undefined references.'
+
+# \includeコマンドで読み込まれるtexファイル
+intex = $(addsuffix .tex,$(basename $(strip $(shell \
+  $(SED) -n -e 's/\\\(include\|input\)\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/gp' $<  | \
+  $(SED) -e 's/.*{\([^}]*\)}.*/\1/'))))
+
+# \includegraphicsコマンドで読み込まれるグラフィックファイル
+ingraphics = $(strip $(shell \
+  $(SED) -n -e 's/\\includegraphics\(\[[^]]*\]\)\{0,1\}\({[^}]*}\)/&\n/gp' $< $(intex) | \
+  $(SED) -e 's/.*{\([^}]*\)}.*/\1/'))
+
+# \bibliographyコマンドで読み込まれる文献データベースファイル
+bibdb = $(addsuffix .bib,$(basename $(strip $(shell \
+  $(SED) -n -e 's/\\bibliography\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}/&\n/gp' $< $(intex) | \
+  $(SED) -e 's/.*{\([^}]*\)}.*/\1/' | \
+  $(SED) -e 's/,/ /g'))))
+
+# texファイルに索引作成の指定があるか確認
+MAKEINDEX := '\makeindex'
+GREP-makeindex = $(GREP) -F $(MAKEINDEX) $<
+
+# 依存関係を自動生成し、dファイルに格納
+%.d: %.tex
+       @$(ECHO) '$@ is created by scanning $^.'
+  # texファイルの依存関係
+       @($(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<) $(subst .tex,.d,$<): $<' >$@)
+  # texファイルの依存関係
+       $(if $(intex),@( \
+      $(ECHO); \
+      $(ECHO) '# Include/Input Files - tex'; \
+      $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(intex)') >>$@)
+  # 画像ファイルの依存関係
+       $(if $(ingraphics),@( \
+      $(ECHO); \
+      $(ECHO) '# IncludeGraphic Files - pdf, jpeg/jpg, png & xbb'; \
+      $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(ingraphics)'; \
+      $(ECHO); \
+      $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(addsuffix .xbb,$(basename $(ingraphics)))') >>$@)
+  # 文献処理用ファイルの依存関係
+       $(if $(bibdb),@( \
+      $(ECHO); \
+      $(ECHO) '# Bibliography Files - bbl & bib'; \
+      $(ECHO) '$(subst .tex,.dvi,$<): $(subst .tex,.bbl,$<)'; \
+      $(ECHO); \
+      $(ECHO) '$(subst .tex,.bbl,$<): $(bibdb)') >>$@)
+  # 索引作成用ファイルの依存関係
+       $(if $(strip $(shell $(GREP-makeindex))),@( \
+      $(ECHO); \
+      $(ECHO) '# MakeIndex Files - ind'; \
+      $(ECHO) '$(subst .tex,.dvi,$<): $(subst .tex,.ind,$<)') >>$@)
+
+# 変数TARGETSで指定されたターゲットファイルに対応するdファイルをインクルード
+ifdef TARGETS
+  -include $(addsuffix .d,$(basename $(TARGETS)))
+endif
+
+# 相互参照ファイル作成。dviファイルも同時に作成される
+%.aux: %.tex
+       $(COMPILE.tex)
+
+# dviファイル作成
+%.dvi: %.aux
+  # logファイルに未定義参照の警告がある場合、LaTeXで処理
+       while $(GREP) -F $(REFWARN) $(addsuffix .log,$(basename $<)); do $(COMPILE.tex); done
+
+# 文献処理用ファイル作成
+# BiBTeXで文献処理するときに使用される
+%.bbl: %.aux
+       $(BIBTEX) $(BIBTEXFLAG) $(addsuffix .aux,$(basename $<))
+
+# バウンディング情報ファイル作成
+# dvipdfmxで図を挿入するときに使用される
+# pdf、jpeg/jpg、pngファイルに対応
+%.xbb: %.pdf
+       $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.jpeg
+       $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.jpg
+       $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.png
+       $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+# 索引ファイル作成
+# 索引を作成するときに使用される
+%.idx: %.aux
+
+%.ind: %.idx
+       $(MENDEX) $(MENDEXFLAG) $<
+
+# PDFファイル作成
+%.pdf: %.dvi
+       $(DVIPDFMX) $(DVIPDFMXFLAG) $<
+
+# tex-cleanターゲット
+tex-clean:
+       $(RM) *.aux *.bbl *.blg *.d *.idx *.ilg *.ind *.lof *.log *.lot *.out *.toc *.xbb
+
+# tex-distcleanターゲット
+tex-distclean: tex-clean
+       $(RM) $(addsuffix .dvi,$(basename $(TARGETS))) $(addsuffix .pdf,$(basename $(TARGETS)))
diff --git a/texinfo_mk/Makefile b/texinfo_mk/Makefile
new file mode 100644 (file)
index 0000000..9b1a76a
--- /dev/null
@@ -0,0 +1,20 @@
+# # ターゲットを指定
+# TARGET :=
+# # HTMLファイルで使うCSSファイルを指定
+# CSS :=
+
+# # infoのインストール先を指定
+# prefix :=
+# infodir :=
+
+.PHONY: all  distclean clean
+
+all: $(TARGET)
+
+distclean: texinfo-distclean
+
+clean: texinfo-clean
+
+include texinfo.mk
+
+include install-info.mk
diff --git a/texinfo_mk/install-info.mk b/texinfo_mk/install-info.mk
new file mode 100644 (file)
index 0000000..1869919
--- /dev/null
@@ -0,0 +1,18 @@
+prefix ?= ~
+infodir ?= $(prefix)/share/info
+
+GZIP := gzip
+INSTALL := install
+INSTALL-INFO := install-info
+
+.PHONY: install-info uninstall-info
+
+install-info: yacasl2.info
+       $(INSTALL) -d $(infodir)
+       $(INSTALL) $< $(infodir)/
+       $(INSTALL-INFO) $(infodir)/$(notdir $<) $(infodir)/dir
+       $(GZIP) -f $(infodir)/$(notdir $<)
+
+uninstall-info:
+       $(INSTALL-INFO) --delete $(addprefix $(infodir)/,$(notdir $(TARGET))) $(infodir)/dir
+       $(RM) $(addprefix $(infodir)/,$(notdir $(TARGET)))
diff --git a/texinfo_mk/texinfo.mk b/texinfo_mk/texinfo.mk
new file mode 100644 (file)
index 0000000..d709e5c
--- /dev/null
@@ -0,0 +1,41 @@
+.PHONY: texinfo-distclean texinfo-clean texinfo-textmp-clean
+
+CP := cp
+DVIPDFMX := dvipdfmx
+INSTALL-INFO := install-info
+MKDIR := mkdir
+RMR := rm -rf
+TEX := ptex
+TEXI2DVI := TEX=$(TEX) texi2dvi
+
+DVIPDFMX_FLAGS ?=
+MAKEINFO_FLAGS ?=
+TEXI2DVI_FLAGS ?= -q --texinfo=@afourpaper
+
+%.info: %.texi
+       $(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ $<
+
+%.html: %.texi $(CSS)
+       $(MAKEINFO) -o $@ --no-split --html --css-include=$(CSS) $<
+
+%_html: %.texi $(CSS)
+       if test ! -e $@; then $(MKDIR) $@; fi
+       $(CP) $(CSS) $@/
+       $(MAKEINFO) -o $@ --html --css-ref=$(CSS) $<
+
+%.pdf: %.dvi
+       $(DVIPDFMX) $(DVIPDFMXFLAGS) $<
+
+%.txt: %.texi
+       $(MAKEINFO) --no-headers --disable-encoding -o $@ $<
+
+%.xml: %.texi
+       @$(MAKEINFO) --docbook -o $@ $<
+
+texinfo-distclean: texinfo-clean
+       @$(RMR) *_html *.info *.html *.pdf  *.dvi *.txt
+
+texinfo-clean: texinfo-textmp-clean
+
+texinfo-textmp-clean:
+       @$(RM) *.aux *.cp *.cps *.fn *.ky *.log *.pg *.pgs *.tmp *.toc *.tp *.vr