configure.ac, doc/Makefile.am: Overhaul LaTeX building.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 24 Aug 2019 20:54:08 +0000 (21:54 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 31 Aug 2019 02:06:32 +0000 (03:06 +0100)
Check to see whether all of the things we need are available: don't try
to build the manual unless we have them.

configure.ac
doc/Makefile.am

index 75bed26..66cdc51 100644 (file)
@@ -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(
index 9812bd9..6647f48 100644 (file)
@@ -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 --------------------------------------------------