1### Makefile for Emacs refcards 2 3## Copyright (C) 1993-1994, 2001-2021 Free Software Foundation, Inc. 4 5## This file is part of GNU Emacs. 6# 7## GNU Emacs is free software: you can redistribute it and/or modify 8## it under the terms of the GNU General Public License as published by 9## the Free Software Foundation, either version 3 of the License, or 10## (at your option) any later version. 11 12## GNU Emacs is distributed in the hope that it will be useful, 13## but WITHOUT ANY WARRANTY; without even the implied warranty of 14## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15## GNU General Public License for more details. 16 17## You should have received a copy of the GNU General Public License 18## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 19 20### Commentary: 21 22## See README for details. 23 24PDF_ENGLISH = \ 25 calccard.pdf \ 26 dired-ref.pdf \ 27 gnus-booklet.pdf \ 28 gnus-refcard.pdf \ 29 orgcard.pdf \ 30 refcard.pdf \ 31 survival.pdf \ 32 vipcard.pdf \ 33 viperCard.pdf 34 35PDF_CZECH = \ 36 cs-dired-ref.pdf \ 37 cs-refcard.pdf \ 38 cs-survival.pdf 39 40PDF_FRENCH = \ 41 fr-dired-ref.pdf \ 42 fr-refcard.pdf \ 43 fr-survival.pdf 44 45PDF_GERMAN = de-refcard.pdf 46 47PDF_POLISH = pl-refcard.pdf 48 49PDF_PORTUGUESE = pt-br-refcard.pdf 50 51PDF_RUSSIAN = ru-refcard.pdf 52 53PDF_SLOVAKIAN = \ 54 sk-dired-ref.pdf \ 55 sk-refcard.pdf \ 56 sk-survival.pdf 57 58PDF_TARGETS = $(PDF_ENGLISH) $(PDF_CZECH) $(PDF_FRENCH) $(PDF_GERMAN) \ 59 $(PDF_POLISH) $(PDF_PORTUGUESE) $(PDF_RUSSIAN) $(PDF_SLOVAKIAN) 60 61PS_ENGLISH = $(PDF_ENGLISH:.pdf=.ps) 62PS_CZECH = $(PDF_CZECH:.pdf=.ps) 63PS_FRENCH = $(PDF_FRENCH:.pdf=.ps) 64PS_GERMAN = $(PDF_GERMAN:.pdf=.ps) 65PS_POLISH = $(PDF_POLISH:.pdf=.ps) 66PS_PORTUGUESE = $(PDF_PORTUGUESE:.pdf=.ps) 67PS_RUSSIAN = $(PDF_RUSSIAN:.pdf=.ps) 68PS_SLOVAKIAN = $(PDF_SLOVAKIAN:.pdf=.ps) 69 70PS_TARGETS = $(PDF_TARGETS:.pdf=.ps) 71 72 73## For emacsver.tex. 74ENVADD = TEXINPUTS=".:$(TEXINPUTS)" 75 76 77.PHONY: all pdf ps 78 79all: pdf 80pdf: $(PDF_TARGETS) 81ps: $(PS_TARGETS) 82 83 84.PHONY: english czech french german polish portuguese russian slovakian 85english: $(PDF_ENGLISH) 86czech: $(PDF_CZECH) 87french: $(PDF_FRENCH) 88german: $(PDF_GERMAN) 89polish: $(PDF_POLISH) 90portuguese: $(PDF_PORTUGUESE) 91russian: $(PDF_RUSSIAN) 92slovakian: $(PDF_SLOVAKIAN) 93 94.PHONY: english-ps czech-ps french-ps german-ps polish-ps portuguese-ps russian-ps slovakian-ps 95english-ps: $(PS_ENGLISH) 96czech-ps: $(PS_CZECH) 97french-ps: $(PS_FRENCH) 98german-ps: $(PS_GERMAN) 99polish-ps: $(PS_POLISH) 100portuguese-ps: $(PS_PORTUGUESE) 101russian-ps: $(PS_RUSSIAN) 102slovakian-ps: $(PS_SLOVAKIAN) 103 104 105## Default for file that do not use a different paper size. 106.SUFFIXES: .ps .dvi 107.dvi.ps: 108 dvips -t letter -o $@ $< 109 110 111make_cs=if pdfcsplain --version > /dev/null 2> /dev/null; then \ 112 $(ENVADD) pdfcsplain $$input; \ 113 else \ 114 $(ENVADD) csplain "\pdfoutput=1\input $$input"; \ 115 fi 116 117## For pdf output, the page layouts (a4/letter) are written directly 118## in the .tex files. 119 120## For PostScript output, note that some of the tex files (refcard, 121## de-refcard, fr-refcard, pt-br-refcard) have settings for letter or 122## a4 paper. The Following are the default paper sizes (letter for English, 123## A4 for translations). 124## FIXME orgcard.ps does not fit on letter (see orgcard.tex). 125 126## A4, landscape: de-refcard, fr-refcard, pt-br-refcard orgcard 127## A4, portrait: cs-*, fr-dired-ref, sk-*, pl-refcard, ru-refcard 128## Letter, landscape: calccard, refcard 129## Letter, portrait (suffix rule): dired-ref, gnus-*, survival, vip* 130 131calccard_deps = calccard.tex emacsver.tex pdflayout.sty 132calccard.pdf: $(calccard_deps) 133 $(ENVADD) pdftex calccard.tex 134calccard.dvi: $(calccard_deps) 135 $(ENVADD) tex calccard.tex 136calccard.ps: calccard.dvi 137 dvips -t letter -t landscape -o $@ calccard.dvi 138 139cs_dired_ref_deps = cs-dired-ref.tex emacsver.tex pdflayout.sty 140cs-dired-ref.pdf: $(cs_dired_ref_deps) 141 input=cs-dired-ref.tex; $(make_cs) 142cs-dired-ref.dvi: $(cs_dired_ref_deps) 143 $(ENVADD) csplain cs-dired-ref.tex 144cs-dired-ref.ps: cs-dired-ref.dvi 145 dvips -t a4 -o $@ cs-dired-ref.dvi 146 147cs_refcard_deps = cs-refcard.tex emacsver.tex pdflayout.sty 148cs-refcard.pdf: $(cs_refcard_deps) 149 input=cs-refcard.tex; $(make_cs) 150cs-refcard.dvi: $(cs_refcard_deps) 151 $(ENVADD) csplain cs-refcard.tex 152cs-refcard.ps: cs-refcard.dvi 153 dvips -t a4 -o $@ cs-refcard.dvi 154 155cs_survival_deps = cs-survival.tex emacsver.tex pdflayout.sty 156cs-survival.pdf: $(cs_survival_deps) 157 input=cs-survival.tex; $(make_cs) 158cs-survival.dvi: $(cs_survival_deps) 159 $(ENVADD) csplain cs-survival.tex 160cs-survival.ps: cs-survival.dvi 161 dvips -t a4 -o $@ cs-survival.dvi 162 163de_refcard_deps = de-refcard.tex emacsver.tex pdflayout.sty 164de-refcard.pdf: $(de_refcard_deps) 165 $(ENVADD) pdftex de-refcard.tex 166de-refcard.dvi: $(de_refcard_deps) 167 $(ENVADD) tex de-refcard.tex 168de-refcard.ps: de-refcard.dvi 169 dvips -t a4 -t landscape -o $@ de-refcard.dvi 170 171dired_ref_deps = dired-ref.tex emacsver.tex pdflayout.sty 172dired-ref.pdf: $(dired_ref_deps) 173 $(ENVADD) pdftex dired-ref.tex 174dired-ref.dvi: $(dired_ref_deps) 175 $(ENVADD) tex dired-ref.tex 176 177fr_dired_ref_deps = fr-dired-ref.tex emacsver.tex pdflayout.sty 178fr-dired-ref.pdf: $(fr_dired_ref_deps) 179 $(ENVADD) pdftex fr-dired-ref.tex 180fr-dired-ref.dvi: $(fr_dired_ref_deps) 181 $(ENVADD) tex fr-dired-ref.tex 182fr-dired-ref.ps: fr-dired-ref.dvi 183 dvips -t a4 -o $@ fr-dired-ref.dvi 184 185fr_refcard_deps = fr-refcard.tex emacsver.tex pdflayout.sty 186fr-refcard.pdf: $(fr_refcard_deps) 187 $(ENVADD) pdftex fr-refcard.tex 188fr-refcard.dvi: $(fr_refcard_deps) 189 $(ENVADD) tex fr-refcard.tex 190fr-refcard.ps: fr-refcard.dvi 191 dvips -t a4 -t landscape -o $@ fr-refcard.dvi 192 193fr_survival_deps = fr-survival.tex emacsver.tex pdflayout.sty 194fr-survival.pdf: $(fr_survival_deps) 195 $(ENVADD) pdftex fr-survival.tex 196fr-survival.dvi: $(fr_survival_deps) 197 $(ENVADD) tex fr-survival.tex 198fr-survival.ps: fr-survival.dvi 199 dvips -t a4 -o $@ fr-survival.dvi 200 201## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD. 202gnus_booklet_deps = gnus-refcard.tex gnus-logo.pdf 203gnus-booklet.pdf: $(gnus_booklet_deps) 204 pdflatex -jobname=gnus-booklet '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}' 205gnus-booklet.dvi: gnus-refcard.tex gnus-logo.eps 206 latex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}' 207 mv gnus-refcard.dvi $@ 208 209###gnus-logo.pdf: gnus-logo.eps 210### ps2pdf gnus-logo.eps 211 212## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD. 213gnus_refcard_deps = gnus-refcard.tex gnus-logo.pdf 214gnus-refcard.pdf: $(gnus_refcard_deps) 215 pdflatex gnus-refcard.tex 216gnus-refcard.dvi: $(gnus_refcard_deps) 217 latex gnus-refcard.tex 218 219orgcard_deps = orgcard.tex emacsver.tex pdflayout.sty 220orgcard.pdf: $(orgcard_deps) 221 $(ENVADD) pdftex orgcard.tex 222orgcard.dvi: $(orgcard_deps) 223 $(ENVADD) tex orgcard.tex 224orgcard.ps: orgcard.dvi 225 dvips -t a4 -t landscape -o $@ orgcard.dvi 226 227pl_refcard_deps = pl-refcard.tex emacsver.tex pdflayout.sty 228## Some versions of pdfmex seem to create dvi by default, hence output-format. 229pl-refcard.pdf: $(pl_refcard_deps) 230 if ! kpsewhich -format=fmt mex > /dev/null && \ 231 ! pdfmex --version > /dev/null 2> /dev/null; then \ 232 echo "No mex format found."; false; \ 233 fi 234 $(ENVADD) pdftex -output-format=pdf pl-refcard.tex 235pl-refcard.dvi: $(pl_refcard_deps) 236 if ! kpsewhich -format=fmt mex > /dev/null; then \ 237 echo "No mex format found."; false; \ 238 fi 239 $(ENVADD) tex pl-refcard.tex 240pl-refcard.ps: pl-refcard.dvi 241 dvips -t a4 -o $@ pl-refcard.dvi 242 243pt_br_refcard_deps = pt-br-refcard.tex emacsver.tex pdflayout.sty 244pt-br-refcard.pdf: $(pt_br_refcard_deps) 245 $(ENVADD) pdftex pt-br-refcard.tex 246pt-br-refcard.dvi: $(pt_br_refcard_deps) 247 $(ENVADD) tex pt-br-refcard.tex 248pt-br-refcard.ps: pt-br-refcard.dvi 249 dvips -t a4 -t landscape -o $@ pt-br-refcard.dvi 250 251refcard_deps = refcard.tex emacsver.tex pdflayout.sty 252refcard.pdf: $(refcard_deps) 253 $(ENVADD) pdftex refcard.tex 254refcard.dvi: $(refcard_deps) 255 $(ENVADD) tex refcard.tex 256refcard.ps: refcard.dvi 257 dvips -t letter -t landscape -o $@ refcard.dvi 258 259## No dependency on emacsver.tex, pdflayout.sty; no need for ENVADD. 260ru_refcard_deps = ru-refcard.tex 261ru-refcard.pdf: $(ru_refcard_deps) 262 pdflatex ru-refcard.tex 263ru-refcard.dvi: $(ru_refcard_deps) 264 latex ru-refcard.tex 265ru-refcard.ps: ru-refcard.dvi 266 dvips -t a4 -o $@ ru-refcard.dvi 267 268sk_dired_ref_deps = sk-dired-ref.tex emacsver.tex pdflayout.sty 269sk-dired-ref.pdf: $(sk_dired_ref_deps) 270 input=sk-dired-ref.tex; $(make_cs) 271sk-dired-ref.dvi: $(sk_dired_ref_deps) 272 $(ENVADD) csplain sk-dired-ref.tex 273sk-dired-ref.ps: sk-dired-ref.dvi 274 dvips -t a4 -o $@ sk-dired-ref.dvi 275 276sk_refcard_deps = sk-refcard.tex emacsver.tex pdflayout.sty 277sk-refcard.pdf: $(sk_refcard_deps) 278 input=sk-refcard.tex; $(make_cs) 279sk-refcard.dvi: $(sk_refcard_deps) 280 $(ENVADD) csplain sk-refcard.tex 281sk-refcard.ps: sk-refcard.dvi 282 dvips -t a4 -o $@ sk-refcard.dvi 283 284sk_survival_deps = sk-survival.tex emacsver.tex pdflayout.sty 285sk-survival.pdf: $(sk_survival_deps) 286 input=sk-survival.tex; $(make_cs) 287sk-survival.dvi: $(sk_survival_deps) 288 $(ENVADD) csplain sk-survival.tex 289sk-survival.ps: sk-survival.dvi 290 dvips -t a4 -o $@ sk-survival.dvi 291 292survival_deps = survival.tex emacsver.tex pdflayout.sty 293survival.pdf: $(survival_deps) 294 $(ENVADD) pdftex survival.tex 295survival.dvi: $(survival_deps) 296 $(ENVADD) tex survival.tex 297 298vipcard_deps = vipcard.tex emacsver.tex pdflayout.sty 299vipcard.pdf: $(vipcard_deps) 300 $(ENVADD) pdftex vipcard.tex 301vipcard.dvi: $(vipcard_deps) 302 $(ENVADD) tex vipcard.tex 303 304vipercard_deps = viperCard.tex emacsver.tex pdflayout.sty 305viperCard.pdf: $(vipercard_deps) 306 $(ENVADD) pdftex viperCard.tex 307viperCard.dvi: $(vipercard_deps) 308 $(ENVADD) tex viperCard.tex 309 310 311.PHONY: clean 312 313clean: 314 -rm -f ./*.dvi ./*.log ./*.aux 315 316distclean: clean 317 318## This should really by maintainer-clean, but the handling of the 319## refcards is funny. So abuse extraclean for this. 320extraclean: clean 321 -rm -f $(PDF_TARGETS) $(PS_TARGETS) 322 323## For the Emacs website. 324dist: 325 rm -rf emacs-refcards 326 mkdir emacs-refcards 327 cp Makefile README *.tex gnus-logo.* pdflayout.sty emacs-refcards/ 328 tar -cf emacs-refcards.tar emacs-refcards 329 rm -rf emacs-refcards 330 331### Makefile ends here 332