From: Mark Wooding Date: Sat, 24 Aug 2019 20:54:08 +0000 (+0100) Subject: configure.ac, doc/Makefile.am: Overhaul LaTeX building. X-Git-Url: https://git.distorted.org.uk/~mdw/sod/commitdiff_plain/b20e5e2658691754756e99829e578f8e2df3aaa9 configure.ac, doc/Makefile.am: Overhaul LaTeX building. Check to see whether all of the things we need are available: don't try to build the manual unless we have them. --- diff --git a/configure.ac b/configure.ac index 75bed26..66cdc51 100644 --- a/configure.ac +++ b/configure.ac @@ -103,6 +103,101 @@ AC_SUBST([lispsrcdir], [$with_lisp_source_dir]) AC_SUBST([lispsysdir], [$with_lisp_system_dir]) dnl-------------------------------------------------------------------------- +dnl TeX things. + +AC_DEFUN([SOD_CHECK_LATEX_FILE], + [sod_thing="$1"; case $sod_thing in + *.sty) sod_thing=${sod_thing%.sty} sod_what=package ;; + *.cls) sod_thing=${sod_thing%.cls} sod_what="document class" ;; + *.tfm) sod_thing=${sod_thing%.tfm} sod_what="font metrics" ;; + *) sod_what="file" ;; + esac + AS_VAR_PUSHDEF([SOD_Pkg], [sod_cv_latex_$1]) + AC_CACHE_CHECK([for LaTeX `$sod_thing' $sod_what], + [SOD_Pkg], + [if $KPSEWHICH >/dev/null 2>&1 --progname=pdflatex $1 + then SOD_Pkg=yes + else SOD_Pkg=no; fi]) + case $SOD_Pkg in + yes) m4_default([$2], [:]) ;; + no) m4_default([$3], [AC_MSG_ERROR([Can't find `$1'])]) ;; + esac + AS_VAR_POPDEF([SOD_Pkg])]) + +dnl See if we want to build the documentation. +AC_ARG_ENABLE([manual], [AS_HELP_STRING([--enable-manual])], + [if test "$enableval" = "no" + then sod_want_latex=no sod_have_latex=no + else sod_want_latex=must sod_have_latex=maybe; fi], + [sod_want_latex=maybe sod_have_latex=maybe]) + +dnl Make sure the TeX programs we need are available. +case $sod_have_latex in maybe) +AC_CHECK_PROGS([PDFLATEX], [pdflatex], [none]) +AC_CHECK_PROGS([KPSEWHICH], [kpsewhich], [none]) +AC_CHECK_PROGS([BIBTEX], [bibtex], [none]) +AC_CHECK_PROGS([MAKEINDEX], [makeindex], [none]) +case ,$PDFLATEX,$KPSEWHICH,$BIBTEX,$MAKEINDX, in + *,none,*) + AC_MSG_WARN([Necessary TeX programs not found: can't build manual!]) + sod_have_latex=no + ;; +esac +;; esac + +case $sod_have_latex in maybe) +SOD_CHECK_LATEX_FILE([strayman.cls], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([fontenc.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([inputenc.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([longtable.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([makeidx.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([amssymb.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([tikz.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([at.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([footnote.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([mdwfonts.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([mdwref.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([mdwtab.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([mdwthm.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([sverb.sty], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([syntax.sty], [], [sod_have_latex=no]) + +SOD_CHECK_LATEX_FILE([cmr12.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmbx10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmcsc10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmex10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmmi12.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmsy10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([cmti10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([msam10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([msbm10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([ecrm1000.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([logo10.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([pplr8r.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([pplri8r.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([pplb8r.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([phvr8r.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([phvb8r.tfm], [], [sod_have_latex=no]) +SOD_CHECK_LATEX_FILE([pcrr8rn.tfm], [], [sod_have_latex=no]) + +case $sod_have_latex in + no) + AC_MSG_WARN([Necessary LaTeX packages not found: can't build manual!]) + ;; +esac +;; esac + +case $sod_want_latex,$sod_have_latex in + must,no) + AC_MSG_ERROR([Couldn't find necessary LaTeX support to build manual!]) + ;; + *,maybe) + sod_have_latex=yes + ;; +esac +AM_CONDITIONAL([HAVE_LATEX], [test "$sod_have_latex" = "yes"]) + +dnl-------------------------------------------------------------------------- dnl Output. AC_CONFIG_FILES( diff --git a/doc/Makefile.am b/doc/Makefile.am index 9812bd9..6647f48 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -31,11 +31,25 @@ TEX_FILES = CLEANFILES += *.aux *.out *.log *.toc *.ind *.idx *.ilg EXTRA_DIST += $(TEX_FILES) -TEXFLAGS = --interaction=nonstopmode \ +TEXFLAGS = --interaction=batchmode \ --output-directory=$(abs_builddir) +BIBTEXFLAGS = --terse +MAKEINDEXFLAGS = -q -run_pdflatex = cd $(srcdir) && \ - pdflatex $(TEXFLAGS) \ +V_LATEX = $(V_LATEX_@AM_V@) +V_LATEX_ = $(V_LATEX_@AM_DEFAULT_V@) +V_LATEX_0 = @echo " LATEX $@"; + +V_BIBTEX = $(V_BIBTEX_@AM_V@) +V_BIBTEX_ = $(V_BIBTEX_@AM_DEFAULT_V@) +V_BIBTEX_0 = @echo " BIBTEX $@"; + +V_MAKEINDEX = $(V_MAKEINDEX_@AM_V@) +V_MAKEINDEX_ = $(V_MAKEINDEX_@AM_DEFAULT_V@) +V_MAKEINDEX_0 = @echo " MAKEIDX $@"; + +run_pdflatex = $(V_LATEX)cd $(srcdir) && \ + $(PDFLATEX) $(TEXFLAGS) \ --jobname=$(basename $1) \ '\def\pkgversion{$(VERSION)}\input{$1}' @@ -77,13 +91,16 @@ TEX_FILES += cutting-room-floor.tex ## Building the output documents. MAINTAINERCLEANFILES += sod.pdf -EXTRA_DIST += sod.pdf + +if HAVE_LATEX doc_DATA += sod.pdf +EXTRA_DIST += sod.pdf sod.pdf: $(TEX_FILES) $(call run_pdflatex,sod.tex) - bibtex sod.aux + $(V_BIBTEX)$(BIBTEX) $(BIBTEXFLAGS) sod.aux $(call run_pdflatex,sod.tex) - makeindex sod.idx + $(V_MAKEINDEX)$(MAKEINDEX) $(MAKEINDEXFLAGS) sod.idx $(call run_pdflatex,sod.tex) +endif ###----- That's all, folks --------------------------------------------------