chiark / gitweb /
debian/: Fix build-dependencies for building the manual.
[sod] / configure.ac
1 dnl -*-autoconf-*-
2 dnl
3 dnl Configuration script for SOD
4 dnl
5 dnl (c) 2015 Straylight/Edgeware
6 dnl
7
8 dnl----- Licensing notice ---------------------------------------------------
9 dnl
10 dnl This file is part of the Sensible Object Design, an object system for C.
11 dnl
12 dnl SOD is free software; you can redistribute it and/or modify
13 dnl it under the terms of the GNU General Public License as published by
14 dnl the Free Software Foundation; either version 2 of the License, or
15 dnl (at your option) any later version.
16 dnl
17 dnl SOD is distributed in the hope that it will be useful,
18 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
19 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 dnl GNU General Public License for more details.
21 dnl
22 dnl You should have received a copy of the GNU General Public License
23 dnl along with SOD; if not, write to the Free Software Foundation,
24 dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25
26 dnl--------------------------------------------------------------------------
27 dnl Initialization.
28
29 mdw_AUTO_VERSION
30 AC_INIT([sod], AUTO_VERSION, [mdw@distorted.org.uk])
31 AC_CONFIG_SRCDIR([lib/sod.h])
32 AC_CONFIG_AUX_DIR([config])
33 AM_INIT_AUTOMAKE([foreign])
34 mdw_SILENT_RULES
35
36 AC_PROG_CC
37 AM_PROG_LIBTOOL
38 AX_CFLAGS_WARN_ALL
39 mdw_LIBTOOL_VERSION_INFO
40
41 dnl--------------------------------------------------------------------------
42 dnl Convert the version number for ASDF.
43
44 ## This is surprisingly awful.  The convention for official version numbers
45 ## is that they look like MAJOR.MINOR.PATCH[.BPB][-N-gHEX[+]].  ASDF
46 ## insists on simple numeric things separated by dots.  If there's no Git
47 ## thing on the end, then the main version number will do fine.  If there
48 ## is, then we insert /two/ `0's in, followed by N and the HEX converted to
49 ## decimal.  Why two?  Because if there's no brown-paper-bag number, we
50 ## want to make sure that the first BPB release is higher than any of the
51 ## preceding Git revisions.
52 ver=AC_PACKAGE_VERSION
53 case $ver in
54   *-*-g*)
55     base=${ver%%-*} tail=${ver#*-}
56     n=${tail%%-*} tail=${tail#*-g}
57     case $tail in *+) grubby=.1 tail=${tail%+} ;; *) grubby= ;; esac
58     rev=$(( 0x$tail ))
59     ASDF_VERSION=$base.0.0.$n.$rev$grubby
60     ;;
61   *)
62     ASDF_VERSION=$ver
63     ;;
64 esac
65 AC_SUBST([ASDF_VERSION])
66
67 dnl--------------------------------------------------------------------------
68 dnl Common Lisp things.
69
70 AC_ARG_WITH([lisp-system],
71         [AS_HELP_STRING([--with-lisp-system=SYSTEMS],
72                         [preference order of cl-launch Lisp systems])],
73         [], [with_lisp_system="sbcl clisp"])
74
75 AC_CHECK_PROGS([CL_LAUNCH], [cl-launch], [not-found])
76 case "$CL_LAUNCH" in
77   not-found) AC_MSG_ERROR([\`cl-launch' not found]) ;;
78 esac
79
80 AC_MSG_CHECKING([for best choice of Lisp system])
81 if ! LISPSYS=$($CL_LAUNCH -l "$with_lisp_system" \
82                 -ip '(string-downcase (lisp-implementation-type))'); then
83   AC_MSG_ERROR([cl-launch didn't like any Lisp system])
84 fi
85 AC_SUBST([LISPSYS])
86 AC_MSG_RESULT([$LISPSYS])
87
88 AC_MSG_CHECKING([FASL file extension])
89 fasl=$($CL_LAUNCH -l $LISPSYS -ip \
90         '(pathname-type (compile-file-pathname "foo.lisp"))')
91 AC_SUBST([fasl])
92 AC_MSG_RESULT([.$fasl])
93
94 AC_ARG_WITH([lisp-source-dir],
95         [AS_HELP_STRING([--with-lisp-source-dir=DIR],
96                         [where to install Common Lisp source files])],
97         [], [with_lisp_source_dir='${datadir}/common-lisp/source'])
98 AC_ARG_WITH([lisp-system-dir],
99         [AS_HELP_STRING([--with-lisp-system-dir=DIR],
100                         [where to install ASDF system links])],
101         [], [with_lisp_system_dir='${datadir}/common-lisp/systems'])
102 AC_SUBST([lispsrcdir], [$with_lisp_source_dir])
103 AC_SUBST([lispsysdir], [$with_lisp_system_dir])
104
105 dnl--------------------------------------------------------------------------
106 dnl TeX things.
107
108 AC_DEFUN([SOD_CHECK_LATEX_FILE],
109   [sod_thing="$1"; case $sod_thing in
110      *.sty) sod_thing=${sod_thing%.sty} sod_what=package ;;
111      *.cls) sod_thing=${sod_thing%.cls} sod_what="document class" ;;
112      *.tfm) sod_thing=${sod_thing%.tfm} sod_what="font metrics" ;;
113      *) sod_what="file" ;;
114    esac
115    AS_VAR_PUSHDEF([SOD_Pkg], [sod_cv_latex_$1])
116    AC_CACHE_CHECK([for LaTeX `$sod_thing' $sod_what],
117      [SOD_Pkg],
118      [if $KPSEWHICH >/dev/null 2>&1 --progname=pdflatex $1
119       then SOD_Pkg=yes
120       else SOD_Pkg=no; fi])
121    case $SOD_Pkg in
122      yes) m4_default([$2], [:]) ;;
123      no) m4_default([$3], [AC_MSG_ERROR([Can't find `$1'])]) ;;
124    esac
125    AS_VAR_POPDEF([SOD_Pkg])])
126
127 dnl See if we want to build the documentation.
128 AC_ARG_ENABLE([manual], [AS_HELP_STRING([--enable-manual])],
129         [if test "$enableval" = "no"
130          then sod_want_latex=no sod_have_latex=no
131          else sod_want_latex=must sod_have_latex=maybe; fi],
132         [sod_want_latex=maybe sod_have_latex=maybe])
133
134 dnl Make sure the TeX programs we need are available.
135 case $sod_have_latex in maybe)
136 AC_CHECK_PROGS([PDFLATEX], [pdflatex], [none])
137 AC_CHECK_PROGS([KPSEWHICH], [kpsewhich], [none])
138 AC_CHECK_PROGS([BIBTEX], [bibtex], [none])
139 AC_CHECK_PROGS([MAKEINDEX], [makeindex], [none])
140 case ,$PDFLATEX,$KPSEWHICH,$BIBTEX,$MAKEINDX, in
141   *,none,*)
142     AC_MSG_WARN([Necessary TeX programs not found: can't build manual!])
143     sod_have_latex=no
144     ;;
145 esac
146 ;; esac
147
148 case $sod_have_latex in maybe)
149 SOD_CHECK_LATEX_FILE([strayman.cls], [], [sod_have_latex=no])
150 SOD_CHECK_LATEX_FILE([fontenc.sty], [], [sod_have_latex=no])
151 SOD_CHECK_LATEX_FILE([inputenc.sty], [], [sod_have_latex=no])
152 SOD_CHECK_LATEX_FILE([longtable.sty], [], [sod_have_latex=no])
153 SOD_CHECK_LATEX_FILE([makeidx.sty], [], [sod_have_latex=no])
154 SOD_CHECK_LATEX_FILE([amssymb.sty], [], [sod_have_latex=no])
155 SOD_CHECK_LATEX_FILE([tikz.sty], [], [sod_have_latex=no])
156 SOD_CHECK_LATEX_FILE([at.sty], [], [sod_have_latex=no])
157 SOD_CHECK_LATEX_FILE([footnote.sty], [], [sod_have_latex=no])
158 SOD_CHECK_LATEX_FILE([mdwfonts.sty], [], [sod_have_latex=no])
159 SOD_CHECK_LATEX_FILE([mdwref.sty], [], [sod_have_latex=no])
160 SOD_CHECK_LATEX_FILE([mdwtab.sty], [], [sod_have_latex=no])
161 SOD_CHECK_LATEX_FILE([mdwthm.sty], [], [sod_have_latex=no])
162 SOD_CHECK_LATEX_FILE([sverb.sty], [], [sod_have_latex=no])
163 SOD_CHECK_LATEX_FILE([syntax.sty], [], [sod_have_latex=no])
164
165 SOD_CHECK_LATEX_FILE([cmr12.tfm], [], [sod_have_latex=no])
166 SOD_CHECK_LATEX_FILE([cmbx10.tfm], [], [sod_have_latex=no])
167 SOD_CHECK_LATEX_FILE([cmcsc10.tfm], [], [sod_have_latex=no])
168 SOD_CHECK_LATEX_FILE([cmex10.tfm], [], [sod_have_latex=no])
169 SOD_CHECK_LATEX_FILE([cmmi12.tfm], [], [sod_have_latex=no])
170 SOD_CHECK_LATEX_FILE([cmsy10.tfm], [], [sod_have_latex=no])
171 SOD_CHECK_LATEX_FILE([cmti10.tfm], [], [sod_have_latex=no])
172 SOD_CHECK_LATEX_FILE([msam10.tfm], [], [sod_have_latex=no])
173 SOD_CHECK_LATEX_FILE([msbm10.tfm], [], [sod_have_latex=no])
174 SOD_CHECK_LATEX_FILE([ecrm1000.tfm], [], [sod_have_latex=no])
175 SOD_CHECK_LATEX_FILE([logo10.tfm], [], [sod_have_latex=no])
176 SOD_CHECK_LATEX_FILE([pplr8r.tfm], [], [sod_have_latex=no])
177 SOD_CHECK_LATEX_FILE([pplri8r.tfm], [], [sod_have_latex=no])
178 SOD_CHECK_LATEX_FILE([pplb8r.tfm], [], [sod_have_latex=no])
179 SOD_CHECK_LATEX_FILE([phvr8r.tfm], [], [sod_have_latex=no])
180 SOD_CHECK_LATEX_FILE([phvb8r.tfm], [], [sod_have_latex=no])
181 SOD_CHECK_LATEX_FILE([pcrr8rn.tfm], [], [sod_have_latex=no])
182
183 case $sod_have_latex in
184   no)
185     AC_MSG_WARN([Necessary LaTeX packages not found: can't build manual!])
186     ;;
187 esac
188 ;; esac
189
190 case $sod_want_latex,$sod_have_latex in
191   must,no)
192     AC_MSG_ERROR([Couldn't find necessary LaTeX support to build manual!])
193     ;;
194   *,maybe)
195     sod_have_latex=yes
196     ;;
197 esac
198 AM_CONDITIONAL([HAVE_LATEX], [test "$sod_have_latex" = "yes"])
199
200 dnl--------------------------------------------------------------------------
201 dnl Output.
202
203 AC_CONFIG_FILES(
204   [Makefile]
205   [src/Makefile]
206   [lib/Makefile]
207   [doc/Makefile]
208   [test/Makefile])
209 AC_OUTPUT
210
211 dnl----- That's all, folks --------------------------------------------------