# Makefile for Autocento of the breakfast table # by Case Duckworth | autocento.me # vim: fdm=marker # variables {{{ appendixd := appendix backlinkd := backlinks frontmatterd := front-matter hapaxd := hapax scriptd := scripts templated := templates textd := text trunkd := trunk wipd := wip compiler := bash $(scriptd)/compile.sh texts := $(wildcard $(textd)/*.txt) frontmatter := $(wildcard $(frontmatterd)/*.txt) htmls = $(patsubst $(textd)/%.txt,%.html,$(texts)) \ $(patsubst $(frontmatterd)/%.txt,%.html,$(frontmatter)) htmlWriter := html5 htmlTemplate := $(templated)/page.html htmlFilter := $(scriptd)/versify.exe htmlFilterSrc := $(scriptd)/versify.hs # Converts
s to s htmlOptions := --template=$(htmlTemplate) htmlOptions += --filter=$(htmlFilter) htmlOptions += --smart # Smart "correct" typeography htmlOptions += --mathml # Use mathml for TeX math in HTML htmlOptions += --section-divs # Add a
around sections htmlOptions += --normalize # merge adjacent `Str`, `Emph`, `Space` randomize := $(scriptd)/randomize.js backTexts = $(patsubst $(textd)/%.txt,$(backlinkd)/%.back,$(texts)) backTextHead := $(trunkd)/backlink.head backHtmls := $(patsubst %.back,%.html,$(backTexts)) backHtmlWriter := $(htmlWriter) backHtmlTemplate := $(templated)/backlinks.html backHtmlOptions := --template=$(backHtmlTemplate) backHtmlOptions += --smart hapaxSrcs = $(patsubst $(textd)/%.txt,$(hapaxd)/%.hapax,$(texts)) hapax := $(appendixd)/hapax.txt hapaxWriter := $(scriptd)/hapax.lua hapaxFilter := $(scriptd)/forceascii.exe hapaxFilterSrc := $(scriptd)/forceascii.hs hapaxOptions := --filter=$(hapaxFilter) hapaxHead := $(trunkd)/hapax.head hapaxTmp := $(trunkd)/_HAPAXTMP.tmp hapaxHtml := hapax.html island := $(appendixd)/islands.txt islandHead := $(trunkd)/islands.head islandHtml := islands.html firstLines := $(appendixd)/first-lines.txt firstLinesHead := $(trunkd)/first-lines.head firstLinesHtml := first-lines.html commonTitles := $(appendixd)/common-titles.txt commonTitlesHead := $(trunkd)/common-titles.head commonTitlesHtml := common-titles.html toc := $(appendixd)/toc.txt tocHead := $(trunkd)/toc.head tocHtml := toc.html appendices := $(firstLines) $(commonTitles) $(toc) $(hapax) appendixHtmls := $(patsubst $(appendixd)/%.txt,%.html,$(appendices)) # }}} # PHONY TARGETS {{{ .PHONY: all clean again appendices htmls backlinks all : appendices backlinks htmls htmls: $(htmls) backlinks: $(backHtmls) $(islandHtml) appendices: $(appendixHtmls) clean : -rm -f $(htmls) -rm -f $(backlinkd)/* -rm -f $(appendixd)/* -rm -f $(hapaxd)/* -rm -f $(appendixHtmls) again : clean all # }}} # HTMLS {{{ %.html : $(textd)/%.txt $(htmlFilter) $(htmlTemplate) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ %.html : $(frontmatterd)/%.txt pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ $(htmlFilter) : $(htmlFilterSrc) ghc --make $< # }}} # RANDOMIZE.JS {{{ $(randomize) : $(htmls) @echo "Updating $@..." @$(compiler) $@ $^ # }}} # BACKLINKS {{{ $(backlinkd)/%.back : $(textd)/%.txt $(backTextHead) cat $(backTextHead) > $@ $(compiler) $@ $< >> $@ $(compiler) --fix-head $@ $< $(backlinkd)/%.html : $(backlinkd)/%.back $(backHtmlTemplate) pandoc $< -t $(backHtmlWriter) $(backHtmlOptions) -o $@ # }}} # APPENDICES {{{ $(island) : $(backTexts) cat $(islandHead) > $@ @echo "Compiling $@..." @$(compiler) $@ $^ >> $@ $(islandHtml) : $(island) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ $(firstLines) : $(texts) cat $(firstLinesHead) > $@ @echo "Compiling $@..." @$(compiler) $@ $^ >> $@ $(firstLinesHtml) : $(firstLines) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ $(commonTitles) : $(texts) cat $(commonTitlesHead) > $@ @echo "Compiling $@..." @$(compiler) $@ $^ >> $@ $(commonTitlesHtml) : $(commonTitles) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ $(toc) : $(texts) cat $(tocHead) > $@ @echo "Compiling $@..." @$(compiler) $@ $^ >> $@ $(tocHtml) : $(toc) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ # }}} # HAPAX LEGOMENA {{{ $(hapaxd)/%.hapax : $(textd)/%.txt $(hapaxWriter) pandoc $< -t $(hapaxWriter) $(hapaxOptions) -o $@ $(hapaxFilter) : $(hapaxFilterSrc) ghc --make $< $(hapax) : $(hapaxSrcs) pandoc $^ -t $(hapaxWriter) $(hapaxOptions) -o $@ cat $(hapaxHead) > $(hapaxTmp) @echo "Linking $@..." @$(compiler) $@ $^ >> $(hapaxTmp) mv $(hapaxTmp) $@ $(hapaxHtml) : $(hapax) pandoc $< -t $(htmlWriter) $(htmlOptions) -o $@ # }}}