Add alloca() discovery to configure.ac

The build failed on FreeBSD as there is no alloca.h.  This patch is
lifted from the autoconf documentation.
This commit is contained in:
Doug Luce authored and Nicolas Williams committed 2015-06-18 19:19:15 -05:00
1 parent 0b42457929
commit 3cbefde376
3 files changed
+34 -5

No files matched your search

+15 -4
View File
@@ -1,10 +1,22 @@
#define _BSD_SOURCE #define _BSD_SOURCE
#define _XOPEN_SOURCE #define _XOPEN_SOURCE
#include <sys/time.h> #include <sys/time.h>
#ifdef WIN32 #include <stdlib.h>
#include <malloc.h> #include <stddef.h>
#else #ifdef HAVE_ALLOCA_H
# include <alloca.h> # include <alloca.h>
#elif !defined alloca
# ifdef __GNUC__
# define alloca __builtin_alloca
# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# elif !defined HAVE_ALLOCA
# ifdef __cplusplus
extern "C"
# endif
void *alloca (size_t);
# endif
#endif #endif
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
@@ -13,7 +25,6 @@
#ifdef HAVE_ONIGURUMA #ifdef HAVE_ONIGURUMA
#include <oniguruma.h> #include <oniguruma.h>
#endif #endif
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include "builtin.h" #include "builtin.h"
+2
View File
@@ -123,6 +123,8 @@ AM_CONDITIONAL([ENABLE_DOCS], [test "x$enable_docs" != xno])
AM_CONDITIONAL([ENABLE_ERROR_INJECTION], [test "x$enable_error_injection" = xyes]) AM_CONDITIONAL([ENABLE_ERROR_INJECTION], [test "x$enable_error_injection" = xyes])
AM_CONDITIONAL([ENABLE_ALL_STATIC], [test "x$enable_all_static" = xyes]) AM_CONDITIONAL([ENABLE_ALL_STATIC], [test "x$enable_all_static" = xyes])
AC_FUNC_ALLOCA
AC_FIND_FUNC([isatty], [c], [#include <unistd.h>], [0]) AC_FIND_FUNC([isatty], [c], [#include <unistd.h>], [0])
AC_FIND_FUNC([_isatty], [c], [#include <io.h>], [0]) AC_FIND_FUNC([_isatty], [c], [#include <io.h>], [0])
AC_FIND_FUNC([strptime], [c], [#include <time.h>], [0, 0, 0]) AC_FIND_FUNC([strptime], [c], [#include <time.h>], [0, 0, 0])
+17 -1
View File
@@ -10,8 +10,24 @@
#include <fcntl.h> #include <fcntl.h>
#include <limits.h> #include <limits.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h>
#include <stddef.h>
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
#elif !defined alloca
# ifdef __GNUC__
# define alloca __builtin_alloca
# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# elif !defined HAVE_ALLOCA
# ifdef __cplusplus
extern "C"
# endif
void *alloca (size_t);
# endif
#endif
#ifndef WIN32 #ifndef WIN32
#include <pwd.h> #include <pwd.h>
#endif #endif