blob: 4c38a1776566e12b19099e10b3aaca16920362b9 [file] [log] [blame]
# Put user-specific changes in your own Makefile.user.
# Make will silently continue if that file does not exist.
-include Makefile.user
# To regenerate this list, run:
# ../../checker/bin-devel/.plume-scripts/latex-process-inputs -makefilelist manual.tex
TEX_FILES = \
manual.tex \
manual-style.tex \
introduction.tex \
nullness-checker.tex \
map-key-checker.tex \
optional-checker.tex \
interning-checker.tex \
lock-checker.tex \
index-checker.tex \
called-methods-checker.tex \
fenum-checker.tex \
tainting-checker.tex \
regex-checker.tex \
formatter-checker.tex \
i18n-format-checker.tex \
propkey-checker.tex \
signature-checker.tex \
guieffect-checker.tex \
units-checker.tex \
signedness-checker.tex \
purity-checker.tex \
constant-value-checker.tex \
returns-receiver-checker.tex \
reflection-checker.tex \
reflection-inference-rules.tex \
initialized-fields-checker.tex \
aliasing-checker.tex \
subtyping-checker.tex \
external-checkers.tex \
typestate-checker.tex \
generics.tex \
advanced-features.tex \
warnings.tex \
inference.tex \
annotating-libraries.tex \
creating-a-checker.tex \
accumulation-checker.tex \
external-tools.tex \
faq.tex \
troubleshooting.tex \
contributors.tex
all: manual.pdf manual.html
.PHONY: figures-all
figures-all:
${MAKE} -C figures all
manual.pdf: ${TEX_FILES} plume-bib-update figures-all check-labels
latexmk -silent -pdf -interaction=nonstopmode manual.tex || latexmk -gg -pdf -interaction=nonstopmode manual.tex
html: manual.html
manual.html: manual.pdf CFLogo.png favicon-checkerframework.png ../api
hevea -fix svg.hva -exec xxdate.exe manual.tex
# I'm not sure why this is necessary; "hevea -fix" should run it automatically.
# Also, you need ImageMagick 6.8.0-2 Beta or later to avoid a bug.
imagen manual
./add-favicon-to-manual
# The following three lines are only necessary when using Hevea before version 2.04.
# With version 2.04 they have no effect but do no harm.
\mv -f manual.html manual.html-with-htoc
./hevea-retarget-crossrefs < manual.html-with-htoc > manual.html
\rm -f manual.html-with-htoc
# Add CSS styling, since \newstyle doesn't work for me.
sed -i -e "s%<style type=\"text/css\">%<style type=\"text/css\">\nimg { max-width: 100\%; max-height: 100\%; }%" manual.html
# Add CSS styling for some links, since \ahrefloc doesn't permit styling
sed -i -e 's%\(<a href="#[^"]*"\)\(><span style="font-size:small">&\#X1F517;</span></a>\)%\1 style="color:inherit; text-decoration:none"\2%g' manual.html
../../checker/bin-devel/.plume-scripts:
cd ../.. && ./gradlew getPlumeScripts -q
.PHONY: contributors.tex
contributors.tex:
# Update plume-scripts even if it is already cloned
cd ../.. && ./gradlew getPlumeScripts -q
../../checker/bin-devel/.plume-scripts/git-authors --latex --punctuation > contributors.tex
../api:
cd ../.. && ./gradlew allJavadoc
CFLogo.png: ../logo/Logo/CFLogo.png
cp -p $< $@
favicon-checkerframework.png: ../logo/Checkmark/CFCheckmark_favicon.png
cp -p $< $@
# Don't use \section; use \sectionAndLabel instead
.PHONY: check-labels
check-labels:
if ( grep -n '^\\\(chapter\|\(sub\)*section\|paragraph\){' *.tex ) ; then false ; else true ; fi
export BIBINPUTS = $BIBINPUTS:.:plume-bib
plume-bib:
(git clone --depth 1 -q https://github.com/mernst/plume-bib.git || git clone --depth 1 -q https://github.com/mernst/plume-bib.git)
.PHONY: plume-bib-update
plume-bib-update: plume-bib
# Even if this command fails, it does not terminate the make job.
# However, to skip it, invoke make as: make NOGIT=1 ...
ifndef NOGIT
-(cd plume-bib && git pull && make)
endif
# Leaves manual.html, and .svg files that it references.
clean:
@\rm -f *.aux *.blg *.dvi *.haux *.htoc *.idx *.ilg *.ind *.log *.out *.pdf *.ps *.toc manual.image.tex
very_clean: clean
@\rm -f manual.html CFLogo.png
.PHONY: checklink
checklink:
checklink-via-http
.PHONY: checklink-via-file
checklink-via-file:
${CHECKLINK}/checklink -q -e `grep -v '^#' ${CHECKLINK}/checklink-args.txt` manual.html
# Example invocation:
# CHECKLINK=$HOME/bin/src/checklink make checklink-via-http
.PHONY: checklink-via-http
checklink-via-http: manual.html
rm -rf ${HOME}/public_html/tmp-cf-manual
(cd .. && cp -prf manual ${HOME}/public_html/tmp-cf-manual)
${CHECKLINK}/checklink -q -e `grep -v '^#' ${CHECKLINK}/checklink-args.txt` https://homes.cs.washington.edu/~mernst/tmp-cf-manual/manual.html
.PHONY: tags
tags: TAGS
TAGS: ${TEX_FILES}
etags ${TEX_FILES}