configure.ac 7.2 KB

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