# Configuration for grep
#
# Alain Magloire <alainm@gnu.org>
# Bernhard Rosenkraenzer <bero@redhat.com>
#
dnl Process this file with autoconf to produce a configure script
AC_INIT(src/grep.c)
AC_DEFINE(GREP, 1, [We are building grep])
AC_PREREQ(2.53)

dnl Automake stuff.
AM_INIT_AUTOMAKE(grep, 2.5.1)
AM_CONFIG_HEADER(config.h:config.hin)

dnl Check for arguments
AC_ARG_ENABLE(perl-regexp,
 [  --disable-perl-regexp           disable perl-regexp],
 [case "${enableval}" in
  yes) testpcre=yes ;;
  no)  testpcre=no ;;
  *)   AC_MSG_ERROR(bad value ${enableval} for --disable-perl-regexp) ;;
 esac],[testpcre=yes])

dnl Checks for programs.
AC_CANONICAL_HOST
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_RANLIB

dnl Checks for typedefs, structures, and compiler characteristics.
AC_SYS_LARGEFILE
AM_C_PROTOTYPES
AC_TYPE_SIZE_T
AC_CHECK_TYPE(ssize_t, int)
AC_C_CONST
jm_AC_TYPE_UINTMAX_T

dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(string.h stdlib.h sys/param.h memory.h unistd.h libintl.h)
AC_CHECK_HEADERS(wctype.h wchar.h)
AC_HEADER_DIRENT
AC_HEADER_STAT
AC_MBSTATE_T

dnl Checks for functions.
AC_FUNC_ALLOCA
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_MMAP

dnl getpagesize is checked for by AC_FUNC_MMAP.
AC_CHECK_FUNCS(btowc isascii memmove setmode strerror wctype mbrtowc)
AC_REPLACE_FUNCS(memchr stpcpy strtoul atexit fnmatch)
jm_AC_PREREQ_XSTRTOUMAX

dnl Replace this with jm_CHECK_DECLS once autoconf 2.15 is out.
jm_CHECK_DECLARATIONS([#include <stdlib.h>], [strtoul strtoull])
test $jm_cv_func_decl_strtoul != yes
AC_DEFINE_UNQUOTED([HAVE_DECL_STRTOUL], $?,
  [Define if <stdlib.h> declares strtoul.])
test $jm_cv_func_decl_strtoull != yes
AC_DEFINE_UNQUOTED([HAVE_DECL_STRTOULL], $?,
  [Define if <stdlib.h> declares strtoull.])

dnl for VC++
case "$ac_cv_prog_CC" in
 cl*)  AC_DEFINE([alloca], _alloca, [Define if your compiler is broken]) ;;
 *)    ;;
esac

dnl I18N feature
ALL_LINGUAS="cs de el eo es et fr gl hr id it ja ko nl no pl pt_BR ru sl sv"
AM_GNU_GETTEXT

dnl DOS file name convention
dnl sets HAVE_DOS_FILE_NAMES
AC_DOSFILE

dnl check for the environ separator
dnl sets SEP
AM_SEP

dnl OS specifics
dnl sets {EXE,OBJ}EXT
AC_EXEEXT
dnl Invoke the (capitalized) ac_objext macro without spelling its name.
dnl This works around a bug in automake 1.4 with ansi2knr.
dnl Automake looks for (capitalized) ac_objext by grepping for it,
dnl so it won't find it in this file.
ifelse(,, [AC][_OBJEXT])

dnl some folks ask for this, that's fine by me
dnl hope they know what they're doing ...
dnl if glibc2 regex is not included

dnl Many GNU/Linux people have different
dnl glibc versions with buggy regex.
jm_INCLUDED_REGEX(lib/regex.c)

dnl Many people on non-GNU/Linux systems don't have getopt
AC_CHECK_FUNC(getopt_long,
  [
    AC_ARG_WITH(included-getopt,
      [  --with-included-getopt  Use the included getopt rather than glibc's],
      with_getopt=$withval,
      with_getopt=$no)
    if test "x$with_getopt" = xyes; then
      AC_LIBOBJ(getopt)
      AC_LIBOBJ(getopt1)
    fi
  ],
  [
    AC_LIBOBJ(getopt)
    AC_LIBOBJ(getopt1)
  ])

dnl Some installers want to be informed if we do not use our regex.
dnl For example, if the host platform uses dynamic linking and the installer
dnl knows that the grep may be invoked on other hosts with buggy libraries,
dnl then the installer should configure --with-included-regex.
if test "$jm_with_regex" = no; then
	AC_MSG_WARN(Included lib/regex.c not used)
fi

dnl These are the prerequisite macros for GNU's error.c file.
AC_FUNC_STRERROR_R
jm_PREREQ_ERROR

dnl Determine whether malloc accepts 0 as its argument.
dnl If it doesn't, arrange to use the replacement function.
jm_FUNC_MALLOC
jm_FUNC_REALLOC

# support for pcre
if test x"$testpcre" = x"yes"; then
	if pcre-config --cflags >/dev/null 2>&1; then
		CFLAGS="$CFLAGS `pcre-config --cflags`"
		LIBS="$LIBS `pcre-config --libs`"
	fi
	AC_CHECK_LIB(pcre, pcre_exec)
fi

AC_OUTPUT(Makefile lib/Makefile lib/posix/Makefile src/Makefile tests/Makefile po/Makefile.in intl/Makefile doc/Makefile m4/Makefile vms/Makefile bootstrap/Makefile, [sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile; echo timestamp > stamp-h])
