AC_PROG_SED
AC_PROG_EGREP
-AC_CHECK_HEADERS([fcntl.h])
+if test "x$GCC" = xyes; then
+ CFLAGS="-Wall -Wextra -Wconversion $CFLAGS"
+fi
+
+AC_CHECK_HEADERS([error.h])
+AC_CHECK_HEADERS([fcntl.h],
+ [],[AC_MSG_ERROR([header is required])])
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_C_INLINE
+AX_C___ATTRIBUTE__
+
+AC_CHECK_MEMBER([struct _IO_FILE._fileno],
+ [AC_DEFINE([HAVE_STRUCT__IO_FILE__FILENO], 1,
+ [Define to 1 if `_fileno' is a member of `struct _IO_FILE'.])],
+ [],[[#include <libio.h>]])
AC_FUNC_FORK
-AC_CHECK_FUNCS([dup2 memmove setenv strdup])
+AC_CHECK_FUNCS([memmove setenv],
+ [],[AC_MSG_ERROR([function is required])])
+AC_CHECK_FUNCS([execvpe])
+
+dnl Thanks to gperftools' configure.ac (https://code.google.com/p/gperftools).
+AC_MSG_CHECKING([for __builtin_expect])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([],[return __builtin_expect(main != 0, 1)])],
+ [AC_DEFINE([HAVE___BUILTIN_EXPECT], 1,
+ [Define to 1 if the compiler supports __builtin_expect().])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([dlsym() is required])])
+AC_ARG_ENABLE([warnings],
+ [AS_HELP_STRING([--enable-warnings],[enable warning output])],
+ [if test "x$enableval" = xyes; then
+ AC_DEFINE([WARNING], 1, [Define to 1 enable warning output.])
+ fi])
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],[enable debug output])],
[if test "x$enableval" = xyes; then
- AC_DEFINE([DEBUG], 1, [Define to enable debug output.])
+ AC_DEFINE([DEBUG], 1, [Define to 1 enable debug output.])
+ dnl DEBUG implies WARNING
+ AC_DEFINE([WARNING], 1)
fi])
+dnl Used in tests/Makefile.am to build the test only if error() is available.
+AM_CONDITIONAL([HAVE_ERROR_H],[test "x$ac_cv_header_error_h" = xyes])
+AM_CONDITIONAL([HAVE_VFORK],[test "x$ac_cv_func_vfork_works" = xyes])
+
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile])
AC_OUTPUT