1#                                                       -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4# Copyright (C) 1992-1995, 1999-2012 Free Software Foundation, Inc.
5
6# This program is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19# We need AC_CONFIG_TESTDIR, AC_PROG_SED, AC_PROG_GREP.
20AC_PREREQ([2.60])
21
22AC_INIT([GNU Autoconf],
23	m4_esyscmd([build-aux/git-version-gen .tarball-version]),
24	[bug-autoconf@gnu.org])
25AC_CONFIG_SRCDIR([lib/autoconf/autoconf.m4])
26
27AC_CONFIG_AUX_DIR([build-aux])
28
29AM_INIT_AUTOMAKE([1.11 dist-xz readme-alpha no-texinfo.tex std-options])
30
31AB_INIT
32
33# We use `/bin/sh -n script' to check that there are no syntax errors
34# in the scripts.  Although incredible, there are /bin/sh that go into
35# endless loops with `-n', e.g., SunOS's:
36#
37#   $ uname -a
38#   SunOS ondine 4.1.3 2 sun4m unknown
39#   $ cat endless.sh
40#   while false
41#   do
42#     :
43#   done
44#   exit 0
45#   $ time sh endless.sh
46#   sh endless.sh  0,02s user 0,03s system 78% cpu 0,064 total
47#   $ time sh -nx endless.sh
48#   ^Csh -nx endless.sh  3,67s user 0,03s system 63% cpu 5,868 total
49#
50# Also, some implementations of /bin/sh (e.g., Solaris 8) are soooo slow
51# that they are unusable on large scripts like our testsuite.
52
53# So before using `/bin/sh -n' to check our scripts, we first check
54# that `/bin/sh -n' is known to not have these problems.
55
56AC_CACHE_CHECK([whether /bin/sh -n is known to work], [ac_cv_sh_n_works],
57[if (
58    unset BASH_VERSION ZSH_VERSION
59    /bin/sh -c '
60      test -n "${BASH_VERSION+set}" || # Bash
61      test -n "${KSH_VERSION+set}" || # pdksh
62      test -n "${ZSH_VERSION+set}" || # zsh
63      test -n "${.sh.version}" # ksh93; put this last since its syntax is dodgy
64    '
65  ) 2>/dev/null
66then ac_cv_sh_n_works=yes
67else ac_cv_sh_n_works=no
68fi
69])
70AC_SUBST([ac_cv_sh_n_works])
71
72AC_MSG_CHECKING([for characters that cannot appear in file names])
73AC_CACHE_VAL([ac_cv_unsupported_fs_chars],
74[ac_cv_unsupported_fs_chars=
75for c in '\\' \" '<' '>' '*' '?' '|'
76do
77  touch "conftest.t${c}t" 2>/dev/null
78  test -f "conftest.t${c}t" && rm -f "conftest.t${c}t" && continue
79  # $c cannot be used in a file name.
80  ac_cv_unsupported_fs_chars=$ac_cv_unsupported_fs_chars$c
81done
82])
83if test -n "$ac_cv_unsupported_fs_chars"; then
84  AC_MSG_RESULT([$ac_cv_unsupported_fs_chars])
85else
86  AC_MSG_RESULT([none])
87fi
88
89AC_SUBST([ac_cv_unsupported_fs_chars])
90
91AC_CACHE_CHECK([whether directories can have trailing spaces],
92	       [ac_cv_dir_trailing_space],
93[rm -rf 'conftest.d ' && mkdir 'conftest.d ' && touch 'conftest.d /tfile' 2>/dev/null
94stat=$?
95rm -rf 'conftest.d '
96case $stat$? in #(
97   00) ac_cv_dir_trailing_space=yes ;; #(
98   *) ac_cv_dir_trailing_space=no ;;
99esac
100])
101AC_SUBST([ac_cv_dir_trailing_space])
102
103# Initialize the test suite.
104AC_CONFIG_TESTDIR([tests])
105AC_CONFIG_FILES([tests/Makefile tests/atlocal])
106AC_PATH_PROG([EXPR], [expr])
107
108
109## ---- ##
110## M4.  ##
111## ---- ##
112
113# We use an absolute name for GNU m4 so even if users have another m4 first in
114# their path, the installer can configure with a path that has GNU m4
115# on it and get that path embedded in the installed autoconf and
116# autoheader scripts.
117AC_PROG_GNU_M4
118
119## ----------- ##
120## Man pages.  ##
121## ----------- ##
122
123AC_CONFIG_FILES([man/Makefile])
124AM_MISSING_PROG([HELP2MAN], [help2man])
125
126
127## ------ ##
128## Perl.  ##
129## ------ ##
130
131# We use an absolute name for perl so the #! line in autoscan will work.
132AC_PATH_PROG([PERL], [perl], [no])
133AC_SUBST([PERL])dnl
134if test "$PERL" = no; then
135  AC_MSG_ERROR([perl is not found])
136fi
137$PERL -e 'require 5.006;' || {
138   AC_MSG_ERROR([Perl 5.006 or better is required])
139}
140
141# Find out whether the system supports flock
142# Note this test does not try to find out whether it works with this
143# particular file system.  It merely avoids us running flock on systems
144# where that bails out.
145AC_CACHE_CHECK([whether $PERL Fcntl::flock is implemented],
146  [ac_cv_perl_flock_implemented],
147  [echo lock me > conftest.fil
148   if $PERL -e 'use Fcntl ":flock"; flock("conftest.fil", LOCK_EX); 1;'; then
149     ac_cv_perl_flock_implemented=yes
150   else
151     ac_cv_perl_flock_implemented=no
152   fi
153   rm -f conftest.fil
154  ])
155AC_SUBST([PERL_FLOCK], [$ac_cv_perl_flock_implemented])
156
157
158## ------- ##
159## Emacs.  ##
160## ------- ##
161
162AC_CONFIG_FILES([lib/emacs/Makefile])
163TEST_EMACS=$EMACS
164test x"$TEST_EMACS" = xt && TEST_EMACS=
165AC_CHECK_PROGS([TEST_EMACS], [emacs xemacs], [no])
166
167# autoconf-mode.el and autotest-mode.el do not work with older version of
168# Emacs (i.e. 18.x.x).  During byte-compilation, Emacs complains:
169# "Variable (broken nil) seen on pass 2 of byte compiler but not pass 1"
170# We detect this problem here.
171AS_IF([test "$TEST_EMACS" != no],
172  [AC_CACHE_CHECK([whether $TEST_EMACS is sufficiently recent],
173    [ac_cv_prog_emacs_ok],
174    [# Note: The quoted "EOF" is intentional.  It protects the ` in the text.
175    cat >conftest.el << "EOF"
176      (defvar broken)
177      (defun broken-mode () (setq broken-defaults `(broken nil)))
178EOF
179    AS_IF([AC_RUN_LOG(
180      [$TEST_EMACS -batch -q -f batch-byte-compile conftest.el 1>&2])],
181      [ac_cv_prog_emacs_ok=yes], [ac_cv_prog_emacs_ok=no])
182    rm -f conftest.el conftest.elc])
183  AS_IF([test $ac_cv_prog_emacs_ok = no], [TEST_EMACS=no])])
184
185AC_SUBST([EMACS], [$TEST_EMACS])
186
187AM_PATH_LISPDIR
188
189
190## ------------ ##
191## Grep & sed.  ##
192## ------------ ##
193AC_PROG_GREP
194AC_PROG_EGREP
195AC_PROG_SED
196
197
198## ----- ##
199## Make. ##
200## ----- ##
201AC_PROG_MAKE_CASE_SENSITIVE
202
203
204## ------------ ##
205## Conclusion.  ##
206## ------------ ##
207
208dnl Allow maintainer rules under GNU make even in VPATH builds.  This does
209dnl not work in autoconf 2.61 or earlier, but we don't want to require
210dnl unreleased autoconf during bootstrap, hence the version test.
211dnl TODO remove the version check once we depend on autoconf 2.62.
212dnl Meanwhile, we must use a shell variable so that we bypass automake's
213dnl attempts to remove the sole copy of GNUmakefile in a non-VPATH build
214dnl during 'make distclean'.
215dnl TODO avoid the shell variable once automake is fixed.
216GNUmakefile=GNUmakefile
217m4_if(m4_version_compare([2.61a.100],
218	m4_defn([m4_PACKAGE_VERSION])), [1], [],
219      [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
220	[GNUmakefile=$GNUmakefile])])
221
222AC_CONFIG_FILES([Makefile doc/Makefile
223		 lib/Makefile lib/Autom4te/Makefile lib/autoscan/Makefile
224		 lib/m4sugar/Makefile
225		 lib/autoconf/Makefile lib/autotest/Makefile
226		 bin/Makefile])
227
228AC_OUTPUT
229# Report the state of this version of Autoconf if this is a beta.
230m4_bmatch(m4_defn([AC_PACKAGE_VERSION]), [[-a-z]],
231[    cat <<EOF
232
233You are about to use an experimental version of Autoconf.  Be sure to
234read the relevant mailing lists, most importantly <autoconf@gnu.org>.
235
236Below you will find information on the status of this version of Autoconf.
237
238EOF
239    sed -n '/^\* Status/,$p' $srcdir/BUGS
240echo
241])dnl
242