Select Git revision
-
Martin Mareš authoredMartin Mareš authored
Makerules 4.25 KiB
ifdef TOP
export TEXINPUTS=.:$(TOP)/tex//:
# Full name: XX-YYY
FULL:=$(shell basename `pwd`)
# Main file name: only the YYY part
MAIN:=$(shell echo $(FULL) | cut -d- -f2)
all: $(MAIN).pdf sync-view
else
export TOP=.
export TEXINPUTS=.//:
FULL_BOOK=1
endif
export TEXFORMATS=$(TOP)/tex:
export ASYMPTOTE_HOME=$(TOP)/pics
TOOLS=$(TOP)/tools
SHELL=/bin/bash
LUATEX?=luatex
TEXFMT=luaplain
TEXFMTPATH=$(TOP)/tex/$(TEXFMT).fmt
export LUAINPUTS=.:$(TOP)/tex//:
export OSFONTDIR=$(TOP)/tex/fonts
export BIBINPUTS=$(TOP)/bib
export BSTINPUTS=$(TOP)/bib
MACROS:=$(wildcard $(TOP)/tex/*.tex) $(wildcard $(TOP)/tex/*.lua)
ifdef FULL_BOOK
# When typesetting the whole book, call TeX three times to calculate all references properly
%.pdf: %.tex $(MACROS) $(TEXFMTPATH) $(TOP)/bib/bibliography.bib pics
rm -f *.aux && >toc.aux
$(LUATEX) -file-line-error -fmt $(TEXFMT) $<
# $(TOOLS)/gen-index <index-raw.aux >index-sorted.aux
mv toc-new.aux toc.aux
# [ ! -f $*.aux ] || bibtex $*
# $(LUATEX) -file-line-error -fmt $(TEXFMT) $<
# $(TOOLS)/gen-index <index-raw.aux >index-sorted.aux
# mv toc-new.aux toc.aux
$(LUATEX) -file-line-error -fmt $(TEXFMT) $<
EBOOK_MAIN=ebook
else
# Simplified typesetting of a single chapter: call TeX just twice
# gen-index is still called to check syntax, but its output is not used
%.pdf: %.tex $(MACROS) $(TEXFMTPATH) pics
rm -f *.aux && >toc.aux
$(LUATEX) -file-line-error -fmt $(TEXFMT) $<
$(LUATEX) -file-line-error -fmt $(TEXFMT) $<
# $(TOOLS)/gen-index <index-raw.aux >index-sorted.aux
EBOOK_MAIN=$(MAIN)
endif
## EB=$(TOP)/80-ebook
## EBCONFIG=$(EB)/epub.ini
## EBTEXOPTS=\let\modeebook=\relax\def\ebookconfig{$(EBCONFIG)}
##
## ebook-test: $(EBOOK_MAIN).tex $(MACROS) $(TEXFMTPATH) pics
## $(TOOLS)/eb-init $(EBCONFIG)
## cp $(EB)/default.css epub/style/
## rm -f *.aux && >toc.aux
## $(LUATEX) -file-line-error -fmt $(TEXFMT) '$(EBTEXOPTS)\input{$<}'
##
## ebook: $(EBOOK_MAIN).tex $(MACROS) $(TEXFMTPATH) pics
## $(TOOLS)/eb-init $(EBCONFIG)
## cp $(EB)/default.css epub/style/
## $(TOOLS)/eb-fonts $(EBCONFIG) lmroman10-{regular,bold,italic}.otf
## $(TOOLS)/eb-fonts $(EBCONFIG) lmmono10-regular.otf lmromancaps10-regular.otf lmromandemi10-regular.otf
## $(TOOLS)/eb-fonts $(EBCONFIG) latinmodernmath-regular-hacked.otf
## $(TOOLS)/eb-fonts $(EBCONFIG) LiberationSerif-{Regular,Bold,Italic}.ttf
## $(TOOLS)/eb-fonts $(EBCONFIG) Montserrat-{Light,SemiBold}.otf
## $(TOOLS)/eb-fonthack $(EBCONFIG)
## $(TOOLS)/eb-pdfimages $(EBCONFIG) pics/obalka-predni.epdf pics/cznic-logo.epdf
## rm -f *.aux && >toc.aux
## $(LUATEX) -file-line-error -fmt $(TEXFMT) '$(EBTEXOPTS)\input{$<}'
## [ ! -f $(EBOOK_MAIN).aux ] || bibtex $(EBOOK_MAIN)
## mv toc-new.aux toc.aux
## $(TOOLS)/gen-index <index-raw.aux >index-sorted.aux
## $(LUATEX) -file-line-error -fmt $(TEXFMT) '$(EBTEXOPTS)\input{$<}'
## $(TOOLS)/eb-images $(EBCONFIG) $(EBOOK_MAIN).pdf
## xmllint --noout epub/html/*.html
## $(TOOLS)/eb-epub $(EBCONFIG)
##
## ebook-for-mobi: ebook
## ebook-for-mobi: EBCONFIG=$(EB)/mobi.ini
## ebook-for-mobi: EBTEXOPTS+=\let\modemobi=\relax
##
## ebook-kindle: ebook-for-mobi
## kindlegen pruvodce.epub -o pruvodce.mobi -verbose -gif
##
## pics/%.png: pics/%.epdf
## pdftocairo -png -r 200 -singlefile $< $*
pics: $(addsuffix .pdf, $(PICS))
%.pdf: %.asy $(TOP)/pics/ads.asy $(TEXFMTPATH)
PATH=$(TOP)/pics:$(PATH) asy -f pdf -tex pdftex $<
%-booklet.pdf: %-uncompressed.pdf
pspdftool 'book nup(2,paper=a4)' $< $@
%-2in1.pdf: %-uncompressed.pdf
pspdftool 'nup(2,paper=a4)' $< $@
%-uncompressed.pdf: %.pdf
qpdf --object-streams=disable --stream-data=uncompress $< $@
$(TEXFMTPATH):
@echo 'Generating $@'
cd $(dir $@) && $(LUATEX) -jobname $(TEXFMT) -ini $(TEXFMT).ini
clean::
rm -f *~ *.log *.dvi *.ps *.pdf *.aux *.bbl *.blg *.epub
rm -f view.pid
rm -f $(TEXFMTPATH) $(TOP)/tex/$(TEXFMT).log
rm -rf epub
view: $(MAIN).pdf
( /usr/lib/mupdf/mupdf-x11 $(MAIN).pdf & echo $$! >view.pid ; wait $$! ; rm -f view.pid ) &
sync-view: $(MAIN).pdf
@if [ -f view.pid ] ; then echo "Syncing viewer" ; kill -HUP `cat view.pid` ; fi
ifndef CUSTOM_UPLOAD
upload::
make $(MAIN).pdf
rsync $(MAIN).pdf jabberwock:www/static/vyuka/automaty/$(FULL).pdf
ssh jabberwock 'cd web && make'
endif
.PHONY: all upload clean view sync-view pics ebook ebook-test ebook-kindle
.SECONDARY: