This is the mail archive of the
cygwin-apps@cygwin.com
mailing list for the Cygwin project.
C99 macros in math.h
- From: "Peter Ring" <pri at ddf dot dk>
- To: <cygwin-apps at sources dot redhat dot com>
- Date: Tue, 2 Jul 2002 01:09:26 +0200
- Subject: C99 macros in math.h
While trying to recompile a recent release of libxml2, I've found a problem
with math.h and libm. As far as I can see, it's like this in cygwin 1.3.11
and also in recent snapshots.
The problem is that since 2002-06-06, newlib/libc/include/math.h has defined
some ISO C99 macros for classifying floating point values, and these macros
refer to functions that were added at the same time to newlib/libm/common/,
for example in the file s_fpclassify.c. See newlib/ChangeLog.
Now, while newlib/libc/include/math.h shows up in cygwin as
/usr/include/math.h, the functions defined by
newlib/libm/common/s_fpclassify.c et.al. show up nowhere I or the linker can
find them. So when some code in libxml2-2.4.22/trionan.c looks like this:
...
#if defined(fpclassify) && defined(signbit)
/*
* C99 defines fpclassify() and signbit() as a macros
*/
*is_negative = signbit(number);
switch (fpclassify(number)) {
...
the result is undefined references at link time.
My workaround was to remove the ISO C99 macros from /usr/include/math.h, but
this is probably not the correct solution (nudge nudge, wink wink, say no
more, say no more)?
kind regards
Peter Ring