]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
1999-10-31 Ben Elliston <bje@cygnus.com>
authorBen Elliston <bje+keyword+gnu.7caf74@air.net.au>
Sun, 31 Oct 1999 00:56:04 +0000 (00:56 +0000)
committerBen Elliston <bje+keyword+gnu.7caf74@air.net.au>
Sun, 31 Oct 1999 00:56:04 +0000 (00:56 +0000)
* acspecific.m4 (AC_PROG_CC_STDC, AC_C_PROTOTYPES): Inherit from
Automake. From Franc,ois Pinard.
* autoconf.texi (Particular Programs): Document AC_PROG_CC_STDC.
(C Compiler Characteristics): Document AC_C_PROTOTYPES.

ChangeLog
NEWS
TODO
acspecific.m4
autoconf.texi
doc/autoconf.texi
lib/autoconf/specific.m4

index 70cb513bd99bfcd9a748c163595ace983ab96407..6eefbb9c725302ffc05e43dee0c830e9906655da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 1999-10-31  Ben Elliston  <bje@cygnus.com>
 
+       * acspecific.m4 (AC_PROG_CC_STDC, AC_C_PROTOTYPES): Inherit from
+       Automake. From Franc,ois Pinard.
+       * autoconf.texi (Particular Programs): Document AC_PROG_CC_STDC.
+       (C Compiler Characteristics): Document AC_C_PROTOTYPES.
+
        * testsuite/autoconf.s/defines.exp: Changed `fail' and `pass' in
        `xfail' and `xpass'. The testsuite checks that acconfig.h
        templates the AC_DEFINEs. Since we no longer rely on acconfig.h,
@@ -10,8 +15,6 @@
 
 1999-10-27  Ben Elliston  <bje@cygnus.com>
 
-       * THANKS: Updated Alexandre's address.
-
        * autoconf.texi (Generic Programs): @defmac for AC_PATH_TOOL may
        not span multiple lines.
 
diff --git a/NEWS b/NEWS
index 9b9a7c641093aeb1768ef60fc0d6422611190b5c..3f2ec858f52127c55e0c7081029bbd3dd2230d18 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,10 @@ Major changes in release 2.15:
     Document and ask for the registration of an envvar.
   - AC_CONFIG_LINKS
     Replaces the now obsolete AC_LINK_FILES.
+  - AC_PROG_CC_STDC
+    Checks if the compiler supports ISO C, included when needs special
+    options.
+  
 * Environment variables are kept when reconfiguring.
   The previous scheme to set envvar before running configure was
     ENV=VAL ./configure
diff --git a/TODO b/TODO
index 915f37cbc56fe325e96110b977ba763f8aa0f6e6..e929843b35891470789273d04f342a80403a0fb7 100644 (file)
--- a/TODO
+++ b/TODO
@@ -28,6 +28,8 @@ so that we  can run ./config.status name-of-the command.
 ** Move AM_PROG_CC_STDC into Autoconf.
 Autoconf should provide the means to determine the ANSIsm of the
 compiler, not Automake.
+I've done it, but this is the last opportunity to change this macro
+name: AC_PROG_CC_ISO?  Or even more specific for the ISO version?
 
 ** Provide means to provides commands to run before AC_OUTPUT.
 This is what is needed for LTLIBOBJS and others.
index b25c5a379f1c75b30654fd1888fa3a9780c957ee..1401d9c57a5732e650e4abf8841b2cf0e7cfd3be 100644 (file)
@@ -203,6 +203,7 @@ else
 fi
 ])
 
+
 dnl AC_PROG_CC_WORKS
 dnl ----------------
 AC_DEFUN(AC_PROG_CC_WORKS,
@@ -221,6 +222,7 @@ AC_MSG_RESULT($ac_cv_prog_cc_cross)
 cross_compiling=$ac_cv_prog_cc_cross
 ])
 
+
 dnl AC_PROG_CXX_WORKS
 dnl -----------------
 AC_DEFUN(AC_PROG_CXX_WORKS,
@@ -239,6 +241,7 @@ AC_MSG_RESULT($ac_cv_prog_cxx_cross)
 cross_compiling=$ac_cv_prog_cxx_cross
 ])
 
+
 dnl AC_PROG_F77_WORKS
 dnl -----------------
 dnl Test whether the Fortran 77 compiler can compile and link a trivial
@@ -263,6 +266,7 @@ AC_MSG_RESULT($ac_cv_prog_f77_cross)
 cross_compiling=$ac_cv_prog_f77_cross
 ])
 
+
 dnl AC_PROG_CC_GNU
 dnl --------------
 AC_DEFUN(AC_PROG_CC_GNU,
@@ -279,6 +283,7 @@ else
   ac_cv_prog_gcc=no
 fi])])
 
+
 dnl AC_PROG_CXX_GNU
 dnl ---------------
 AC_DEFUN(AC_PROG_CXX_GNU,
@@ -295,6 +300,7 @@ else
   ac_cv_prog_gxx=no
 fi])])
 
+
 dnl AC_PROG_F77_GNU
 dnl ---------------
 dnl Test whether for Fortran 77 compiler is `g77' (the GNU Fortran 77
@@ -360,6 +366,9 @@ fi
 rm -f conftest*
 ])])
 
+
+dnl AC_PROG_GCC_TRADITIONAL
+dnl -----------------------
 AC_DEFUN(AC_PROG_GCC_TRADITIONAL,
 [AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_PROG_CPP])dnl
@@ -380,7 +389,8 @@ Autoconf TCGETA],
     CC="$CC -traditional"
   fi
 fi
-])
+])dnl AC_PROG_GCC_TRADITIONAL
+
 
 dnl AC_PROG_CC_C_O
 dnl --------------
@@ -434,14 +444,14 @@ fi
 ])dnl AC_PROG_CC_C_O
 
 
+dnl AC_PROG_F77_C_O
+dnl ---------------
 dnl Test if the Fortran 77 compiler accepts the options `-c' and `-o'
 dnl simultaneously, and define `F77_NO_MINUS_C_MINUS_O' if it does not.
 dnl
 dnl The usefulness of this macro is questionable, as I can't really see
 dnl why anyone would use it.  The only reason I include it is for
 dnl completeness, since a similar test exists for the C compiler.
-dnl
-dnl AC_PROG_F77_C_O
 AC_DEFUN(AC_PROG_F77_C_O,
 [AC_BEFORE([$0], [AC_PROG_F77])dnl
 AC_MSG_CHECKING(whether $F77 understand -c and -o together)
@@ -472,7 +482,87 @@ else
   AC_DEFINE(F77_NO_MINUS_C_MINUS_O, 1,
             [Define if your Fortran 77 compiler doesn't accept -c and -o together.])
 fi
+])dnl AC_PROG_F77_C_O
+
+
+dnl AC_PROG_CC_STDC
+dnl ---------------
+dnl If the C compiler in not in ANSI C mode by default, try to add an
+dnl option to output variable @code{CC} to make it so.  This macro tries
+dnl various options that select ANSI C on some system or another.  It
+dnl considers the compiler to be in ANSI C mode if it handles function
+dnl prototypes correctly.
+AC_DEFUN(AC_PROG_CC_STDC,
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_BEFORE([$0], [AC_C_INLINE])dnl
+AC_BEFORE([$0], [AC_C_CONST])dnl
+dnl Force this before AC_PROG_CPP.  Some cpp's, eg on HPUX, require
+dnl a magic option to avoid problems with ANSI preprocessor commands
+dnl like #elif.
+dnl FIXME: can't do this because then AC_AIX won't work due to a
+dnl circular dependency.
+dnl AC_BEFORE([$0], [AC_PROG_CPP])
+AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
+AC_CACHE_VAL(ac_cv_prog_cc_stdc,
+[ac_cv_prog_cc_stdc=no
+ac_save_CC="$CC"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  AC_TRY_COMPILE(
+[#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+], [
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+],
+[ac_cv_prog_cc_stdc="$ac_arg"; break])
+done
+CC="$ac_save_CC"
 ])
+if test -z "$ac_cv_prog_cc_stdc"; then
+  AC_MSG_RESULT([none needed])
+else
+  AC_MSG_RESULT($ac_cv_prog_cc_stdc)
+fi
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno) ;;
+  *) CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+])dnl AC_PROG_CC_STDC
+
 
 dnl AC_PROG_MAKE_SET
 dnl ----------------
@@ -2202,6 +2292,8 @@ if test $ac_cv_c_bigendian = yes; then
 fi
 ])
 
+dnl AC_C_INLINE
+dnl -----------
 dnl Do nothing if the compiler accepts the inline keyword.
 dnl Otherwise define inline to __inline__ or __inline if one of those work,
 dnl otherwise define inline to be empty.
@@ -2223,6 +2315,9 @@ case "$ac_cv_c_inline" in
 esac
 ])
 
+
+dnl AC_C_CONST
+dnl ----------
 AC_DEFUN(AC_C_CONST,
 [dnl This message is consistent in form with the other checking messages,
 dnl and with the result message.
@@ -2278,7 +2373,8 @@ if test $ac_cv_c_const = no; then
   AC_DEFINE(const,,
             [Define to empty if the keyword `const' does not work.])
 fi
-])
+])dnl AC_C_CONST
+
 
 dnl AC_C_VOLATILE
 dnl -------------
@@ -2302,6 +2398,7 @@ if test $ac_cv_c_volatile = no; then
 fi
 ])
 
+
 dnl AC_C_STRINGIZE
 dnl --------------
 dnl Checks if `#' can be used to glue strings together at the CPP level.
@@ -2320,7 +2417,26 @@ if test "${ac_cv_c_stringize}" = yes; then
             [Define if you have the ANSI # stringizing operator in cpp.])
 fi
 AC_MSG_RESULT([${ac_cv_c_stringize}])
-])dnl
+])dnl AC_C_STRINGIZE
+
+
+dnl AC_C_PROTOTYPES
+dnl ---------------
+dnl Check if the C compiler supports prototypes, included if it needs
+dnl options.
+AC_DEFUN(AC_C_PROTOTYPES,
+[AC_REQUIRE([AC_PROG_CC_STDC])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+AC_MSG_CHECKING([for function prototypes])
+if test "$ac_cv_prog_cc_stdc" != no; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(PROTOTYPES, 1,
+            [Define if the compiler supports function prototypes.])
+else
+  AC_MSG_RESULT(no)
+fi
+])dnl AC_C_PROTOTYPES
+
 
 define(AC_ARG_ARRAY,
 [AC_FATAL([$0 has been removed; don't do non-portable things with arguments], 4)])
index a36de69dcc28806794660e93c4105065270767ec..9c87fbd37ebe3b03fa953ed78404bf0fd2e0c934 100644 (file)
@@ -1637,6 +1637,23 @@ If the C compiler does not accept the @samp{-c} and @samp{-o} options
 simultaneously, define @code{NO_MINUS_C_MINUS_O}.
 @end defmac
 
+@defmac AC_PROG_CC_STDC
+@maindex PROG_CC_STDC
+@ovindex CC
+If the C compiler in not in ANSI C mode by default, try to add an option
+to output variable @code{CC} to make it so.  This macro tries various
+options that select ANSI C on some system or another.  It considers the
+compiler to be in ANSI C mode if it handles function prototypes
+correctly.
+
+If you use this macro, you should check after calling it whether the C
+compiler has been set to accept ANSI C; if not, the shell variable
+@code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
+code in ANSI C, you can make an un-ANSIfied copy of it by using the
+program @code{ansi2knr}, which comes with Ghostscript.
+@end defmac
+
+
 @defmac AC_PROG_CPP
 @maindex PROG_CPP
 @ovindex CPP
@@ -2844,7 +2861,6 @@ is defined.  However, Ultrix 4.3's native compiler does support
 volatile, but does not defined @code{__STDC__}.
 @end defmac
 
-
 @defmac AC_C_INLINE
 @maindex C_INLINE
 @cvindex inline
@@ -2881,6 +2897,32 @@ found in macros such as this:
 @end example
 @end defmac
 
+@defmac AC_C_PROTOTYPES
+@maindex C_PROTOTYPES
+@cvindex PROTOTYPES
+@cvindex PARAMS
+Check to see if function prototypes are understood by the compiler.  If
+so, define @samp{PROTOTYPES}.  In the case the compiler does not handle
+prototypes, you should use @code{ansi2knr}, which comes with the
+Ghostscript distribution, to unprotoize function definitions.  For
+function prototypes, you should first define @code{PARAMS}:
+@example
+#ifndef PARAMS
+#  if PROTOTYPES
+#    define PARAMS(protos) protos
+#  else /* no PROTOTYPES */
+#    define PARAMS(protos) ()
+#  endif /* no PROTOTYPES */
+#endif
+@end example
+then use it this way:
+@example
+size_t my_strlen PARAMS ((const char *));
+@end example
+@end defmac
+
+@c FIXME: What the heck is this macro doing here?  Move it out of
+@c the way, in its proper section!!!
 @defmac AC_CHECK_SIZEOF (@var{type} @r{[}, @var{cross-size}@r{[}, @var{includes}@r{]]})
 @maindex CHECK_SIZEOF
 Define @code{SIZEOF_@var{uctype}} to be the size in bytes of the C (or
index a36de69dcc28806794660e93c4105065270767ec..9c87fbd37ebe3b03fa953ed78404bf0fd2e0c934 100644 (file)
@@ -1637,6 +1637,23 @@ If the C compiler does not accept the @samp{-c} and @samp{-o} options
 simultaneously, define @code{NO_MINUS_C_MINUS_O}.
 @end defmac
 
+@defmac AC_PROG_CC_STDC
+@maindex PROG_CC_STDC
+@ovindex CC
+If the C compiler in not in ANSI C mode by default, try to add an option
+to output variable @code{CC} to make it so.  This macro tries various
+options that select ANSI C on some system or another.  It considers the
+compiler to be in ANSI C mode if it handles function prototypes
+correctly.
+
+If you use this macro, you should check after calling it whether the C
+compiler has been set to accept ANSI C; if not, the shell variable
+@code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
+code in ANSI C, you can make an un-ANSIfied copy of it by using the
+program @code{ansi2knr}, which comes with Ghostscript.
+@end defmac
+
+
 @defmac AC_PROG_CPP
 @maindex PROG_CPP
 @ovindex CPP
@@ -2844,7 +2861,6 @@ is defined.  However, Ultrix 4.3's native compiler does support
 volatile, but does not defined @code{__STDC__}.
 @end defmac
 
-
 @defmac AC_C_INLINE
 @maindex C_INLINE
 @cvindex inline
@@ -2881,6 +2897,32 @@ found in macros such as this:
 @end example
 @end defmac
 
+@defmac AC_C_PROTOTYPES
+@maindex C_PROTOTYPES
+@cvindex PROTOTYPES
+@cvindex PARAMS
+Check to see if function prototypes are understood by the compiler.  If
+so, define @samp{PROTOTYPES}.  In the case the compiler does not handle
+prototypes, you should use @code{ansi2knr}, which comes with the
+Ghostscript distribution, to unprotoize function definitions.  For
+function prototypes, you should first define @code{PARAMS}:
+@example
+#ifndef PARAMS
+#  if PROTOTYPES
+#    define PARAMS(protos) protos
+#  else /* no PROTOTYPES */
+#    define PARAMS(protos) ()
+#  endif /* no PROTOTYPES */
+#endif
+@end example
+then use it this way:
+@example
+size_t my_strlen PARAMS ((const char *));
+@end example
+@end defmac
+
+@c FIXME: What the heck is this macro doing here?  Move it out of
+@c the way, in its proper section!!!
 @defmac AC_CHECK_SIZEOF (@var{type} @r{[}, @var{cross-size}@r{[}, @var{includes}@r{]]})
 @maindex CHECK_SIZEOF
 Define @code{SIZEOF_@var{uctype}} to be the size in bytes of the C (or
index b25c5a379f1c75b30654fd1888fa3a9780c957ee..1401d9c57a5732e650e4abf8841b2cf0e7cfd3be 100644 (file)
@@ -203,6 +203,7 @@ else
 fi
 ])
 
+
 dnl AC_PROG_CC_WORKS
 dnl ----------------
 AC_DEFUN(AC_PROG_CC_WORKS,
@@ -221,6 +222,7 @@ AC_MSG_RESULT($ac_cv_prog_cc_cross)
 cross_compiling=$ac_cv_prog_cc_cross
 ])
 
+
 dnl AC_PROG_CXX_WORKS
 dnl -----------------
 AC_DEFUN(AC_PROG_CXX_WORKS,
@@ -239,6 +241,7 @@ AC_MSG_RESULT($ac_cv_prog_cxx_cross)
 cross_compiling=$ac_cv_prog_cxx_cross
 ])
 
+
 dnl AC_PROG_F77_WORKS
 dnl -----------------
 dnl Test whether the Fortran 77 compiler can compile and link a trivial
@@ -263,6 +266,7 @@ AC_MSG_RESULT($ac_cv_prog_f77_cross)
 cross_compiling=$ac_cv_prog_f77_cross
 ])
 
+
 dnl AC_PROG_CC_GNU
 dnl --------------
 AC_DEFUN(AC_PROG_CC_GNU,
@@ -279,6 +283,7 @@ else
   ac_cv_prog_gcc=no
 fi])])
 
+
 dnl AC_PROG_CXX_GNU
 dnl ---------------
 AC_DEFUN(AC_PROG_CXX_GNU,
@@ -295,6 +300,7 @@ else
   ac_cv_prog_gxx=no
 fi])])
 
+
 dnl AC_PROG_F77_GNU
 dnl ---------------
 dnl Test whether for Fortran 77 compiler is `g77' (the GNU Fortran 77
@@ -360,6 +366,9 @@ fi
 rm -f conftest*
 ])])
 
+
+dnl AC_PROG_GCC_TRADITIONAL
+dnl -----------------------
 AC_DEFUN(AC_PROG_GCC_TRADITIONAL,
 [AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_PROG_CPP])dnl
@@ -380,7 +389,8 @@ Autoconf TCGETA],
     CC="$CC -traditional"
   fi
 fi
-])
+])dnl AC_PROG_GCC_TRADITIONAL
+
 
 dnl AC_PROG_CC_C_O
 dnl --------------
@@ -434,14 +444,14 @@ fi
 ])dnl AC_PROG_CC_C_O
 
 
+dnl AC_PROG_F77_C_O
+dnl ---------------
 dnl Test if the Fortran 77 compiler accepts the options `-c' and `-o'
 dnl simultaneously, and define `F77_NO_MINUS_C_MINUS_O' if it does not.
 dnl
 dnl The usefulness of this macro is questionable, as I can't really see
 dnl why anyone would use it.  The only reason I include it is for
 dnl completeness, since a similar test exists for the C compiler.
-dnl
-dnl AC_PROG_F77_C_O
 AC_DEFUN(AC_PROG_F77_C_O,
 [AC_BEFORE([$0], [AC_PROG_F77])dnl
 AC_MSG_CHECKING(whether $F77 understand -c and -o together)
@@ -472,7 +482,87 @@ else
   AC_DEFINE(F77_NO_MINUS_C_MINUS_O, 1,
             [Define if your Fortran 77 compiler doesn't accept -c and -o together.])
 fi
+])dnl AC_PROG_F77_C_O
+
+
+dnl AC_PROG_CC_STDC
+dnl ---------------
+dnl If the C compiler in not in ANSI C mode by default, try to add an
+dnl option to output variable @code{CC} to make it so.  This macro tries
+dnl various options that select ANSI C on some system or another.  It
+dnl considers the compiler to be in ANSI C mode if it handles function
+dnl prototypes correctly.
+AC_DEFUN(AC_PROG_CC_STDC,
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_BEFORE([$0], [AC_C_INLINE])dnl
+AC_BEFORE([$0], [AC_C_CONST])dnl
+dnl Force this before AC_PROG_CPP.  Some cpp's, eg on HPUX, require
+dnl a magic option to avoid problems with ANSI preprocessor commands
+dnl like #elif.
+dnl FIXME: can't do this because then AC_AIX won't work due to a
+dnl circular dependency.
+dnl AC_BEFORE([$0], [AC_PROG_CPP])
+AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
+AC_CACHE_VAL(ac_cv_prog_cc_stdc,
+[ac_cv_prog_cc_stdc=no
+ac_save_CC="$CC"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  AC_TRY_COMPILE(
+[#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+], [
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+],
+[ac_cv_prog_cc_stdc="$ac_arg"; break])
+done
+CC="$ac_save_CC"
 ])
+if test -z "$ac_cv_prog_cc_stdc"; then
+  AC_MSG_RESULT([none needed])
+else
+  AC_MSG_RESULT($ac_cv_prog_cc_stdc)
+fi
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno) ;;
+  *) CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+])dnl AC_PROG_CC_STDC
+
 
 dnl AC_PROG_MAKE_SET
 dnl ----------------
@@ -2202,6 +2292,8 @@ if test $ac_cv_c_bigendian = yes; then
 fi
 ])
 
+dnl AC_C_INLINE
+dnl -----------
 dnl Do nothing if the compiler accepts the inline keyword.
 dnl Otherwise define inline to __inline__ or __inline if one of those work,
 dnl otherwise define inline to be empty.
@@ -2223,6 +2315,9 @@ case "$ac_cv_c_inline" in
 esac
 ])
 
+
+dnl AC_C_CONST
+dnl ----------
 AC_DEFUN(AC_C_CONST,
 [dnl This message is consistent in form with the other checking messages,
 dnl and with the result message.
@@ -2278,7 +2373,8 @@ if test $ac_cv_c_const = no; then
   AC_DEFINE(const,,
             [Define to empty if the keyword `const' does not work.])
 fi
-])
+])dnl AC_C_CONST
+
 
 dnl AC_C_VOLATILE
 dnl -------------
@@ -2302,6 +2398,7 @@ if test $ac_cv_c_volatile = no; then
 fi
 ])
 
+
 dnl AC_C_STRINGIZE
 dnl --------------
 dnl Checks if `#' can be used to glue strings together at the CPP level.
@@ -2320,7 +2417,26 @@ if test "${ac_cv_c_stringize}" = yes; then
             [Define if you have the ANSI # stringizing operator in cpp.])
 fi
 AC_MSG_RESULT([${ac_cv_c_stringize}])
-])dnl
+])dnl AC_C_STRINGIZE
+
+
+dnl AC_C_PROTOTYPES
+dnl ---------------
+dnl Check if the C compiler supports prototypes, included if it needs
+dnl options.
+AC_DEFUN(AC_C_PROTOTYPES,
+[AC_REQUIRE([AC_PROG_CC_STDC])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+AC_MSG_CHECKING([for function prototypes])
+if test "$ac_cv_prog_cc_stdc" != no; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(PROTOTYPES, 1,
+            [Define if the compiler supports function prototypes.])
+else
+  AC_MSG_RESULT(no)
+fi
+])dnl AC_C_PROTOTYPES
+
 
 define(AC_ARG_ARRAY,
 [AC_FATAL([$0 has been removed; don't do non-portable things with arguments], 4)])