]> code.delx.au - gnu-emacs/blobdiff - etc/refcards/Makefile
Ibuffer change marks
[gnu-emacs] / etc / refcards / Makefile
index 115b0ca084a7bf8323bbf32c704a85a180db8a0e..20057cb4b1e6415b79f40f02af72ba0c0baa4297 100644 (file)
@@ -1,6 +1,6 @@
 ### Makefile for Emacs refcards
 
-## Copyright (C) 1993-1994, 2001-201 Free Software Foundation, Inc.
+## Copyright (C) 1993-1994, 2001-2016 Free Software Foundation, Inc.
 
 ## This file is part of GNU Emacs.
 #
 ## You should have received a copy of the GNU General Public License
 ## along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
+### Commentary:
 
-## Top-level targets.
+## See README for details.
 
-## PDF files that are included with Emacs.
-all: refcards_pdf dired-refcards_pdf misc-refcards_pdf
+PDF_ENGLISH = \
+       calccard.pdf \
+       dired-ref.pdf \
+       gnus-booklet.pdf \
+       gnus-refcard.pdf \
+       orgcard.pdf \
+       refcard.pdf \
+       survival.pdf \
+       vipcard.pdf \
+       viperCard.pdf
 
-REFCARDS_PDF = refcard.pdf cs-refcard.pdf de-refcard.pdf fr-refcard.pdf \
-            pl-refcard.pdf pt-br-refcard.pdf ru-refcard.pdf sk-refcard.pdf
-refcards_pdf: ${REFCARDS_PDF}
-refcards_ps: ${REFCARDS_PDF:.pdf=.ps}
+PDF_CZECH = \
+       cs-dired-ref.pdf \
+       cs-refcard.pdf \
+       cs-survival.pdf
 
-DIRED_REFCARDS_PDF = dired-ref.pdf cs-dired-ref.pdf fr-dired-ref.pdf \
-               sk-dired-ref.pdf
-dired-refcards_pdf: ${DIRED_REFCARDS_PDF}
-dired-refcards_ps: ${DIRED_REFCARDS_PDF:.pdf=.ps}
+PDF_FRENCH = \
+       fr-dired-ref.pdf \
+       fr-refcard.pdf \
+       fr-survival.pdf \
 
-MISC_REFCARDS_PDF = calccard.pdf gnus-booklet.pdf gnus-refcard.pdf orgcard.pdf
-misc-refcards_pdf: ${MISC_REFCARDS_PDF}
-misc-refcards_ps: ${MISC_REFCARDS_PDF:.pdf=.ps}
+PDF_GERMAN = de-refcard.pdf
 
+PDF_POLISH = pl-refcard.pdf
 
-## The following files are not included with Emacs.
-SURVIVAL_CARDS_PDF = survival.pdf cs-survival.pdf sk-survival.pdf
-survival-cards_pdf: ${SURVIVAL_CARDS_PDF}
-survival-cards_ps: ${SURVIVAL_CARDS_PDF:.pdf=.ps}
+PDF_PORTUGUESE = pt-br-refcard.pdf
 
-VIPER_CARDS_PDF = vipcard.pdf viperCard.pdf
-viper-cards_pdf: ${VIPER_CARDS_PDF}
-viper-cards_ps: ${VIPER_CARDS_PDF:.pdf=.ps}
+PDF_RUSSIAN = ru-refcard.pdf
 
+PDF_SLOVAKIAN = \
+       sk-dired-ref.pdf \
+       sk-refcard.pdf \
+       sk-survival.pdf
 
-## PDF files.
+PDF_TARGETS = $(PDF_ENGLISH) $(PDF_CZECH) $(PDF_FRENCH) $(PDF_GERMAN) \
+       $(PDF_POLISH) $(PDF_PORTUGUESE) $(PDF_RUSSIAN) $(PDF_SLOVAKIAN)
 
-## The page layouts (a4/letter) are written directly in the .tex files.
+PS_ENGLISH = $(PDF_ENGLISH:.pdf=.ps)
+PS_CZECH = $(PDF_CZECH:.pdf=.ps)
+PS_FRENCH = $(PDF_FRENCH:.pdf=.ps)
+PS_GERMAN = $(PDF_GERMAN:.pdf=.ps)
+PS_POLISH = $(PDF_POLISH:.pdf=.ps)
+PS_PORTUGUESE = $(PDF_PORTUGUESE:.pdf=.ps)
+PS_RUSSIAN = $(PDF_RUSSIAN:.pdf=.ps)
+PS_SLOVAKIAN = $(PDF_SLOVAKIAN:.pdf=.ps)
 
-cs-refcard.pdf cs-dired-ref.pdf cs-survival.pdf sk-refcard.pdf \
-sk-dired-ref.pdf sk-survival.pdf: %.pdf:       %.tex
-       if pdfcsplain --version > /dev/null 2> /dev/null; then \
-         pdfcsplain $<; \
-       else \
-         csplain "\pdfoutput=1\input $<"; \
-       fi
+PS_TARGETS = $(PDF_TARGETS:.pdf=.ps)
 
-## Some versions of pdfmex seem to create dvi by default, hence output-format.
-pl-refcard.pdf: %.pdf: %.tex
-       if ! kpsewhich -format=fmt mex > /dev/null && \
-         ! pdfmex --version > /dev/null 2> /dev/null; then \
-         echo "No mex format found."; false; \
-       fi
-       pdftex -output-format=pdf $<
 
-ru-refcard.pdf: %.pdf: %.tex
-       pdflatex $<
+## For emacsver.tex.
+ENVADD = TEXINPUTS=".:$(TEXINPUTS)"
 
-#gnus-logo.pdf: %.pdf: %.eps
-#      ps2pdf $<
 
-gnus-refcard.pdf: %.pdf: %.tex gnus-logo.pdf
-       pdflatex $<
+.PHONY: all pdf ps
 
-gnus-booklet.pdf: gnus-refcard.tex gnus-logo.pdf
-       pdflatex -jobname=gnus-booklet '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+all: pdf
+pdf: $(PDF_TARGETS)
+ps: $(PS_TARGETS)
 
-## Everything not explicitly listed above.
-%.pdf: %.tex
-       pdftex $<
 
+.PHONY: english czech french german polish portuguese russian slovakian
+english: $(PDF_ENGLISH)
+czech: $(PDF_CZECH)
+french: $(PDF_FRENCH)
+german: $(PDF_GERMAN)
+polish: $(PDF_POLISH)
+portuguese: $(PDF_PORTUGUESE)
+russian: $(PDF_RUSSIAN)
+slovakian: $(PDF_SLOVAKIAN)
 
-## dvi files.
+.PHONY: english-ps czech-ps french-ps german-ps polish-ps portuguese-ps russian-ps slovakian-ps
+english-ps: $(PS_ENGLISH)
+czech-ps: $(PS_CZECH)
+french-ps: $(PS_FRENCH)
+german-ps: $(PS_GERMAN)
+polish-ps: $(PS_POLISH)
+portuguese-ps: $(PS_PORTUGUESE)
+russian-ps: $(PS_RUSSIAN)
+slovakian-ps: $(PS_SLOVAKIAN)
 
-cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi sk-refcard.dvi \
-sk-dired-ref.dvi sk-survival.dvi: %.dvi:       %.tex
-       csplain $<
 
-pl-refcard.dvi: %.dvi: %.tex
-       if ! kpsewhich -format=fmt mex > /dev/null; then \
-         echo "No mex format found."; false; \
-       fi
-       tex $<
-
-ru-refcard.dvi gnus-refcard.dvi: %.dvi: %.tex
-       latex $<
-
-gnus-booklet.dvi: gnus-refcard.tex
-       latex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
-       mv gnus-refcard.dvi $@
+## Default for file that do not use a different paper size.
+.SUFFIXES: .ps .dvi
+.dvi.ps:
+       dvips -t letter -o $@ $<
 
-## Everything not explicitly listed above.
-%.dvi: %.tex
-       tex $<
 
+make_cs=if pdfcsplain --version > /dev/null 2> /dev/null; then \
+         $(ENVADD) pdfcsplain $$input; \
+       else \
+         $(ENVADD) csplain "\pdfoutput=1\input $$input"; \
+       fi
 
-## PostScript files.
+## For pdf output, the page layouts (a4/letter) are written directly
+## in the .tex files.
 
-## Note that some of the tex files (refcard, de-refcard, fr-refcard,
-## pt-br-refcard) have settings for letter or a4 paper. Following are
-## the default paper sizes (letter for English, A4 for translations).
+## For PostScript output, note that some of the tex files (refcard,
+## de-refcard, fr-refcard, pt-br-refcard) have settings for letter or
+## a4 paper.  The Following are the default paper sizes (letter for English,
+## A4 for translations).
 ## FIXME orgcard.ps does not fit on letter (see orgcard.tex).
 
-## A4, landscape.
-de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
-       dvips -t a4 -t landscape $< -o $@
-
-## A4, portrait.
-cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-dired-ref.ps \
-pl-refcard.ps ru-refcard.ps \
-sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
-       dvips -t a4 $< -o $@
-
-## letter, landscape.
-calccard.ps refcard.ps: %.ps: %.dvi
-       dvips -t letter -t landscape $< -o $@
+## A4, landscape: de-refcard, fr-refcard, pt-br-refcard orgcard
+## A4, portrait: cs-*, fr-dired-ref, sk-*, pl-refcard, ru-refcard
+## Letter, landscape: calccard, refcard
+## Letter, portrait (suffix rule): dired-ref, gnus-*, survival, vip*
+
+calccard_deps = calccard.tex emacsver.tex pdflayout.sty
+calccard.pdf: $(calccard_deps)
+       $(ENVADD) pdftex calccard.tex
+calccard.dvi: $(calccard_deps)
+       $(ENVADD) tex calccard.tex
+calccard.ps: calccard.dvi
+       dvips -t letter -t landscape -o $@ calccard.dvi
+
+cs_dired_ref_deps = cs-dired-ref.tex emacsver.tex pdflayout.sty
+cs-dired-ref.pdf: $(cs_dired_ref_deps)
+       input=cs-dired-ref.tex; $(make_cs)
+cs-dired-ref.dvi: $(cs_dired_ref_deps)
+       $(ENVADD) csplain cs-dired-ref.tex
+cs-dired-ref.ps: cs-dired-ref.dvi
+       dvips -t a4 -o $@ cs-dired-ref.dvi
+
+cs_refcard_deps = cs-refcard.tex emacsver.tex pdflayout.sty
+cs-refcard.pdf: $(cs_refcard_deps)
+       input=cs-refcard.tex; $(make_cs)
+cs-refcard.dvi: $(cs_refcard_deps)
+       $(ENVADD) csplain cs-refcard.tex
+cs-refcard.ps: cs-refcard.dvi
+       dvips -t a4 -o $@ cs-refcard.dvi
+
+cs_survival_deps = cs-survival.tex emacsver.tex pdflayout.sty
+cs-survival.pdf: $(cs_survival_deps)
+       input=cs-survival.tex; $(make_cs)
+cs-survival.dvi: $(cs_survival_deps)
+       $(ENVADD) csplain cs-survival.tex
+cs-survival.ps: cs-survival.dvi
+       dvips -t a4 -o $@ cs-survival.dvi
+
+de_refcard_deps = de-refcard.tex emacsver.tex pdflayout.sty
+de-refcard.pdf: $(de_refcard_deps)
+       $(ENVADD) pdftex de-refcard.tex
+de-refcard.dvi: $(de_refcard_deps)
+       $(ENVADD) tex de-refcard.tex
+de-refcard.ps: de-refcard.dvi
+       dvips -t a4 -t landscape -o $@ de-refcard.dvi
+
+dired_ref_deps = dired-ref.tex emacsver.tex pdflayout.sty
+dired-ref.pdf: $(dired_ref_deps)
+       $(ENVADD) pdftex dired-ref.tex
+dired-ref.dvi: $(dired_ref_deps)
+       $(ENVADD) tex dired-ref.tex
+
+fr_dired_ref_deps = fr-dired-ref.tex emacsver.tex pdflayout.sty
+fr-dired-ref.pdf: $(fr_dired_ref_deps)
+       $(ENVADD) pdftex fr-dired-ref.tex
+fr-dired-ref.dvi: $(fr_dired_ref_deps)
+       $(ENVADD) tex fr-dired-ref.tex
+fr-dired-ref.ps: fr-dired-ref.dvi
+       dvips -t a4 -o $@ fr-dired-ref.dvi
+
+fr_refcard_deps = fr-refcard.tex emacsver.tex pdflayout.sty
+fr-refcard.pdf: $(fr_refcard_deps)
+       $(ENVADD) pdftex fr-refcard.tex
+fr-refcard.dvi: $(fr_refcard_deps)
+       $(ENVADD) tex fr-refcard.tex
+fr-refcard.ps: fr-refcard.dvi
+       dvips -t a4 -t landscape -o $@ fr-refcard.dvi
+
+fr_survival_deps = fr-survival.tex emacsver.tex pdflayout.sty
+fr-survival.pdf: $(fr_survival_deps)
+       $(ENVADD) pdftex fr-survival.tex
+fr-survival.dvi: $(fr_survival_deps)
+       $(ENVADD) tex fr-survival.tex
+fr-survival.ps: fr-survival.dvi
+       dvips -t a4 -o $@ fr-survival.dvi
+
+## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD.
+gnus_booklet_deps = gnus-refcard.tex gnus-logo.pdf
+gnus-booklet.pdf: $(gnus_booklet_deps)
+       pdflatex -jobname=gnus-booklet '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+gnus-booklet.dvi: gnus-refcard.tex gnus-logo.eps
+       latex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+       mv gnus-refcard.dvi $@
 
-## letter, portrait.
-dired-ref.ps gnus-booklet.ps gnus-refcard.ps survival.ps vipcard.ps \
-viperCard.ps: %.ps: %.dvi
-       dvips -t letter $< -o $@
+###gnus-logo.pdf: gnus-logo.eps
+###    ps2pdf gnus-logo.eps
+
+## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD.
+gnus_refcard_deps = gnus-refcard.tex gnus-logo.pdf
+gnus-refcard.pdf: $(gnus_refcard_deps)
+       pdflatex gnus-refcard.tex
+gnus-refcard.dvi: $(gnus_refcard_deps)
+       latex gnus-refcard.tex
+
+orgcard_deps = orgcard.tex emacsver.tex pdflayout.sty
+orgcard.pdf: $(orgcard_deps)
+       $(ENVADD) pdftex orgcard.tex
+orgcard.dvi: $(orgcard_deps)
+       $(ENVADD) tex orgcard.tex
+orgcard.ps: orgcard.dvi
+       dvips -t a4 -t landscape -o $@ orgcard.dvi
+
+pl_refcard_deps = pl-refcard.tex emacsver.tex pdflayout.sty
+## Some versions of pdfmex seem to create dvi by default, hence output-format.
+pl-refcard.pdf: $(pl_refcard_deps)
+       if ! kpsewhich -format=fmt mex > /dev/null && \
+         ! pdfmex --version > /dev/null 2> /dev/null; then \
+         echo "No mex format found."; false; \
+       fi
+       $(ENVADD) pdftex -output-format=pdf pl-refcard.tex
+pl-refcard.dvi: $(pl_refcard_deps)
+       if ! kpsewhich -format=fmt mex > /dev/null; then \
+         echo "No mex format found."; false; \
+       fi
+       $(ENVADD) tex pl-refcard.tex
+pl-refcard.ps: pl-refcard.dvi
+       dvips -t a4 -o $@ pl-refcard.dvi
+
+pt_br_refcard_deps = pt-br-refcard.tex emacsver.tex pdflayout.sty
+pt-br-refcard.pdf: $(pt_br_refcard_deps)
+       $(ENVADD) pdftex pt-br-refcard.tex
+pt-br-refcard.dvi: $(pt_br_refcard_deps)
+       $(ENVADD) tex pt-br-refcard.tex
+pt-br-refcard.ps: pt-br-refcard.dvi
+       dvips -t a4 -t landscape -o $@ pt-br-refcard.dvi
+
+refcard_deps = refcard.tex emacsver.tex pdflayout.sty
+refcard.pdf: $(refcard_deps)
+       $(ENVADD) pdftex refcard.tex
+refcard.dvi: $(refcard_deps)
+       $(ENVADD) tex refcard.tex
+refcard.ps: refcard.dvi
+       dvips -t letter -t landscape -o $@ refcard.dvi
+
+## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD.
+ru_refcard_deps = ru-refcard.tex
+ru-refcard.pdf: $(ru_refcard_deps)
+       pdflatex ru-refcard.tex
+ru-refcard.dvi: $(ru_refcard_deps)
+       latex ru-refcard.tex
+ru-refcard.ps: ru-refcard.dvi
+       dvips -t a4 -o $@ ru-refcard.dvi
+
+sk_dired_ref_deps = sk-dired-ref.tex emacsver.tex pdflayout.sty
+sk-dired-ref.pdf: $(sk_dired_ref_deps)
+       input=sk-dired-ref.tex; $(make_cs)
+sk-dired-ref.dvi: $(sk_dired_ref_deps)
+       $(ENVADD) csplain sk-dired-ref.tex
+sk-dired-ref.ps: sk-dired-ref.dvi
+       dvips -t a4 -o $@ sk-dired-ref.dvi
+
+sk_refcard_deps = sk-refcard.tex emacsver.tex pdflayout.sty
+sk-refcard.pdf: $(sk_refcard_deps)
+       input=sk-refcard.tex; $(make_cs)
+sk-refcard.dvi: $(sk_refcard_deps)
+       $(ENVADD) csplain sk-refcard.tex
+sk-refcard.ps: sk-refcard.dvi
+       dvips -t a4 -o $@ sk-refcard.dvi
+
+sk_survival_deps = sk-survival.tex emacsver.tex pdflayout.sty
+sk-survival.pdf: $(sk_survival_deps)
+       input=sk-survival.tex; $(make_cs)
+sk-survival.dvi: $(sk_survival_deps)
+       $(ENVADD) csplain sk-survival.tex
+sk-survival.ps: sk-survival.dvi
+       dvips -t a4 -o $@ sk-survival.dvi
+
+survival_deps = survival.tex emacsver.tex pdflayout.sty
+survival.pdf: $(survival_deps)
+       $(ENVADD) pdftex survival.tex
+survival.dvi: $(survival_deps)
+       $(ENVADD) tex survival.tex
+
+vipcard_deps = vipcard.tex emacsver.tex pdflayout.sty
+vipcard.pdf: $(vipcard_deps)
+       $(ENVADD) pdftex vipcard.tex
+vipcard.dvi: $(vipcard_deps)
+       $(ENVADD) tex vipcard.tex
+
+vipercard_deps = viperCard.tex emacsver.tex pdflayout.sty
+viperCard.pdf: $(vipercard_deps)
+       $(ENVADD) pdftex viperCard.tex
+viperCard.dvi: $(vipercard_deps)
+       $(ENVADD) tex viperCard.tex
 
 
 .PHONY: clean
@@ -141,4 +313,19 @@ viperCard.ps: %.ps: %.dvi
 clean:
        -rm -f *.dvi *.log *.aux
 
+distclean: clean
+
+## This should really by maintainer-clean, but the handling of the
+## refcards is funny.  So abuse extraclean for this.
+extraclean: clean
+       -rm -f $(PDF_TARGETS) $(PS_TARGETS)
+
+## For the Emacs website.
+dist:
+       rm -rf emacs-refcards
+       mkdir emacs-refcards
+       cp Makefile README *.tex gnus-logo.* pdflayout.sty emacs-refcards/
+       tar -cf emacs-refcards.tar emacs-refcards
+       rm -rf emacs-refcards
+
 ### Makefile ends here