emacs/etc/refcards/Makefile

326 lines
9.6 KiB
Makefile

### Makefile for Emacs refcards
## Copyright (C) 1993-1994, 2001-2024 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
#
## GNU Emacs is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
## GNU Emacs is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
### Commentary:
## See README for details.
PDF_ENGLISH = \
calccard.pdf \
dired-ref.pdf \
gnus-booklet.pdf \
gnus-refcard.pdf \
orgcard.pdf \
refcard.pdf \
survival.pdf \
viperCard.pdf
PDF_CZECH = \
cs-dired-ref.pdf \
cs-refcard.pdf \
cs-survival.pdf
PDF_FRENCH = \
fr-dired-ref.pdf \
fr-refcard.pdf \
fr-survival.pdf
PDF_GERMAN = de-refcard.pdf
PDF_POLISH = pl-refcard.pdf
PDF_PORTUGUESE = pt-br-refcard.pdf
PDF_RUSSIAN = ru-refcard.pdf
PDF_SLOVAKIAN = \
sk-dired-ref.pdf \
sk-refcard.pdf \
sk-survival.pdf
PDF_TARGETS = $(PDF_ENGLISH) $(PDF_CZECH) $(PDF_FRENCH) $(PDF_GERMAN) \
$(PDF_POLISH) $(PDF_PORTUGUESE) $(PDF_RUSSIAN) $(PDF_SLOVAKIAN)
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)
PS_TARGETS = $(PDF_TARGETS:.pdf=.ps)
## For emacsver.tex.
ENVADD = TEXINPUTS=".:$(TEXINPUTS)"
.PHONY: all pdf ps
all: pdf
pdf: $(PDF_TARGETS)
ps: $(PS_TARGETS)
.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)
.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)
## Default for file that do not use a different paper size.
.SUFFIXES: .ps .dvi
.dvi.ps:
dvips -t letter -o $@ $<
make_cs=if pdfcsplain --version > /dev/null 2> /dev/null; then \
$(ENVADD) pdfcsplain $$input; \
else \
$(ENVADD) csplain "\pdfoutput=1\input $$input"; \
fi
## For pdf output, the page layouts (a4/letter) are written directly
## in the .tex files.
## 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, 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 $@
###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 \
$(ENVADD) tex pl-refcard.tex; \
else \
$(ENVADD) mex pl-refcard.tex; \
fi
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
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
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