On Wed, 5 Dec 2007, Junio C Hamano wrote: > Jakub Narebski <jnareb@xxxxxxxxx> writes: >> Junio C Hamano wrote: >>> Jakub Narebski <jnareb@xxxxxxxxx> writes: >>> >>>> +AC_MSG_CHECKING([for old iconv()]) >>>> +AC_COMPILE_IFELSE(OLDICONVTEST_SRC, >>>> + [AC_MSG_RESULT([no])], >>>> + [AC_MSG_RESULT([yes]) >>>> + OLD_ICONV=YesPlease]) >>>> +AC_SUBST(OLD_ICONV) >>>> >>> >>> Which result does COMPILE_IFELSE give for non error warnings? >>> Ok, or Bad? >> >> - Macro: AC_COMPILE_IFELSE (INPUT, [ACTION-IF-FOUND], >> [ACTION-IF-NOT-FOUND]) >> Run the compiler and compilation flags of the current language >> (*note Language Choice::) on the INPUT, run the shell commands >> ACTION-IF-TRUE on success, ACTION-IF-FALSE otherwise. The INPUT >> can be made by `AC_LANG_PROGRAM' and friends. >> >> And if I have checked correctly code which causes only warnings >> returns Ok (in this case print 'no' after 'checking for old iconv()... ' >> and do not set OLD_ICONV, which means it will be unset). > > Which means the real-life compilation will get the warning on type > mismatch. Wasn't OLD_ICONV about squelching that? Gah, I don't know why I though OLD_ICONV was about compile errors, and not about compile warnings. This version uses -Werror to check for warnings; I hope it doesn't give false positives... On Wed, 5 Dec 2007, Pascal Obry wrote: > Jakub Narebski a écrit : >> --- >> This patch needs checking if it correctly sets OLD_ICONV >> when needed. I have checked only that it is not set when >> with new iconv() declaration. Could people using Cygwin >> (and other with OLD_ICONV: Darwin) test it? > > Not working on Cygwin: > > $ autoconf > $ ./configure --prefix=/usr/local --build=i686-pc-cygwin > ... > configure: CHECKS for header files > checking for old iconv()... no > > It should be yes above. And in config.mak.autogen we have: > > OLD_ICONV= Check out current version of patch. It should work correctly now (I thought OLD_ICONV was about compile errors, and it is about squelching compile warnings). It should give now: $ make configure $ ./configure --prefix=/usr/local --build=i686-pc-cygwin configure: CHECKS for header files checking for old iconv()... yes $ cat config.mak.autogen OLD_ICONV=UnfortunatelyYes > Note also that you should remove all the hard-coded settings > in Makefile anyway. No, I should not. ./configure script is purely optional in git, and compiling should work with reasonable defaults even if you don't have autoconf installed and/or you don't want to run ./configure script (because e.g. it is too slow). -- >8 -- From: Jakub Narebski <jnareb@xxxxxxxxx> Subject: [PATCH] autoconf: Add test for OLD_ICONV (squelching compiler warning) Update configure.ac (and config.mak.in) to keep up with git development by adding [compile] test whether your library has an old iconv(), where the second (input buffer pointer) parameter is declared with type (const char **) (OLD_ICONV). Test-proposed-by: Junio C Hamano <gitster@xxxxxxxxx> Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- config.mak.in | 1 + configure.ac | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 0 deletions(-) diff --git a/config.mak.in b/config.mak.in index 11d256e..7d5df9b 100644 --- a/config.mak.in +++ b/config.mak.in @@ -41,4 +41,5 @@ NO_STRTOUMAX=@NO_STRTOUMAX@ NO_SETENV=@NO_SETENV@ NO_MKDTEMP=@NO_MKDTEMP@ NO_ICONV=@NO_ICONV@ +OLD_ICONV=@OLD_ICONV@ NO_DEFLATE_BOUND=@NO_DEFLATE_BOUND@ diff --git a/configure.ac b/configure.ac index 5f8a15b..196ab3e 100644 --- a/configure.ac +++ b/configure.ac @@ -212,6 +212,30 @@ test -n "$NEEDS_SOCKET" && LIBS="$LIBS -lsocket" ## Checks for header files. +AC_MSG_NOTICE([CHECKS for header files]) +# +# Define OLD_ICONV if your library has an old iconv(), where the second +# (input buffer pointer) parameter is declared with type (const char **). +AC_DEFUN([OLDICONVTEST_SRC], [[ +#include <iconv.h> + +int main(void) +{ + iconv_t cd; + char *ibp, *obp; + size_t insz, outsz; + iconv(cd, &ibp, &insz, &obp, &outsz); +} +]]) +AC_MSG_CHECKING([for old iconv()]) +CFLAGS_ORIG=$CFLAGS +CFLAGS="$CFLAGS -Werror" +AC_COMPILE_IFELSE(OLDICONVTEST_SRC, + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([yes]) + OLD_ICONV=UnfortunatelyYes]) +CFLAGS=$CFLAGS_ORIG +AC_SUBST(OLD_ICONV) ## Checks for typedefs, structures, and compiler characteristics. -- 1.5.3.7 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html