Current unreleased Cygwin CVS (which will be 1.7.0 at some point in the
not too distant future) has support for fopencookie() and funopen(),
however this causes building autogen to fail.  Autogen seems to be
assuming it's on glibc if these functions are detected.

In the case of fopencookie() it assumes that if found it can #include
<libio.h>, but Cygwin has no such header so the build fails.  If you
force ac_cv_func_fopencookie=no then it detects funopen() and tries to
use that but also fails because its idea of the cookie function
signitures differs from Cygwin/newlib's:

autogen's fmemopen.c:

   typedef int     (cookie_read_function_t )(void *, char *, int);
   typedef int     (cookie_write_function_t)(void *, char const *, int);
   typedef fpos_t  (cookie_seek_function_t )(void *, fpos_t, int);
   typedef int     (cookie_close_function_t)(void *);

newlib's stdio.h:

typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf,
size_t __n);
typedef ssize_t cookie_write_function_t(void *__cookie, const char
*__buf,
                                        size_t __n);
# ifdef __LARGE64_FILES
typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off,
                                   int __whence);
# else
typedef int cookie_seek_function_t(void *__cookie, off_t *__off, int
__whence);
# endif /* !__LARGE64_FILES */
typedef int cookie_close_function_t(void *__cookie);

This mismatch causes another build failure.  The workaround is to simply
configure autogen with:

$ ac_cv_func_fopencookie=no ac_cv_func_funopen=no path/to/configure ...

This results in a working autogen that passes all tests.  Note that this
also requires re-building libguile as the current guile packages are old
and need to be rebuilt in order to pick up an ABI changing patch in
Cygwin's gcc.

It would be nice if the configure tests for these functions could be a
little bit more selective so that it's not necessary to override them. 
In the case of fopencookie() a header check for libio.h seems like it
would do the job, but I don't know how you'd detect the difference in
cookie_t types.

Brian

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Autogen-users mailing list
Autogen-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/autogen-users

Reply via email to