[ http://thread.gmane.org/gmane.comp.gnu.libtool.patches/7314/focus=7498 ]
Thanks Charles for all your work on this. I installed this path into Libtool HEAD, and pulled the changes over to gnulib. Here's what the gnulib patch looks like. Cheers, Ralf 2007-04-25 Charles Wilson <[EMAIL PROTECTED]> Ralf Wildenhues <[EMAIL PROTECTED]> * lib/argz_.h: ensure error_t definition is obtained in same mechanism system argz.h would have. * m4/argz.m4 (gl_FUNC_ARGZ): add new test to check if $host's argz facilities are known bad. Err on the side of caution if cross-compiling. Index: lib/argz_.h =================================================================== RCS file: /cvsroot/gnulib/gnulib/lib/argz_.h,v retrieving revision 1.5 diff -u -r1.5 argz_.h --- lib/argz_.h 29 Mar 2007 15:02:55 -0000 1.5 +++ lib/argz_.h 25 Apr 2007 21:16:56 -0000 @@ -1,6 +1,6 @@ /* lt__argz.h -- internal argz interface for non-glibc systems - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2007 Free Software Foundation, Inc. Written by Gary V. Vaughan, 2004 NOTE: The canonical source of this file is maintained with the @@ -32,6 +32,8 @@ #define LT__ARGZ_H 1 #include <stdlib.h> +#define __need_error_t +#include <errno.h> #include <sys/types.h> #if defined(LTDL) Index: m4/argz.m4 =================================================================== RCS file: /cvsroot/gnulib/gnulib/m4/argz.m4,v retrieving revision 1.5 diff -u -r1.5 argz.m4 --- m4/argz.m4 29 Mar 2007 15:02:55 -0000 1.5 +++ m4/argz.m4 25 Apr 2007 21:16:57 -0000 @@ -1,13 +1,13 @@ # Portability macros for glibc argz. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. # Written by Gary V. Vaughan <[EMAIL PROTECTED]> # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 4 argz.m4 +# serial 5 argz.m4 AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ @@ -27,6 +27,50 @@ ARGZ_H= AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next \ argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) + +dnl if have system argz functions, allow forced use of +dnl libltdl-supplied implementation (and default to do so +dnl on "known bad" systems). Could use a runtime check, but +dnl (a) detecting malloc issues is notoriously unreliable +dnl (b) only known system that declares argz functions, +dnl provides them, yet they are broken, is cygwin +dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) +dnl So, it's more straightforward simply to special case +dnl this for known bad systems. +AS_IF([test -z "$ARGZ_H"], + [AC_CACHE_CHECK( + [if argz actually works], + [lt_cv_sys_argz_works], + [case $host_os in #( + *cygwin*) + lt_cv_sys_argz_works=no + if test "$cross_compiling" != no; then + lt_cv_sys_argz_works="guessing no" + else + save_IFS=$IFS + IFS=-. + set x `uname -r | $SED -e 's/^\([[0-9\.]]*\).*/\1/'` + IFS=$save_IFS + lt_os_major=$[]{2-0} + lt_os_minor=$[]{3-0} + lt_os_micro=$[]{4-0} + if test "$lt_os_major" -gt 1 || + { test "$lt_os_major" -eq 1 && + { test "$lt_os_minor" -gt 5 || + { test "$lt_os_minor" -eq 5 && + test "$lt_os_micro" -gt 24; }; }; }; then + lt_cv_sys_argz_works=yes + fi + fi + ;; #( + *) lt_cv_sys_argz_works=yes ;; + esac]) + AS_IF([test $lt_cv_sys_argz_works != yes], + [AC_DEFINE([SYSTEM_ARGZ_IS_BROKEN], 1, + [This value is set to 1 to indicate that the system argz facility does not work]) + ARGZ_H=argz.h + AC_LIBOBJ([argz])])]) + AC_SUBST([ARGZ_H]) ])