Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

#                                                       -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

# Copyright (C) 1992-1995, 1999-2012 Free Software Foundation, Inc.

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# We need AC_CONFIG_TESTDIR, AC_PROG_SED, AC_PROG_GREP.
AC_PREREQ([2.60])

AC_INIT([GNU Autoconf],
	m4_esyscmd([build-aux/git-version-gen .tarball-version]),
	[bug-autoconf@gnu.org])
AC_CONFIG_SRCDIR([lib/autoconf/autoconf.m4])

AC_CONFIG_AUX_DIR([build-aux])

AM_INIT_AUTOMAKE([1.11 dist-xz readme-alpha no-texinfo.tex std-options])

AB_INIT

# We use `/bin/sh -n script' to check that there are no syntax errors
# in the scripts.  Although incredible, there are /bin/sh that go into
# endless loops with `-n', e.g., SunOS's:
#
#   $ uname -a
#   SunOS ondine 4.1.3 2 sun4m unknown
#   $ cat endless.sh
#   while false
#   do
#     :
#   done
#   exit 0
#   $ time sh endless.sh
#   sh endless.sh  0,02s user 0,03s system 78% cpu 0,064 total
#   $ time sh -nx endless.sh
#   ^Csh -nx endless.sh  3,67s user 0,03s system 63% cpu 5,868 total
#
# Also, some implementations of /bin/sh (e.g., Solaris 8) are soooo slow
# that they are unusable on large scripts like our testsuite.

# So before using `/bin/sh -n' to check our scripts, we first check
# that `/bin/sh -n' is known to not have these problems.

AC_CACHE_CHECK([whether /bin/sh -n is known to work], [ac_cv_sh_n_works],
[if (
    unset BASH_VERSION ZSH_VERSION
    /bin/sh -c '
      test -n "${BASH_VERSION+set}" || # Bash
      test -n "${KSH_VERSION+set}" || # pdksh
      test -n "${ZSH_VERSION+set}" || # zsh
      test -n "${.sh.version}" # ksh93; put this last since its syntax is dodgy
    '
  ) 2>/dev/null
then ac_cv_sh_n_works=yes
else ac_cv_sh_n_works=no
fi
])
AC_SUBST([ac_cv_sh_n_works])

AC_MSG_CHECKING([for characters that cannot appear in file names])
AC_CACHE_VAL([ac_cv_unsupported_fs_chars],
[ac_cv_unsupported_fs_chars=
for c in '\\' \" '<' '>' '*' '?' '|'
do
  touch "conftest.t${c}t" 2>/dev/null
  test -f "conftest.t${c}t" && rm -f "conftest.t${c}t" && continue
  # $c cannot be used in a file name.
  ac_cv_unsupported_fs_chars=$ac_cv_unsupported_fs_chars$c
done
])
if test -n "$ac_cv_unsupported_fs_chars"; then
  AC_MSG_RESULT([$ac_cv_unsupported_fs_chars])
else
  AC_MSG_RESULT([none])
fi

AC_SUBST([ac_cv_unsupported_fs_chars])

AC_CACHE_CHECK([whether directories can have trailing spaces],
	       [ac_cv_dir_trailing_space],
[rm -rf 'conftest.d ' && mkdir 'conftest.d ' && touch 'conftest.d /tfile' 2>/dev/null
stat=$?
rm -rf 'conftest.d '
case $stat$? in #(
   00) ac_cv_dir_trailing_space=yes ;; #(
   *) ac_cv_dir_trailing_space=no ;;
esac
])
AC_SUBST([ac_cv_dir_trailing_space])

# Initialize the test suite.
AC_CONFIG_TESTDIR([tests])
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
AC_PATH_PROG([EXPR], [expr])


## ---- ##
## M4.  ##
## ---- ##

# We use an absolute name for GNU m4 so even if users have another m4 first in
# their path, the installer can configure with a path that has GNU m4
# on it and get that path embedded in the installed autoconf and
# autoheader scripts.
AC_PROG_GNU_M4

## ----------- ##
## Man pages.  ##
## ----------- ##

AC_CONFIG_FILES([man/Makefile])
AM_MISSING_PROG([HELP2MAN], [help2man])


## ------ ##
## Perl.  ##
## ------ ##

# We use an absolute name for perl so the #! line in autoscan will work.
AC_PATH_PROG([PERL], [perl], [no])
AC_SUBST([PERL])dnl
if test "$PERL" = no; then
  AC_MSG_ERROR([perl is not found])
fi
$PERL -e 'require 5.006;' || {
   AC_MSG_ERROR([Perl 5.006 or better is required])
}

# Find out whether the system supports flock
# Note this test does not try to find out whether it works with this
# particular file system.  It merely avoids us running flock on systems
# where that bails out.
AC_CACHE_CHECK([whether $PERL Fcntl::flock is implemented],
  [ac_cv_perl_flock_implemented],
  [echo lock me > conftest.fil
   if $PERL -e 'use Fcntl ":flock"; flock("conftest.fil", LOCK_EX); 1;'; then
     ac_cv_perl_flock_implemented=yes
   else
     ac_cv_perl_flock_implemented=no
   fi
   rm -f conftest.fil
  ])
AC_SUBST([PERL_FLOCK], [$ac_cv_perl_flock_implemented])


## ------- ##
## Emacs.  ##
## ------- ##

AC_CONFIG_FILES([lib/emacs/Makefile])
TEST_EMACS=$EMACS
test x"$TEST_EMACS" = xt && TEST_EMACS=
AC_CHECK_PROGS([TEST_EMACS], [emacs xemacs], [no])

# autoconf-mode.el and autotest-mode.el do not work with older version of
# Emacs (i.e. 18.x.x).  During byte-compilation, Emacs complains:
# "Variable (broken nil) seen on pass 2 of byte compiler but not pass 1"
# We detect this problem here.
AS_IF([test "$TEST_EMACS" != no],
  [AC_CACHE_CHECK([whether $TEST_EMACS is sufficiently recent],
    [ac_cv_prog_emacs_ok],
    [# Note: The quoted "EOF" is intentional.  It protects the ` in the text.
    cat >conftest.el << "EOF"
      (defvar broken)
      (defun broken-mode () (setq broken-defaults `(broken nil)))
EOF
    AS_IF([AC_RUN_LOG(
      [$TEST_EMACS -batch -q -f batch-byte-compile conftest.el 1>&2])],
      [ac_cv_prog_emacs_ok=yes], [ac_cv_prog_emacs_ok=no])
    rm -f conftest.el conftest.elc])
  AS_IF([test $ac_cv_prog_emacs_ok = no], [TEST_EMACS=no])])

AC_SUBST([EMACS], [$TEST_EMACS])

AM_PATH_LISPDIR


## ------------ ##
## Grep & sed.  ##
## ------------ ##
AC_PROG_GREP
AC_PROG_EGREP
AC_PROG_SED


## ----- ##
## Make. ##
## ----- ##
AC_PROG_MAKE_CASE_SENSITIVE


## ------------ ##
## Conclusion.  ##
## ------------ ##

dnl Allow maintainer rules under GNU make even in VPATH builds.  This does
dnl not work in autoconf 2.61 or earlier, but we don't want to require
dnl unreleased autoconf during bootstrap, hence the version test.
dnl TODO remove the version check once we depend on autoconf 2.62.
dnl Meanwhile, we must use a shell variable so that we bypass automake's
dnl attempts to remove the sole copy of GNUmakefile in a non-VPATH build
dnl during 'make distclean'.
dnl TODO avoid the shell variable once automake is fixed.
GNUmakefile=GNUmakefile
m4_if(m4_version_compare([2.61a.100],
	m4_defn([m4_PACKAGE_VERSION])), [1], [],
      [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
	[GNUmakefile=$GNUmakefile])])

AC_CONFIG_FILES([Makefile doc/Makefile
		 lib/Makefile lib/Autom4te/Makefile lib/autoscan/Makefile
		 lib/m4sugar/Makefile
		 lib/autoconf/Makefile lib/autotest/Makefile
		 bin/Makefile])

AC_OUTPUT
# Report the state of this version of Autoconf if this is a beta.
m4_bmatch(m4_defn([AC_PACKAGE_VERSION]), [[-a-z]],
[    cat <<EOF

You are about to use an experimental version of Autoconf.  Be sure to
read the relevant mailing lists, most importantly <autoconf@gnu.org>.

Below you will find information on the status of this version of Autoconf.

EOF
    sed -n '/^\* Status/,$p' $srcdir/BUGS
echo
])dnl