SHELL = /bin/bash GITREFSTAGS := $(shell ls -d .git/refs/tags 2>/dev/null) LATEXSOURCES = \ perfbook-lt.tex \ legal.tex \ summary.tex \ glossary.tex \ qqz.sty origpub.sty \ glsdict.tex indexsee.tex \ pfbook.cls \ ushyphex.tex pfhyphex.tex \ ack.tex \ */*.tex \ */*/*.tex LST_SOURCES := $(wildcard CodeSamples/formal/promela/*.lst) \ $(wildcard appendix/styleguide/*.c) SUB_QQZ := qqzhowto.tex qqzintro.tex qqzcpu.tex qqztoolsoftrade.tex \ qqzcount.tex qqzSMPdesign.tex qqzlocking.tex qqzowned.tex \ qqzdefer.tex qqzdatastruct.tex qqzdebugging.tex qqzformal.tex \ qqztogether.tex qqzadvsync.tex qqzmemorder.tex qqzeasy.tex \ qqzfuture.tex qqzquestions.tex qqztoyrcu.tex qqzwhymb.tex LATEXGENERATED = autodate.tex qqz.tex contrib.tex origpub.tex sub_qqz # Note: Empty target "sub_qqz" is used on behalf of $(SUB_QQZ) to prevent # parallel runs of divideqqz.pl. TWOCOLTARGETS := mstx msr msn msnt sf nq sfnq ix df EBTARGETS := $(foreach v,nq sf sfnq ix df,eb$(v)) ABBREVTARGETS := lt hb a4 1c tcb msns mss eb $(TWOCOLTARGETS) $(foreach v,$(TWOCOLTARGETS),1c$(v)) $(EBTARGETS) PDFTARGETS := perfbook.pdf $(foreach v,$(ABBREVTARGETS),perfbook-$(v).pdf) GENERATED_MAIN := $(filter-out perfbook-lt.tex,$(foreach v,$(ABBREVTARGETS),perfbook-$(v).tex)) perfbook.tex EPSSOURCES_FROM_TEX := \ SMPdesign/DiningPhilosopher5.eps \ SMPdesign/DiningPhilosopher5TB.eps \ SMPdesign/DiningPhilosopher4part-b.eps \ SMPdesign/DiningPhilosopher5PEM.eps PDFTARGETS_OF_TEX := $(EPSSOURCES_FROM_TEX:%.eps=%.pdf) DOTSOURCES := $(wildcard */*.dot) EPSSOURCES_FROM_DOT := $(DOTSOURCES:%.dot=%.eps) FIGSOURCES := $(wildcard */*.fig) $(wildcard */*/*.fig) EPSSOURCES_FROM_FIG := $(FIGSOURCES:%.fig=%.eps) SVGSOURCES := $(wildcard */*.svg) FAKE_EPS_FROM_SVG := $(SVGSOURCES:%.svg=%.eps) PDFTARGETS_OF_SVG := $(SVGSOURCES:%.svg=%.pdf) OBSOLETE_FILES = extraction $(FAKE_EPS_FROM_SVG) CodeSamples/snippets.mk EPSSOURCES_DUP := \ $(wildcard */*.eps) \ $(wildcard */*/*.eps) \ $(wildcard */*/*/*.eps) \ $(wildcard */*/*/*/*.eps) \ $(wildcard */*/*/*/*/*.eps) \ $(EPSSOURCES_FROM_TEX) \ $(EPSSOURCES_FROM_DOT) \ $(EPSSOURCES_FROM_FIG) EPSSOURCES_OLD := \ $(wildcard CodeSamples/*/*/OLD-*/*.eps) \ $(wildcard CodeSamples/*/*/OLD-*/*/*.eps) \ $(wildcard CodeSamples/*/*/*/OLD-*/*.eps) \ $(wildcard CodeSamples/*/*/*/OLD-*/*/*.eps) EPSSOURCES := $(sort $(filter-out $(EPSSOURCES_OLD),$(filter-out $(OBSOLETE_FILES),$(EPSSOURCES_DUP)))) PDFTARGETS_OF_EPS := $(EPSSOURCES:%.eps=%.pdf) EPSORIGIN := $(filter-out $(EPSSOURCES_FROM_TEX) $(EPSSOURCES_FROM_DOT) $(EPSSOURCES_FROM_FIG),$(EPSSOURCES)) GNUPLOT_ORIG := $(shell grep -l gnuplot $(EPSORIGIN)) GNUPLOT_ORIG_NOFIXFONTS := $(shell grep -l '/FontMatrix' $(GNUPLOT_ORIG)) GNUPLOT_ORIG_NEEDFIXFONTS := $(filter-out $(GNUPLOT_ORIG_NOFIXFONTS),$(GNUPLOT_ORIG)) EPSORIG_NOFIXFONTS := $(filter-out $(GNUPLOT_ORIG_NEEDFIXFONTS),$(EPSORIGIN)) PDFTARGETS_OF_EPSORIG := $(EPSORIGIN:%.eps=%.pdf) PDFTARGETS_OF_GNUPLOT_NEEDFIXFONTS := $(GNUPLOT_ORIG_NEEDFIXFONTS:%.eps=%.pdf) PDFTARGETS_OF_EPSORIG_NOFIXFONTS := $(EPSORIG_NOFIXFONTS:%.eps=%.pdf) PDFTARGETS_OF_EPSOTHER := $(filter-out $(PDFTARGETS_OF_EPSORIG) $(PDFTARGETS_OF_TEX),$(PDFTARGETS_OF_EPS)) BIBSOURCES := bib/*.bib alphapf.bst # required commands DOT := $(shell which dot 2>/dev/null) FIG2EPS := $(shell which fig2eps 2>/dev/null) INKSCAPE := $(shell which inkscape 2>/dev/null) ifdef INKSCAPE INKSCAPE_ONE := $(shell inkscape --version 2>/dev/null | grep -c "Inkscape 1") endif LATEXPAND := $(shell which latexpand 2>/dev/null) QPDF := $(shell which qpdf 2>/dev/null) # required fonts STEELFONT := $(shell fc-list | grep -c -i steel) URWPS := $(shell fc-list | grep "Nimbus Mono PS" | wc -l) # required font packages FONTPACKAGES := $(shell kpsewhich newtxtext.sty nimbusmono.sty newtxtt.sty newtxsf.sty inconsolata.sty couriers.sty) NEWTXTEXT := $(findstring newtxtext,$(FONTPACKAGES)) NIMBUSMONO := $(findstring nimbusmono,$(FONTPACKAGES)) NEWTXTT := $(findstring newtxtt,$(FONTPACKAGES)) COURIERS := $(findstring couriers,$(FONTPACKAGES)) NEWTXSF := $(findstring newtxsf,$(FONTPACKAGES)) INCONSOLATA := $(findstring inconsolata,$(FONTPACKAGES)) FREESANS := $(shell fc-list | grep FreeSans | wc -l) DEJAVUMONO := $(shell fc-list | grep "DejaVu Sans Mono" | wc -l) # for line break in error text define n endef ifeq ($(URWPS),0) FIXSVGFONTS = utilities/fixsvgfonts.sh FIXANEPSFONTS = utilities/fixanepsfonts.sh FIXFONTS = utilities/fixfonts.sh else FIXSVGFONTS = utilities/fixsvgfonts-urwps.sh FIXANEPSFONTS = utilities/fixanepsfonts-urwps.sh FIXFONTS = utilities/fixfonts-urwps.sh endif ifeq ($(FREESANS),0) RECOMMEND_FREEFONT := 1 else RECOMMEND_FREEFONT := 0 endif ifeq ($(DEJAVUMONO),0) RECOMMEND_DEJAVU := 1 else RECOMMEND_DEJAVU := 0 endif STEELFONTID := $(shell fc-list | grep -i steel | grep -c Steel) LINELABEL_ENV_BEGIN := $(shell grep -l -F '\begin{linelabel}' $(LATEXSOURCES)) LINELABEL_ENV_END := $(shell grep -l -F '\end{linelabel}' $(LATEXSOURCES)) LINEREF_ENV_BEGIN := $(shell grep -l -F '\begin{lineref}' $(LATEXSOURCES)) LINEREF_ENV_END := $(shell grep -l -F '\end{lineref}' $(LATEXSOURCES)) LINELABEL_ENV := $(sort $(LINELABEL_ENV_BEGIN) $(LINELABEL_ENV_END)) LINEREF_ENV := $(sort $(LINEREF_ENV_BEGIN) $(LINEREF_ENV_END)) CREFPTN := '\\[Cc](ln)?ref{[^}]+}\s*{[^}]+}' CREFPAIR := $(shell grep -l -zo -E $(CREFPTN) $(LATEXSOURCES)) SOURCES_OF_SNIPPET_ALL := $(shell grep -r -l -F '\begin{snippet}' CodeSamples) SOURCES_OF_LITMUS := $(shell grep -r -l -F '\begin[snippet]' CodeSamples) SOURCES_OF_LTMS := $(patsubst %.litmus,%.ltms,$(SOURCES_OF_LITMUS)) SOURCES_OF_SNIPPET := $(filter-out $(SOURCES_OF_LTMS),$(SOURCES_OF_SNIPPET_ALL)) $(SOURCES_OF_LITMUS) GEN_SNIPPET_D = utilities/gen_snippet_d.pl utilities/gen_snippet_d.sh default = $(PERFBOOK_DEFAULT) ifeq ($(default),) targ = perfbook.pdf else targ = $(default) endif chkpagegroup = $(PERFBOOK_CHKPAGEGROUP) ifeq ($(PERFBOOK_PAPER),A4) PERFBOOK_BASE = perfbook-a4.tex else ifeq ($(PERFBOOK_PAPER),HB) PERFBOOK_BASE = perfbook-hb.tex else PERFBOOK_BASE = perfbook-lt.tex endif endif BASE_DEPENDS := perfbook.tex $(foreach v,tcb 1c msns mss mstx msr msn msnt sf nq ix df,perfbook-$(v).tex) .PHONY: all touchsvg clean distclean neatfreak 2c ls-unused $(ABBREVTARGETS) .PHONY: mslm perfbook-mslm.pdf mslmmsg .PHONY: qq perfbook-qq.pdf qqmsg .PHONY: help help-official help-full help-semiofficial help-paper help-draft .PHONY: help-experimental help-prefixed .PHONY: paper-clean periodcheck punctcheck punctcheck-auto .PHONY: cleanfigs cleanfigs-eps cleanfigs-svg figs all: punctcheck-auto ifeq ($(MAKECMDGOALS),clean) else ifeq ($(MAKECMDGOALS),distclean) else ifeq ($(MAKECMDGOALS),neatfreak) else -include CodeSamples/snippets.d endif 2c: perfbook.pdf mslm: perfbook-mslm.pdf perfbook-mslm.pdf: mslmmsg qq: perfbook-qq.pdf perfbook-qq.pdf: qqmsg mslmmsg: perfbook.pdf @echo "perfbook-mslm.pdf is promoted to default target," @echo "built as perfbook.pdf." qqmsg: perfbook.pdf @echo "perfbook-qq.pdf is promoted to default target," @echo "built as perfbook.pdf." $(PDFTARGETS): %.pdf: %.tex %.bbl sh utilities/runlatex.2022.01.25.sh $(basename $@) $(PDFTARGETS:.pdf=.bbl): %.bbl: %.aux $(BIBSOURCES) bibtex $(basename $@) $(PDFTARGETS:.pdf=.aux): $(LATEXGENERATED) $(LATEXSOURCES) $(LST_SOURCES) ifeq ($(NEWTXTEXT),) $(error Font package 'newtx' not found. See #9 in FAQ-BUILD.txt) endif sh utilities/runfirstlatex.2022.01.25.sh $(basename $@) autodate.tex: perfbook-lt.tex $(LATEXSOURCES) $(BIBSOURCES) \ $(PDFTARGETS_OF_EPS) $(PDFTARGETS_OF_SVG) $(FCVSNIPPETS) $(FCVSNIPPETS_VIA_LTMS) \ $(GITREFSTAGS) utilities/autodate.sh sh utilities/autodate.sh perfbook_flat.tex: autodate.tex ifndef LATEXPAND $(error --> $@: latexpand not found. Please install it) endif @if [ ! -z "$(LINELABEL_ENV)" -a "$(LINELABEL_ENV)" != " " ]; then \ echo "'linelabel' used as environment in $(LINELABEL_ENV)." ; \ echo "------" ; \ grep -n -B 2 -A 2 -F 'linelabel' $(LINELABEL_ENV) ; \ echo "------" ; \ echo "Substitute 'fcvlabel' for 'linelabel' in $(LINELABEL_ENV)." ; \ exit 1 ; \ fi @if [ ! -z "$(LINEREF_ENV)" -a "$(LINEREF_ENV)" != " " ]; then \ echo "'lineref' used as environment in $(LINEREF_ENV)." ; \ echo "------" ; \ grep -n -B 2 -A 2 -F 'lineref' $(LINEREF_ENV) ; \ echo "------" ; \ echo "Substitute 'fcvref' for 'lineref' in $(LINEREF_ENV)." ; \ exit 1 ; \ fi @if [ ! -z "$(CREFPAIR)" -a "$(CREFPAIR)" != " " ]; then \ echo "------" ; \ if grep -q -E $(CREFPTN) $(CREFPAIR) ; then \ grep -n -B 2 -A 2 -E $(CREFPTN) $(CREFPAIR) ; \ else \ grep -zo -B 2 -A 2 -E $(CREFPTN) $(CREFPAIR) ; \ echo ; \ fi ; \ echo "------" ; \ echo "Need to use \[Cc]refrange or \[Cc]lnrefrangein $(CREFPAIR)." ; \ exit 1 ; \ fi echo > qqz.tex echo > contrib.tex echo > origpub.tex latexpand --empty-comments perfbook-lt.tex 1> $@ 2> /dev/null qqz.tex: perfbook_flat.tex sh utilities/extractqqz.sh < $< | perl utilities/qqzreorder.pl > $@ contrib.tex: perfbook_flat.tex qqz.tex cat $^ | sh utilities/extractcontrib.sh > $@ origpub.tex: perfbook_flat.tex sh utilities/extractorigpub.sh < $< > $@ # Empty target to generate $(SUB_QQZ) files sub_qqz: qqz.tex utilities/divideqqz.pl @touch sub_qqz perfbook.tex: $(PERFBOOK_BASE) cp $< $@ perfbook-tcb.tex: $(PERFBOOK_BASE) sed -e 's/{tblcptop}{true}/{tblcptop}{false}/' < $< > $@ perfbook-1c.tex: $(PERFBOOK_BASE) sed -e 's/setboolean{twocolumn}{true}/setboolean{twocolumn}{false}/' < $< > $@ perfbook-hb.tex: perfbook-lt.tex sed -e 's/setboolean{hardcover}{false}/setboolean{hardcover}{true}/' < $< > $@ perfbook-eb.tex: perfbook-lt.tex sed -e 's/setboolean{ebooksize}{false}/setboolean{ebooksize}{true}/' < $< > $@ sed -i 's/setboolean{twocolumn}{true}/setboolean{twocolumn}{false}/' $@ perfbook-msns.tex: $(PERFBOOK_BASE) sed -e 's/%msfontstub/\\usepackage{courier}/' < $< > $@ perfbook-mss.tex: $(PERFBOOK_BASE) ifeq ($(COURIERS),) $(error Font package 'courier-scaled' not found. See #9 in FAQ-BUILD.txt) endif sed -e 's/%msfontstub/\\usepackage[scaled=.94]{couriers}/' < $< > $@ perfbook-mstx.tex: $(PERFBOOK_BASE) perfbook-1cmstx.tex: perfbook-1c.tex perfbook-mstx.tex perfbook-1cmstx.tex: sed -e 's/%msfontstub/\\renewcommand*\\ttdefault{txtt}/' < $< > $@ perfbook-msr.tex: $(PERFBOOK_BASE) perfbook-1cmsr.tex: perfbook-1c.tex perfbook-msr.tex perfbook-1cmsr.tex: ifeq ($(NIMBUSMONO),) $(error Font package 'nimbus15' not found. See #9 in FAQ-BUILD.txt) endif sed -e 's/%msfontstub/\\usepackage[scaled=.94]{nimbusmono}/' \ -e 's/{nimbusavail}{false}/{nimbusavail}{true}/' < $< > $@ perfbook-msn.tex: $(PERFBOOK_BASE) perfbook-1cmsn.tex: perfbook-1c.tex perfbook-msn.tex perfbook-1cmsn.tex: ifeq ($(NIMBUSMONO),) $(error Font package 'nimbus15' not found. See #9 in FAQ-BUILD.txt) endif sed -e 's/\\renewcommand\*\\ttdefault{lmtt}//' \ -e 's/{lmttforcode}{true}/{lmttforcode}{false}/' \ -e 's/{nimbusavail}{false}/{nimbusavail}{true}/' < $< > $@ perfbook-msnt.tex: $(PERFBOOK_BASE) perfbook-1cmsnt.tex: perfbook-1c.tex perfbook-msnt.tex perfbook-1cmsnt.tex: ifeq ($(NEWTXTT),) $(error Font package 'newtxtt' not found.$nInstall it or try 'make mstx' instead. See #9 in FAQ-BUILD.txt) endif ifeq ($(NIMBUSMONO),) $(error Font package 'nimbus15' not found. See #9 in FAQ-BUILD.txt) endif sed -e 's/%msfontstub/\\usepackage[zerostyle=a]{newtxtt}/' \ -e 's/{qqzbg}{false}/{qqzbg}{true}/' \ -e 's/{nimbusavail}{false}/{nimbusavail}{true}/' < $< > $@ perfbook-sf.tex: $(PERFBOOK_BASE) perfbook-1csf.tex: perfbook-1c.tex perfbook-ebsf.tex: perfbook-eb.tex perfbook-sf.tex perfbook-1csf.tex perfbook-ebsf.tex: ifeq ($(NEWTXSF),) $(error Font package 'newtxsf' not found. See #9 in FAQ-BUILD.txt) endif ifeq ($(INCONSOLATA),) $(error Font package 'inconsolata' not found. See #9 in FAQ-BUILD.txt) endif ifeq ($(NIMBUSMONO),) $(error Font package 'nimbus15' not found. See #9 in FAQ-BUILD.txt) endif sed -e 's/setboolean{sansserif}{false}/setboolean{sansserif}{true}/' \ -e 's/{nimbusavail}{false}/{nimbusavail}{true}/' \ -e 's/%msfontstub/\\usepackage[var0]{inconsolata}[2013\/07\/17]/' < $< > $@ perfbook-nq.tex: $(PERFBOOK_BASE) perfbook-sfnq.tex: perfbook-sf.tex perfbook-1cnq.tex: perfbook-1c.tex perfbook-1csfnq.tex: perfbook-1csf.tex perfbook-ebnq.tex: perfbook-eb.tex perfbook-ebsfnq.tex: perfbook-ebsf.tex perfbook-nq.tex perfbook-sfnq.tex perfbook-1cnq.tex perfbook-1csfnq.tex perfbook-ebnq.tex perfbook-ebsfnq.tex: sed -e 's/setboolean{qqzbg}{true}/setboolean{qqzbg}{false}/' \ -e 's/setboolean{noqqz}{false}/setboolean{noqqz}{true}/' < $< > $@ perfbook-ix.tex: $(PERFBOOK_BASE) perfbook-1cix.tex: perfbook-1c.tex perfbook-ebix.tex: perfbook-eb.tex perfbook-ix.tex perfbook-1cix.tex perfbook-ebix.tex: sed -e 's/setboolean{qqzbg}{true}/setboolean{qqzbg}{false}/' \ -e 's/setboolean{indexhl}{false}/setboolean{indexhl}{true}/' < $< > $@ perfbook-df.tex: $(PERFBOOK_BASE) perfbook-1cdf.tex: perfbook-1c.tex perfbook-ebdf.tex: perfbook-eb.tex perfbook-df.tex perfbook-1cdf.tex perfbook-ebdf.tex: sed -e 's/setboolean{qqzbg}{true}/setboolean{qqzbg}{false}/' \ -e 's/setboolean{indexon}{true}/setboolean{indexon}{false}/' < $< > $@ perfbook-a4.tex: perfbook-lt.tex perfbook-a4.tex: sed -e 's/{afourpaper}{false}/{afourpaper}{true}/' < $< > $@ # Rules related to perfbook_html are removed as of May, 2016 $(EPSSOURCES_FROM_TEX): $(FIXANEPSFONTS) $(FIXFONTS) $(EPSSOURCES_FROM_TEX): %.eps: %.tex @echo "$< --> $(suffix $@)" sh utilities/mpostcheck.sh @latex -output-directory=$(shell dirname $<) $< > /dev/null 2>&1 @dvips -Pdownload35 -E $(patsubst %.tex,%.dvi,$<) -o $@ > /dev/null 2>&1 @sh $(FIXANEPSFONTS) $@ $(EPSSOURCES_FROM_DOT): $(FIXANEPSFONTS) $(FIXFONTS) $(EPSSOURCES_FROM_DOT): %.eps: %.dot @echo "$< --> $(suffix $@)" ifndef DOT $(error $< --> $@: dot not found. Please install graphviz) endif @dot -Tps -o $@ $< @sh $(FIXANEPSFONTS) $@ $(EPSSOURCES_FROM_FIG): $(FIXANEPSFONTS) $(FIXFONTS) $(EPSSOURCES_FROM_FIG): %.eps: %.fig @echo "$< --> $(suffix $@)" ifndef FIG2EPS $(error $< --> $@: fig2eps not found. Please install fig2ps) endif @fig2eps --nogv $< > /dev/null 2>&1 @sh $(FIXANEPSFONTS) $@ # .eps --> .pdf rules ifdef USE_A2PING include a2ping-rule.mk else include epstopdf-rule.mk endif $(PDFTARGETS_OF_SVG): $(FIXSVGFONTS) $(PDFTARGETS_OF_SVG): %.pdf: %.svg @echo "$< --> $(suffix $@)" ifeq ($(STEELFONT),0) $(error "Steel City Comic" font not found. See #1 in FAQ.txt) endif ifndef INKSCAPE $(error $< --> $@ inkscape not found. Please install it) endif ifeq ($(STEELFONTID),0) @sh $(FIXSVGFONTS) < $< | sed -e 's/Steel City Comic/Test/g' > $ $ /dev/null 2>&1 else @inkscape -o $@ $ /dev/null 2>&1 endif @rm -f $ $@p @diff -q -w $@p pagegroup @rm -f $@q $@p endif CodeSamples/snippets.d: $(SOURCES_OF_SNIPPET) $(GEN_SNIPPET_D) sh ./utilities/gen_snippet_d.sh $(FCVSNIPPETS): @echo "$< --> $(suffix $@)" @utilities/fcvextract.pl $< $(subst +,\\+,$(subst @,:,$(basename $(notdir $@)))) > $@ @utilities/checkfcv.pl $@ $(FCVSNIPPETS_VIA_LTMS): @echo "$< --> $(suffix $@)" @utilities/fcvextract.pl $< $(subst +,\\+,$(subst @,:,$(basename $(notdir $@)))) > $@ @utilities/checkfcv.pl $@ $(FCVSNIPPETS_LTMS): @echo "$< --> $(suffix $@)" @utilities/reorder_ltms.pl $< > $@ help-official: @echo "Official targets (Latin Modern Typewriter for monospace font):" @echo " Full, Abbr." @echo " perfbook.pdf, 2c: (default) 2-column layout" @echo " perfbook-1c.pdf, 1c: 1-column layout" @echo "Note:" @echo " Official targets now enable indexing and Quick-Quiz framing." help-semiofficial: @echo @echo "Semi-official targets:" @echo " Full, Abbr." @echo " perfbook-nq.pdf, nq: 2c without inline Quick Quizzes (chapterwise Qs)" @echo " perfbook-sf.pdf, sf: 2c with sans serif font" @echo " perfbook-sfnq.pdf, sfnq: sf + nq" help-paper: @echo @echo "Set env variable PERFBOOK_PAPER to change paper size:" @echo " PERFBOOK_PAPER=A4: a4paper" @echo " PERFBOOK_PAPER=HB: hard cover book" @echo " other (default): letterpaper" @echo "Note:" @echo " Modified PERFBOOK_PAPER takes effect after \"make paper-clean\"." @echo @echo "Paper-size specific targets (independent of PERFBOOK_PAPER):" @echo " perfbook-lt.pdf, lt: 2c layout on letterpaper" @echo " perfbook-hb.pdf, hb: 2c layout for hard cover book" @echo " perfbook-a4.pdf, a4: 2c layout on a4paper" @echo " perfbook-eb.pdf, eb: 1c layout for ebook reader (WIP)" help: help-official help-paper @echo @echo "\"make help-full\" will show the full list of available targets." help-draft: @echo @echo "Targets for draft check, non-framed Quick Quizzes (quicker build)" @echo " perfbook-ix.pdf, ix: for draft check, with indexed terms highlighted" @echo " perfbook-df.pdf, df: for draft check, without indexing" help-prefixed: @echo @echo "Prefixed targets:" @echo " \"1c*\" such as \"1cnq\", \"1csf\", and \"1cix\" are for 1c-layout." @echo " \"ebnq\", \"ebsf\", \"ebsfnq\", \"ebix\", and \"ebdf\" are for ebook-size 1c-layout," @echo " independent of PERFBOOK_PAPER. (WIP)" help-experimental: @echo @echo "Experimental targets:" @echo " perfbook-msnt.pdf, msnt: newtxtt as monospace (non-slashed 0)" @echo " perfbook-mstx.pdf, mstx: txtt as monospace" @echo " perfbook-msr.pdf, msr: regular thickness courier clone as monospace" @echo " perfbook-msn.pdf, msn: narrow courier clone as monospace" @echo @echo "Historical targets:" @echo " perfbook-tcb.pdf, tcb: table caption at bottom (First Edition)" @echo " perfbook-msns.pdf, msns: non-scaled courier (First Edition)" @echo " perfbook-mss.pdf, mss: scaled courier (default in early 2017)" @echo @echo "Notes:" @echo " - \"msnt\" requires \"newtxtt\". \"mstx\" is a fallback target for older TeX env." @echo " - \"msr\" and \"msn\" require \"nimbus15\"." @echo " - \"msn\" doesn't cover bold face monospace." @echo " - \"sf\" requires \"newtxsf\"." @echo " - All the targets except for \"msn\" use \"Latin Modern Typewriter\" font" @echo " for code snippets." help-full: help-official help-paper help-semiofficial help-draft help-prefixed help-experimental clean: find . -name '*.aux' -o -name '*.blg' \ -o -name '*.dvi' -o -name '*.log' \ -o -name '*.qqz' -o -name '*.toc' -o -name '*.bbl' \ -o -name '*.pdfp' -o -name '*.pdfq' | xargs rm -f rm -f perfbook_flat.tex perfbook*.out $(GENERATED_MAIN) rm -f $(LATEXGENERATED) rm -f qqz*.tex rm -f perfbook*.idx perfbook*.ind perfbook*.ilg perfbook*.ist rm -f perfbook*.acn perfbook*.acr perfbook*.alg rm -f perfbook*.glg perfbook*.glo perfbook*.gls perfbook*.glsdefs rm -f CodeSamples/snippets.d rm -f *.synctex* @rm -f $(OBSOLETE_FILES) paper-clean: rm -f $(BASE_DEPENDS) distclean: clean sh utilities/cleanpdf.sh rm -f $(EPSSOURCES_FROM_DOT) $(EPSSOURCES_FROM_TEX) $(EPSSOURCES_FROM_FIG) find . -name '*.fcv' -o -name '*.ltms' | xargs rm -f touchsvg: find . -name '*.svg' | xargs touch ls-unused: find . -name .unused | xargs ls neatfreak: distclean find . -name '*.pdf' | xargs rm -f cleanfigs-eps: rm -f $(EPSSOURCES_FROM_TEX) $(EPSSOURCES_FROM_DOT) $(EPSSOURCES_FROM_FIG) rm -f $(PDFTARGETS_OF_EPS) cleanfigs-svg: rm -f $(PDFTARGETS_OF_SVG) cleanfigs: cleanfigs-eps cleanfigs-svg figs: $(PDFTARGETS_OF_EPS) $(PDFTARGETS_OF_SVG) punctcheck: utilities/punctcheck.sh utilities/cleverefcheck.sh punctcheck-auto: $(targ) utilities/punctcheck.sh utilities/cleverefcheck.sh periodcheck: punctcheck .SECONDEXPANSION: $(ABBREVTARGETS): %: perfbook-$$@.pdf