[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
proposed Autoconf patch to help fix gettext compatibility problem
From: |
Paul Eggert |
Subject: |
proposed Autoconf patch to help fix gettext compatibility problem |
Date: |
Fri, 9 Nov 2001 19:33:38 -0800 (PST) |
I had a problem when compiling a test version of Bash. It uses
gettext, and the problem was that gettext headers contained code like this:
#ifndef PARAMS
# if __STDC__ || defined __cplusplus
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif
#endif
and this doesn't work as desired on Solaris, where __STDC__ is 0.
I asked Bruno Haible to append "|| PROTOTYPES" to this for the benefit
of Autoconf AC_C_PROTOTYPES users like Bash, and he replied that he
couldn't do that because it would infringe on the user namespace.
(These headers are system headers in some context.)
But he did agree to try to append "|| __PROTOTYPES" instead, as this
can't infringe on the user namespace. Here is a proposed patch to
Autoconf to support this new feature of gettext.
(Personally, I am starting to assume at least C89, but I realize that
not everybody has that luxury. :-)
2001-11-08 Paul Eggert <address@hidden>
* lib/autoconf/c.m4 (AC_C_PROTOTYPES): Define __PROTOTYPES too.
* doc/autoconf.texi (C Compiler): AC_C_PROTOTYPES now defines
__PROTOTYPES too.
diff -pru autoconf/doc/autoconf.texi autoconf-prototypes/doc/autoconf.texi
--- autoconf/doc/autoconf.texi Thu Nov 8 10:29:01 2001
+++ autoconf-prototypes/doc/autoconf.texi Fri Nov 9 19:22:02 2001
@@ -4784,9 +4784,11 @@ found in macros such as this:
@defmac AC_C_PROTOTYPES
@acindex C_PROTOTYPES
@cvindex PROTOTYPES
address@hidden __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
+so, define @code{PROTOTYPES} and @code{__PROTOTYPES}.
+In the case the compiler does not handle
prototypes, you should use @code{ansi2knr}, which comes with the
Automake distribution, to unprotoize function definitions. For
function prototypes, you should first define @code{PARAMS}:
@@ -4809,6 +4811,9 @@ size_t my_strlen PARAMS ((const char *))
@end example
@end defmac
+This macro also defines @code{__PROTOTYPES}; this is for the benefit of
+header files that cannot use macros that infringe on user name space.
+
@defmac AC_PROG_GCC_TRADITIONAL
@acindex PROG_GCC_TRADITIONAL
@ovindex CC
diff -pru autoconf/lib/autoconf/c.m4 autoconf-prototypes/lib/autoconf/c.m4
--- autoconf/lib/autoconf/c.m4 Sat Sep 22 08:20:45 2001
+++ autoconf-prototypes/lib/autoconf/c.m4 Fri Nov 9 19:23:46 2001
@@ -1068,6 +1068,8 @@ if test "$ac_cv_prog_cc_stdc" != no; the
AC_MSG_RESULT([yes])
AC_DEFINE(PROTOTYPES, 1,
[Define if the C compiler supports function prototypes.])
+ AC_DEFINE(__PROTOTYPES, 1,
+ [Define like PROTOTYPES; this can be used by system headers.])
else
AC_MSG_RESULT([no])
fi
- proposed Autoconf patch to help fix gettext compatibility problem,
Paul Eggert <=