042df98086735a839e7a4cdf6e457bbdba5d6184
[runlisp] / configure.ac
1 dnl -*-autoconf-*-
2 dnl
3 dnl Configuration script for `runlisp'
4 dnl
5 dnl (c) 2020 Mark Wooding
6 dnl
7
8 dnl----- Licensing notice ---------------------------------------------------
9 dnl
10 dnl This file is part of Runlisp, a tool for invoking Common Lisp scripts.
11 dnl
12 dnl Runlisp is free software: you can redistribute it and/or modify it
13 dnl under the terms of the GNU General Public License as published by the
14 dnl Free Software Foundation; either version 3 of the License, or (at your
15 dnl option) any later version.
16 dnl
17 dnl Runlisp is distributed in the hope that it will be useful, but WITHOUT
18 dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 dnl for more details.
21 dnl
22 dnl You should have received a copy of the GNU General Public License
23 dnl along with Runlisp. If not, see <https://www.gnu.org/licenses/>.
24
25 dnl--------------------------------------------------------------------------
26 dnl Initialization.
27
28 mdw_AUTO_VERSION
29 AC_INIT([runlisp], AUTO_VERSION, [mdw@distorted.org.uk])
30 AC_CONFIG_SRCDIR([runlisp.c])
31 AC_CONFIG_AUX_DIR([config])
32 AM_INIT_AUTOMAKE([foreign])
33 mdw_SILENT_RULES
34
35 AC_PROG_CC
36 AX_CFLAGS_WARN_ALL
37
38 AC_CHECK_PROGS([AUTOM4TE], [autom4te])
39
40 dnl--------------------------------------------------------------------------
41 dnl Checking for Lisp implementations.
42
43 imagedir=$localstatedir/$PACKAGE_NAME; AC_SUBST(imagedir)
44 mdw_DEFINE_PATHS([
45 mdw_DEFINE_PATH([IMAGEDIR], [$imagedir])
46 mdw_DEFINE_PATH([DATADIR], [$datadir/$PACKAGE_NAME])])
47
48 AC_ARG_ENABLE([imagedump],
49 [AS_HELP_STRING([--enable-imagedump[=SYSTEMS]],
50 [make dumps of Lisp SYSTEMS with ASDF etc. preloaded;
51 SYSTEMS is `yes', `no', or a comma-separated list of
52 system names])],
53 [], [enable_imagedump=yes])
54
55 AC_DEFUN([mdw_CHECK_LISP],
56 [AC_CHECK_PROGS([$1], [$2])
57 AC_ARG_VAR([$1], [Path to the $1 Lisp system.])
58 case ,$enable_imagedump, in
59 ,yes, | *,$2,*) dump=t ;;
60 *) dump=nil ;;
61 esac
62 AM_CONDITIONAL([DUMP_$1], [test $dump = t])])
63
64 mdw_CHECK_LISP([SBCL], [sbcl])
65 mdw_CHECK_LISP([CCL], [ccl])
66 mdw_CHECK_LISP([CLISP], [clisp])
67 mdw_CHECK_LISP([ECL], [ecl])
68 mdw_CHECK_LISP([CMUCL], [cmucl])
69 mdw_CHECK_LISP([ABCL], [abcl])
70
71 dnl ECL is changing its command-line option syntax, because that will make
72 dnl things much better or something. So we need to figure out which version
73 dnl of the syntax to use.
74 mdw_ecl_opts=hunoz
75 if test "x$ECL" != x; then
76 AC_MSG_CHECKING([ECL command-line option flavour])
77 ver=$($ECL --version)
78 case $ver in
79 [ECL\ [0-9].*] | [ECL\ 1[0-5].*]) mdw_ecl_opts=trad ;;
80 [ECL\ 1[6-9].*] | [ECL\ [2-9][0-9].*]) mdw_ecl_opts=gnu ;;
81 *) AC_MSG_ERROR([unsupported ECL version \`$ver']) ;;
82 esac
83 AC_MSG_RESULT([$mdw_ecl_opts])
84 case $mdw_ecl_opts in
85 gnu) AC_DEFINE([ECL_OPTIONS_GNU], [1],
86 [Define 1 if ECL uses GNU-style `--FOO' options]) ;;
87 esac
88 fi
89 case $mdw_ecl_opts in
90 gnu) ECLOPT=-- ;;
91 trad) ECLOPT=- ;;
92 *) AC_MSG_ERROR([internal error: unexpected value for `$mdw_ecl_opts']) ;;
93 esac
94 AC_SUBST([ECLOPT])
95
96 dnl--------------------------------------------------------------------------
97 dnl Benchmarking support.
98
99 dnl This has lots of random dependencies, and isn't really very useful. Turn
100 dnl it off unless the user is very keen.
101 AC_ARG_ENABLE([benchmark],
102 [AS_HELP_STRING([--enable-benchmark],
103 [turn on script-startup benchmark machinery])],
104 [mdw_bench=$enableval], [mdw_bench=no])
105 AM_CONDITIONAL([BENCHMARK], [test "$mdw_bench" = yes])
106
107 dnl--------------------------------------------------------------------------
108 dnl Produce output.
109
110 AC_CONFIG_HEADER([config/config.h])
111 AC_CONFIG_TESTDIR([t])
112
113 AC_CONFIG_FILES([Makefile]
114 [bench/Makefile doc/Makefile]
115 [t/Makefile t/atlocal])
116 AC_OUTPUT
117
118 dnl----- That's all, folks --------------------------------------------------