dnl----- Licensing notice ---------------------------------------------------
dnl
-dnl This file is part of the Sensble Object Design, an object system for C.
+dnl This file is part of the Sensible Object Design, an object system for C.
dnl
dnl SOD is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl Convert the version number for ASDF.
## This is surprisingly awful. The convention for official version numbers
-## is that they look like MAJOR.MINOR.PATCH[.BPB][-N-gHEX[+]]. ASDF
-## insists on simple numeric things separated by dots. If there's no Git
-## thing on the end, then the main version number will do fine. If there
-## is, then we insert /two/ `0's in, followed by N and the HEX converted to
-## decimal. Why two? Because if there's no brown-paper-bag number, we
-## want to make sure that the first BPB release is higher than any of the
-## preceding Git revisions.
+## is that they look like [MAJOR.MINOR.PATCH~]MAJOR.MINOR.PATCH[.BPB]
+## [-N-gHEX[+]]. ASDF insists on simple numeric things separated by dots.
+## If there's no interim-version thing on the front or Git thing on the end,
+## then the main version number will do fine. If there is, then we insert
+## /two/ `0's in, followed by N and the HEX converted to decimal. Why two?
+## Because if there's no brown-paper-bag number, we want to make sure that
+## the first BPB release is higher than any of the preceding Git revisions.
ver=AC_PACKAGE_VERSION
case $ver in
*-*-g*)
- base=${ver%%-*} tail=${ver#*-}
+ case $ver in
+ *~*) pre=${ver%%~*}. tail=${ver#*~} ;;
+ *) pre= tail=$ver ;;
+ esac
+ base=${tail%%-*} tail=${tail#*-}
n=${tail%%-*} tail=${tail#*-g}
- case $tail in *+) grubby=.1 tail=${tail%+} ;; *) grubby= ;; esac
+ case $tail in *+) grubby=.0.1 tail=${tail%+} ;; *) grubby= ;; esac
rev=$(( 0x$tail ))
- ASDF_VERSION=$base.0.0.$n.$rev$grubby
+ ASDF_VERSION=$pre$base.0.0.$n.$rev$grubby
;;
*)
ASDF_VERSION=$ver
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([TEX], [tex], [none])
+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 ,$TEX,$PDFLATEX,$KPSEWHICH,$BIBTEX,$MAKEINDX, in
+ *,none,*)
+ AC_MSG_WARN([Necessary TeX programs not found: can't build manual!])
+ sod_have_latex=no
+ ;;
+esac
+;; esac
+
+sod_have_custom_bib=no
+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])
+
+SOD_CHECK_LATEX_FILE([merlin.mbs], [sod_have_custom_bib=yes], [:])
+
+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"])
+AM_CONDITIONAL([HAVE_CUSTOM_BIB], [test "$sod_have_custom_bib" = "yes"])
+
dnl--------------------------------------------------------------------------
dnl Output.