# Process this file with autoconf to produce a configure script.
AC_INIT(glist.c)

# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}

dnl Initialize automake stuff
AM_INIT_AUTOMAKE(glib, 1.0.0)

# Specify a configuration file
AM_CONFIG_HEADER(glibconfig.h)

dnl Initialize libtool
AM_PROG_LIBTOOL

dnl Initialize maintainer mode
AM_MAINTAINER_MODE

AC_CANONICAL_HOST

AC_ARG_ENABLE(debug, [  --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],,enable_debug=minimum)

AC_ARG_ENABLE(ansi, [  --enable-ansi           turn on strict ansi [default=no]],
		    , enable_ansi=no)

if test "x$enable_debug" = "xyes"; then
  test "$cflags_set" = set || CFLAGS="-g"
  CFLAGS="$CFLAGS -DG_ENABLE_DEBUG"
else
  if test "x$enable_debug" = "xno"; then
    CFLAGS="$CFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
  fi
fi

AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")

# Checks for programs.
AC_PROG_CC
AM_PROG_CC_STDC
AC_PROG_INSTALL

if eval "test x$GCC = xyes"; then
  if eval test -z \"`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`\" ; then
    CFLAGS="$CFLAGS -Wall"
  fi

  if eval "test x$enable_ansi = xyes"; then
    if eval test -z \"`echo "$CFLAGS" | grep "\-ansi" 2> /dev/null`\" ; then
      CFLAGS="$CFLAGS -ansi"
    fi

    if eval test -z \"`echo "$CFLAGS" | grep "\-pedantic" 2> /dev/null`\" ; then
      CFLAGS="$CFLAGS -pedantic"
    fi
  fi
fi

# Checks for header files.
AC_HEADER_STDC

# Checks for library functions.
AC_FUNC_VPRINTF

AC_CHECK_FUNCS(atexit on_exit)

AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(void *)

# long doubles were not used, and a portability problem 
# AC_C_LONG_DOUBLE
AC_C_CONST
AC_C_INLINE

AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H))
AC_CHECK_HEADERS(limits.h, AC_DEFINE(HAVE_LIMITS_H))
AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))

# Check for strerror, strsignal, memmove, vsnprintf, and strcasecmp functions
AC_CHECK_FUNCS(strerror strsignal memmove vsnprintf strcasecmp)

# Check for sys_errlist
AC_MSG_CHECKING(sys_errlist)
AC_TRY_LINK(, [
extern char *sys_errlist[];
extern int sys_nerr;
sys_errlist[sys_nerr-1][0] = 0;
], glib_ok=yes, glib_ok=no)
AC_MSG_RESULT($glib_ok)
if test $glib_ok = no; then
    AC_DEFINE(NO_SYS_ERRLIST)
fi

# Check for sys_siglist
AC_MSG_CHECKING(sys_siglist)
AC_TRY_LINK(, [
extern char *sys_siglist[];
sys_siglist[1][0] = 0;
], glib_ok=yes, glib_ok=no)
AC_MSG_RESULT($glib_ok)
if test $glib_ok = no; then
    AC_DEFINE(NO_SYS_SIGLIST)
fi

# Check for sys/select.h

AC_MSG_CHECKING([fd_set and sys/select])
AC_TRY_COMPILE([#include <sys/types.h>],
        [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
if test $gtk_ok = no; then
    AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
    if test $gtk_ok = yes; then
        AC_DEFINE(HAVE_SYS_SELECT_H)
    fi
fi
AC_MSG_RESULT($gtk_ok)
if test $gtk_ok = no; then
    AC_DEFINE(NO_FD_SET)
fi

# This stuff is here, only so that we can define these
# things in glibconfig.h. If ../config.h was installed
# (under some other name?) then the definitions would
# belong there. (They are only used in GDK)

# Check for wchar.h

AC_MSG_CHECKING(for wchar.h)
AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
if test $gtk_ok = yes; then
   AC_DEFINE(HAVE_WCHAR_H)
fi
AC_MSG_RESULT($gtk_ok)

# Check for wctype.h (for iswalnum)

AC_MSG_CHECKING(for wctype.h)
AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
if test $gtk_ok = yes; then
   AC_DEFINE(HAVE_WCTYPE_H)
fi
AC_MSG_RESULT($gtk_ok)

# The following is necessary for Linux libc-5.4.38

AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
AC_TRY_LINK([#include <stdlib.h>],[
#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
#  ifdef HAVE_WCTYPE_H
#    include <wctype.h>
#  else
#    ifdef HAVE_WCHAR_H
#      include <wchar.h>
#    endif
#  endif
#else
#  define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
#endif
iswalnum((wchar_t) 0);
], gtk_ok=yes, gtk_ok=no)

if test $gtk_ok = no; then
   AC_DEFINE(HAVE_BROKEN_WCTYPE)
fi
AC_MSG_RESULT($gtk_ok)

AC_OUTPUT(Makefile)
