| # Check to make sure that the build environment is sane. -*- Autoconf -*- |
| |
| # Copyright (C) 1996-2018 Free Software Foundation, Inc. |
| # |
| # This file is free software; the Free Software Foundation |
| # gives unlimited permission to copy and/or distribute it, |
| # with or without modifications, as long as this notice is preserved. |
| |
| # AM_SANITY_CHECK |
| # --------------- |
| AC_DEFUN([AM_SANITY_CHECK], |
| [AC_MSG_CHECKING([whether build environment is sane]) |
| # Reject unsafe characters in $srcdir or the absolute working directory |
| # name. Accept space and tab only in the latter. |
| am_lf=' |
| ' |
| case `pwd` in |
| *[[\\\"\#\$\&\'\`$am_lf]]*) |
| AC_MSG_ERROR([unsafe absolute working directory name]);; |
| esac |
| case $srcdir in |
| *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) |
| AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; |
| esac |
| |
| # Do 'set' in a subshell so we don't clobber the current shell's |
| # arguments. Must try -L first in case configure is actually a |
| # symlink; some systems play weird games with the mod time of symlinks |
| # (eg FreeBSD returns the mod time of the symlink's containing |
| # directory). |
| if ( |
| am_has_slept=no |
| for am_try in 1 2; do |
| echo "timestamp, slept: $am_has_slept" > conftest.file |
| set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` |
| if test "$[*]" = "X"; then |
| # -L didn't work. |
| set X `ls -t "$srcdir/configure" conftest.file` |
| fi |
| if test "$[*]" != "X $srcdir/configure conftest.file" \ |
| && test "$[*]" != "X conftest.file $srcdir/configure"; then |
| |
| # If neither matched, then we have a broken ls. This can happen |
| # if, for instance, CONFIG_SHELL is bash and it inherits a |
| # broken ls alias from the environment. This has actually |
| # happened. Such a system could not be considered "sane". |
| AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken |
| alias in your environment]) |
| fi |
| if test "$[2]" = conftest.file || test $am_try -eq 2; then |
| break |
| fi |
| # Just in case. |
| sleep 1 |
| am_has_slept=yes |
| done |
| test "$[2]" = conftest.file |
| ) |
| then |
| # Ok. |
| : |
| else |
| AC_MSG_ERROR([newly created file is older than distributed files! |
| Check your system clock]) |
| fi |
| AC_MSG_RESULT([yes]) |
| # If we didn't sleep, we still need to ensure time stamps of config.status and |
| # generated files are strictly newer. |
| am_sleep_pid= |
| if grep 'slept: no' conftest.file >/dev/null 2>&1; then |
| ( sleep 1 ) & |
| am_sleep_pid=$! |
| fi |
| AC_CONFIG_COMMANDS_PRE( |
| [AC_MSG_CHECKING([that generated files are newer than configure]) |
| if test -n "$am_sleep_pid"; then |
| # Hide warnings about reused PIDs. |
| wait $am_sleep_pid 2>/dev/null |
| fi |
| AC_MSG_RESULT([done])]) |
| rm -f conftest.file |
| ]) |