Commit | Line | Data |
---|---|---|
97a9a385 MW |
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 | |
e0808c47 | 10 | dnl This file is part of the Sensible Object Design, an object system for C. |
97a9a385 MW |
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-------------------------------------------------------------------------- | |
58a95090 MW |
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-------------------------------------------------------------------------- | |
97a9a385 MW |
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]) | |
5e6bcea3 | 89 | fasl=$($CL_LAUNCH -l $LISPSYS -ip \ |
97a9a385 | 90 | '(pathname-type (compile-file-pathname "foo.lisp"))') |
5e6bcea3 MW |
91 | AC_SUBST([fasl]) |
92 | AC_MSG_RESULT([.$fasl]) | |
97a9a385 MW |
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-------------------------------------------------------------------------- | |
b20e5e26 MW |
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) | |
d892b0c3 | 136 | AC_CHECK_PROGS([TEX], [tex], [none]) |
b20e5e26 MW |
137 | AC_CHECK_PROGS([PDFLATEX], [pdflatex], [none]) |
138 | AC_CHECK_PROGS([KPSEWHICH], [kpsewhich], [none]) | |
139 | AC_CHECK_PROGS([BIBTEX], [bibtex], [none]) | |
140 | AC_CHECK_PROGS([MAKEINDEX], [makeindex], [none]) | |
d892b0c3 | 141 | case ,$TEX,$PDFLATEX,$KPSEWHICH,$BIBTEX,$MAKEINDX, in |
b20e5e26 MW |
142 | *,none,*) |
143 | AC_MSG_WARN([Necessary TeX programs not found: can't build manual!]) | |
144 | sod_have_latex=no | |
145 | ;; | |
146 | esac | |
147 | ;; esac | |
148 | ||
d892b0c3 | 149 | sod_have_custom_bib=no |
b20e5e26 MW |
150 | case $sod_have_latex in maybe) |
151 | SOD_CHECK_LATEX_FILE([strayman.cls], [], [sod_have_latex=no]) | |
152 | SOD_CHECK_LATEX_FILE([fontenc.sty], [], [sod_have_latex=no]) | |
153 | SOD_CHECK_LATEX_FILE([inputenc.sty], [], [sod_have_latex=no]) | |
154 | SOD_CHECK_LATEX_FILE([longtable.sty], [], [sod_have_latex=no]) | |
155 | SOD_CHECK_LATEX_FILE([makeidx.sty], [], [sod_have_latex=no]) | |
156 | SOD_CHECK_LATEX_FILE([amssymb.sty], [], [sod_have_latex=no]) | |
157 | SOD_CHECK_LATEX_FILE([tikz.sty], [], [sod_have_latex=no]) | |
158 | SOD_CHECK_LATEX_FILE([at.sty], [], [sod_have_latex=no]) | |
159 | SOD_CHECK_LATEX_FILE([footnote.sty], [], [sod_have_latex=no]) | |
160 | SOD_CHECK_LATEX_FILE([mdwfonts.sty], [], [sod_have_latex=no]) | |
161 | SOD_CHECK_LATEX_FILE([mdwref.sty], [], [sod_have_latex=no]) | |
162 | SOD_CHECK_LATEX_FILE([mdwtab.sty], [], [sod_have_latex=no]) | |
163 | SOD_CHECK_LATEX_FILE([mdwthm.sty], [], [sod_have_latex=no]) | |
164 | SOD_CHECK_LATEX_FILE([sverb.sty], [], [sod_have_latex=no]) | |
165 | SOD_CHECK_LATEX_FILE([syntax.sty], [], [sod_have_latex=no]) | |
166 | ||
167 | SOD_CHECK_LATEX_FILE([cmr12.tfm], [], [sod_have_latex=no]) | |
168 | SOD_CHECK_LATEX_FILE([cmbx10.tfm], [], [sod_have_latex=no]) | |
169 | SOD_CHECK_LATEX_FILE([cmcsc10.tfm], [], [sod_have_latex=no]) | |
170 | SOD_CHECK_LATEX_FILE([cmex10.tfm], [], [sod_have_latex=no]) | |
171 | SOD_CHECK_LATEX_FILE([cmmi12.tfm], [], [sod_have_latex=no]) | |
172 | SOD_CHECK_LATEX_FILE([cmsy10.tfm], [], [sod_have_latex=no]) | |
173 | SOD_CHECK_LATEX_FILE([cmti10.tfm], [], [sod_have_latex=no]) | |
174 | SOD_CHECK_LATEX_FILE([msam10.tfm], [], [sod_have_latex=no]) | |
175 | SOD_CHECK_LATEX_FILE([msbm10.tfm], [], [sod_have_latex=no]) | |
176 | SOD_CHECK_LATEX_FILE([ecrm1000.tfm], [], [sod_have_latex=no]) | |
177 | SOD_CHECK_LATEX_FILE([logo10.tfm], [], [sod_have_latex=no]) | |
178 | SOD_CHECK_LATEX_FILE([pplr8r.tfm], [], [sod_have_latex=no]) | |
179 | SOD_CHECK_LATEX_FILE([pplri8r.tfm], [], [sod_have_latex=no]) | |
180 | SOD_CHECK_LATEX_FILE([pplb8r.tfm], [], [sod_have_latex=no]) | |
181 | SOD_CHECK_LATEX_FILE([phvr8r.tfm], [], [sod_have_latex=no]) | |
182 | SOD_CHECK_LATEX_FILE([phvb8r.tfm], [], [sod_have_latex=no]) | |
183 | SOD_CHECK_LATEX_FILE([pcrr8rn.tfm], [], [sod_have_latex=no]) | |
184 | ||
d892b0c3 MW |
185 | SOD_CHECK_LATEX_FILE([merlin.mbs], [sod_have_custom_bib=yes], [:]) |
186 | ||
b20e5e26 MW |
187 | case $sod_have_latex in |
188 | no) | |
189 | AC_MSG_WARN([Necessary LaTeX packages not found: can't build manual!]) | |
190 | ;; | |
191 | esac | |
192 | ;; esac | |
193 | ||
194 | case $sod_want_latex,$sod_have_latex in | |
195 | must,no) | |
196 | AC_MSG_ERROR([Couldn't find necessary LaTeX support to build manual!]) | |
197 | ;; | |
198 | *,maybe) | |
199 | sod_have_latex=yes | |
200 | ;; | |
201 | esac | |
202 | AM_CONDITIONAL([HAVE_LATEX], [test "$sod_have_latex" = "yes"]) | |
d892b0c3 | 203 | AM_CONDITIONAL([HAVE_CUSTOM_BIB], [test "$sod_have_custom_bib" = "yes"]) |
b20e5e26 MW |
204 | |
205 | dnl-------------------------------------------------------------------------- | |
97a9a385 MW |
206 | dnl Output. |
207 | ||
3f725f73 MW |
208 | AC_CONFIG_FILES( |
209 | [Makefile] | |
210 | [src/Makefile] | |
211 | [lib/Makefile] | |
212 | [doc/Makefile] | |
213 | [test/Makefile]) | |
97a9a385 MW |
214 | AC_OUTPUT |
215 | ||
216 | dnl----- That's all, folks -------------------------------------------------- |