Don't declare calloc() and realloc() if not necessary.
authorJesse Thilo <jthilo@gnu.org>
Tue, 13 Apr 1999 19:53:42 +0000 (19:53 +0000)
committerJesse Thilo <jthilo@gnu.org>
Tue, 13 Apr 1999 19:53:42 +0000 (19:53 +0000)
acconfig.h
acinclude.m4
configure.in
src/allocate.c

index fd8cc09..ccbb40c 100644 (file)
 
 /* The location of the semantic parser (bison.hairy).  */
 #undef XPFILE1
+
+/* Define as 1 if realloc must be declared even if <stdlib.h> is
+   included.  */
+#undef NEED_DECLARATION_REALLOC
+
+/* Define as 1 if calloc must be declared even if <stdlib.h> is
+   included.  */
+#undef NEED_DECLARATION_CALLOC
 @BOTTOM@
 
 #if defined(PROTOTYPES) || defined(__cplusplus)
index 6d72b70..8c909d2 100644 (file)
@@ -11,3 +11,50 @@ AC_DEFUN(BISON_DEFINE_FILE, [
         )`
         AC_DEFINE_UNQUOTED($1, "$ac_expanded")
 ])
+
+dnl See whether we need a declaration for a function.
+dnl BISON_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
+AC_DEFUN(BISON_NEED_DECLARATION,
+[AC_MSG_CHECKING([whether $1 must be declared])
+AC_CACHE_VAL(bison_cv_decl_needed_$1,
+[AC_TRY_COMPILE([
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifndef HAVE_RINDEX
+#define rindex strrchr
+#endif
+#ifndef HAVE_INDEX
+#define index strchr
+#endif
+$2],
+[char *(*pfn) = (char *(*)) $1],
+eval "bison_cv_decl_needed_$1=no", eval "bison_cv_decl_needed_$1=yes")])
+if eval "test \"`echo '$bison_cv_decl_needed_'$1`\" = yes"; then
+  AC_MSG_RESULT(yes)
+  bison_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  AC_DEFINE_UNQUOTED($bison_tr_decl)
+else
+  AC_MSG_RESULT(no)
+fi
+])dnl
+
+dnl Check multiple functions to see whether each needs a declaration.
+dnl BISON_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
+AC_DEFUN(BISON_NEED_DECLARATIONS,
+[for ac_func in $1
+do
+BISON_NEED_DECLARATION($ac_func, $2)
+done
+])
index ab54e81..2cd7d67 100644 (file)
@@ -31,6 +31,7 @@ AM_C_PROTOTYPES
 dnl Checks for library functions.
 AC_FUNC_ALLOCA
 AC_CHECK_FUNCS(mkstemp setlocale)
+BISON_NEED_DECLARATIONS(calloc realloc)
 
 AM_GNU_GETTEXT
 
index 1175e79..fdc8385 100644 (file)
@@ -22,13 +22,21 @@ Boston, MA 02111-1307, USA.  */
 #include <stdio.h>
 #include "system.h"
 
+#ifdef NEED_DECLARATION_CALLOC
 #if defined (__STDC__) || defined (_MSC_VER)
 extern void *calloc ();
-extern void *realloc ();
 #else
 extern char *calloc ();
+#endif
+#endif  /* NEED_DECLARATION_CALLOC */
+
+#ifdef NEED_DECLARATION_REALLOC
+#if defined (__STDC__) || defined (_MSC_VER)
+extern void *realloc ();
+#else
 extern char *realloc ();
 #endif
+#endif  /* NEED_DECLARATION_REALLOC */
 
 char *xmalloc PARAMS((register unsigned));
 char *xrealloc PARAMS((register char *, register unsigned));