From: Blake Ramsdell Date: Fri, 07 Dec 2007 00:41:24 GMT Subject: Re: [PATCH] Silence iconv warnings on Leopard Message-ID: <985966520712061641y4eba054dj5dea1d0308d50b12@mail.gmail.com> In-Reply-To: On Dec 6, 2007 4:30 PM, Linus Torvalds wrote: > Umm. Why not just make the test be whether the following compiles cleanly? > > #include > > extern size_t iconv(iconv_t cd, > char **inbuf, size_t *inbytesleft, > char **outbuf, size_t *outbytesleft); > > because if the compiler has seen a "const char **inbuf", then it should > error out with a "conflicting types for 'iconv'" style message.. Yeah, this is what I did: diff --git a/configure.ac b/configure.ac index 5f8a15b..675d3e0 100644 --- a/configure.ac +++ b/configure.ac @@ -182,6 +182,29 @@ AC_SUBST(NEEDS_LIBICONV) AC_SUBST(NO_ICONV) test -n "$NEEDS_LIBICONV" && LIBS="$LIBS -liconv" # +# Define OLD_ICONV if the iconv function prototype uses const** (Darwin and +# some FreeBSD installations). +AC_DEFUN([OLDICONVTEST_SRC], [ +#include + +int main(void) +{ + char* value = "test"; + + (void) iconv (NULL, &value, NULL, NULL, NULL); +} +]) +AC_MSG_CHECKING([for old iconv]) +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Werror" +AC_COMPILE_IFELSE(OLDICONVTEST_SRC, + [AC_MSG_RESULT([no]) + OLD_ICONV=], + [AC_MSG_RESULT([yes]) + OLD_ICONV=UnfortunatelyYes]) +CFLAGS="$old_CFLAGS" +AC_SUBST(OLD_ICONV) +# # Define NO_DEFLATE_BOUND if deflateBound is missing from zlib. AC_DEFUN([ZLIBTEST_SRC], [ #include The problem is that AC_COMPILE_IFELSE doesn't barf on warnings, so I had to put in the CFLAGS hack to do -Werror (this is what Jakub did also, I think). So if this isn't rude to use -Werror (which is probably gcc-specific in one or more ways), then fine. If it is rude to use -Werror, then yeah, there needs to be some check for the warning, which I confess in my five minutes of learning autoconf I don't understand well enough to say if it's possible. Blake -- Blake Ramsdell | http://www.blakeramsdell.com