dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$Id$])
AC_PREREQ(2.13)dnl		dnl Minimum Autoconf version required.
AC_INIT(vpath.c)dnl		dnl A distinctive file to look for in srcdir.

AM_INIT_AUTOMAKE(make, 3.78.1)
AM_CONFIG_HEADER(config.h)

dnl Regular configure stuff

AC_CANONICAL_HOST
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_INSTALL
AC_CHECK_PROG(AR, ar, ar, ar)
AC_PROG_RANLIB
AC_PROG_CPP			dnl Later checks need this.
AC_AIX
AC_ISC_POSIX
AC_MINIX

AC_CHECK_PROG(PERL, perl, perl, perl)	dnl Needed for the test suite (only)


dnl This test must come as early as possible after the compiler configuration
dnl tests, because the choice of the file model can (in principle) affect
dnl whether functions and headers are available, whether they work, etc.
AC_SYS_LARGEFILE

AC_HEADER_STDC
AC_HEADER_DIRENT
AC_TYPE_UID_T			dnl Also does gid_t.
AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_CHECK_HEADERS(stdlib.h unistd.h limits.h sys/param.h fcntl.h string.h \
		 memory.h sys/timeb.h)
AC_PROG_CC_C_O
AM_PROG_CC_STDC
AC_C_CONST			dnl getopt needs this.
AC_HEADER_STAT

AC_STRUCT_ST_MTIM_NSEC
jm_AC_TYPE_UINTMAX_T

AC_SUBST(LIBOBJS)

AC_DEFUN(AC_CHECK_SYMBOL, [dnl
AC_MSG_CHECKING(for $1)
AC_CACHE_VAL(ac_cv_check_symbol_$1, [dnl
AC_TRY_LINK(, [extern char *sys_siglist[]; puts(*sys_siglist);],
	    ac_cv_check_symbol_$1=yes, ac_cv_check_symbol_$1=no)])
if test "$ac_cv_check_symbol_$1" = yes; then
changequote(,)dnl
  ac_tr_symbol=`echo $1 | tr '[a-z]' '[A-Z]'`
changequote([,])dnl
  AC_DEFINE_UNQUOTED(HAVE_${ac_tr_symbol})
fi
AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl

# clock_gettime is in -lposix4 in Solaris 2.6.
AC_CHECK_LIB(posix4, clock_gettime)

AC_CHECK_FUNCS(memmove strdup psignal mktemp pstat_getdynamic \
	       clock_gettime dup2 getcwd sigsetmask sigaction getgroups \
	       setlinebuf seteuid setegid setreuid setregid pipe \
	       strerror strsignal)
AC_CHECK_SYMBOL(sys_siglist)
AC_FUNC_ALLOCA
AC_FUNC_VFORK
AC_FUNC_VPRINTF
AC_FUNC_STRCOLL
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_SETVBUF_REVERSED
AC_FUNC_SELECT

AC_CHECK_LIB(kstat, kstat_open) dnl _Must_ come before AC_FUNC_GETLOADAVG.
AC_FUNC_GETLOADAVG

# Check out the wait reality.
AC_CHECK_HEADERS(sys/wait.h)
AC_CHECK_FUNCS(waitpid wait3)
AC_MSG_CHECKING(for union wait)
AC_CACHE_VAL(make_cv_union_wait, [dnl
AC_TRY_LINK([#include <sys/types.h>
#include <sys/wait.h>],
	    [union wait status; int pid; pid = wait (&status);
#ifdef WEXITSTATUS
/* Some POSIXoid systems have both the new-style macros and the old
   union wait type, and they do not work together.  If union wait
   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
if (WEXITSTATUS (status) != 0) pid = -1;
#ifdef WTERMSIG
/* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
-- blow chunks here --
#endif
#endif
#ifdef HAVE_WAITPID
/* Make sure union wait works with waitpid.  */
pid = waitpid (-1, &status, 0);
#endif
],
	    [make_cv_union_wait=yes], [make_cv_union_wait=no])])
if test "$make_cv_union_wait" = yes; then
  AC_DEFINE(HAVE_UNION_WAIT)
fi
AC_MSG_RESULT($make_cv_union_wait)

AC_DECL_SYS_SIGLIST

# The presence of the following is not meant to imply
# that make necessarily works on those systems.
AC_CHECK_LIB(sun, getpwnam)

AC_SUBST(REMOTE) REMOTE=stub
make_try_customs=no
AC_ARG_WITH(customs,
[  --with-customs=DIR      Enable remote jobs via Customs--see README.customs],
[case "$withval" in
  n|no) ;;
  *) make_cppflags="$CPPFLAGS"
     case "$withval" in
       y|ye|yes) ;;
       *) CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
	  make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
     esac
     CF_NETLIBS
     AC_CHECK_HEADER(customs.h,
	             REMOTE=cstms
                       LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags",
		     with_customs=no
                       CPPFLAGS="$make_cppflags" make_badcust=yes)
     ;;
esac])

dnl See if we can handle the job server feature, and if the user wants it.

AC_ARG_ENABLE(job-server,
  [  --disable-job-server    Disallow recursive make communication during -jN],
  [make_cv_job_server="$enableval" user_job_server="$enableval"],
  [make_cv_job_server="yes"])

has_wait_nohang=yes
case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
  no/no) has_wait_nohang=no ;;
esac

case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$has_wait_nohang/$make_cv_job_server" in
  yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER) ;;
esac

dnl Allow building with dmalloc

AC_ARG_ENABLE(dmalloc,
  [  --enable-dmalloc        Enable support for the dmalloc debugging library],
  [make_cv_dmalloc="$enableval"],
  [make_cv_dmalloc="no"])

case "$make_cv_dmalloc" in
  yes) AC_CHECK_HEADERS(dmalloc.h)
       AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
       CPPFLAGS="$CPPFLAGS -DDMALLOC_FUNC_CHECK" ;;
esac

AC_CACHE_CHECK(for location of SCCS get command, make_cv_path_sccs_get, [
if test -f /usr/sccs/get; then
  make_cv_path_sccs_get=/usr/sccs/get
else
  make_cv_path_sccs_get=get
fi])
AC_DEFINE_UNQUOTED(SCCS_GET,["$make_cv_path_sccs_get"])

ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
   test -f s.conftest; then
  # We successfully created an SCCS file.
  AC_CACHE_CHECK(if SCCS get command understands -G, make_cv_sys_get_minus_G, [
    if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
       test -f conftoast; then
       make_cv_sys_get_minus_G=yes
    else
       make_cv_sys_get_minus_G=no
    fi])
  case "$make_cv_sys_get_minus_G" in
    yes) AC_DEFINE(SCCS_GET_MINUS_G);;
  esac
fi
rm -f s.conftest conftoast

AC_MSG_CHECKING(if system libc has GNU glob)
AC_CACHE_VAL(make_cv_sys_gnu_glob, [
 AC_TRY_CPP([
#include <features.h>
#include <glob.h>
#include <fnmatch.h>

#define GLOB_INTERFACE_VERSION 1
#if defined _LIBC || !defined __GNU_LIBRARY__ || __GNU_LIBRARY__ <= 1
# error no gnu glob
#else
# include <gnu-versions.h>
# if _GNU_GLOB_INTERFACE_VERSION != GLOB_INTERFACE_VERSION
#  error no gnu glob
# endif
#endif
 ], make_cv_sys_gnu_glob=yes, make_cv_sys_gnu_glob=no)])
case "$make_cv_sys_gnu_glob" in
  yes) AC_MSG_RESULT(yes) ;;
  no)  AC_MSG_RESULT([no; using local copy])
       CPPFLAGS="$CPPFLAGS -I$srcdir/glob"
       AC_SUBST(GLOBLIB) GLOBLIB=glob/libglob.a
       ;;
esac

AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.])
MAKE_HOST="$host"
AC_SUBST(MAKE_HOST)

MAINT_MAKEFILE=/dev/null
if test -r "$srcdir/maintMakefile"; then
  MAINT_MAKEFILE="$srcdir/maintMakefile"
fi
AC_SUBST_FILE(MAINT_MAKEFILE)

AC_OUTPUT(build.sh Makefile glob/Makefile)

dnl If we don't yet have build.sh.in, build.sh is a bogus 0-length file
dnl so remove it.
dnl Can't do this because then remote builds with build.sh don't work.
dnl test -f build.sh.in || rm -f build.sh


case "$make_badcust" in
  yes) echo
       echo "WARNING: --with-customs specified but no customs.h could be found;"
       echo "         disabling Customs support."
       echo ;;
esac

case "$with_customs" in
  ""|n|no|y|ye|yes) ;;
  *) if test -f "$with_customs/lib/libcustoms.a"; then
       :
     else
       echo
       echo "WARNING: \`$with_customs/lib' does not appear to contain the"
       echo "         Customs library.  You must build and install Customs"
       echo "         before compiling GNU make."
       echo
     fi ;;
esac

case "$has_wait_nohang" in
  no) echo
      echo "WARNING: Your system has neither waitpid() nor wait3()."
      echo "         Without one of these, signal handling is unreliable."
      echo "         You should be aware that running GNU make with -j"
      echo "         could result in erratic behavior."
      echo ;;
esac

case "$make_cv_job_server/$user_job_server" in
  no/yes) echo
	  echo "WARNING: Make job server requires a POSIX-ish system that"
	  echo "         supports the pipe(), sigaction(), and either"
          echo "         waitpid() or wait3() functions.  Your system doesn't"
	  echo "         appear to provide one or more of those."
	  echo "         Disabling job server support."
          echo ;;
esac

dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl compile-command: "make configure config.h.in"
dnl End:
