From: j8takagi Date: Mon, 28 Jan 2013 00:07:54 +0000 (+0900) Subject: Makefile群 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=addbf3540829f63cb3f30537fdb197f160e7b2de;p=makefiles.git Makefile群 --- addbf3540829f63cb3f30537fdb197f160e7b2de diff --git a/R_mk/Makefile b/R_mk/Makefile new file mode 100644 index 0000000..fcec929 --- /dev/null +++ b/R_mk/Makefile @@ -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 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 index 0000000..f5781b5 --- /dev/null +++ b/eukleides_mk/eukleides.mk @@ -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 index 0000000..64fde09 --- /dev/null +++ b/latex_mk/Makefile @@ -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 index 0000000..ead3a7a --- /dev/null +++ b/latex_mk/latex.mk @@ -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 index 0000000..9b1a76a --- /dev/null +++ b/texinfo_mk/Makefile @@ -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 index 0000000..1869919 --- /dev/null +++ b/texinfo_mk/install-info.mk @@ -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 index 0000000..d709e5c --- /dev/null +++ b/texinfo_mk/texinfo.mk @@ -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