This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: INT32: jmorecfg.h
Charles Wilson wrote:
Christopher Faylor wrote:
On Tue, Jul 27, 2004 at 10:01:08AM +0100, Dave Korn wrote:
I remember hitting this problem with a cygwin build of libjpeg once.
The correct answer is probably that jmorecfg.h shouldn't arbitrarily
define INT32 globally without first performing an autoconf test to see
if there's something in the system includes that already provides it,
isn't it?
Yes. Just adding more and more ifdef guards around the INT32 definition
is not the way to go.
Unfortunately, the ijg group does not distribute the autoconf source for
libjpeg's configure script. It's on my todo list to really truly
autoconfiscate libjpeg (and libtiff) -- which will make things like this
easier. But it's not a very high priority.
Nor am I all that worked up about this INT32 issue. jmorecfg.h is
present in all builds of libjpeg; I don't understand why INT32 is
causing a problem *only* on cygwin. It seems that you should be seeing
the problem on all platforms, or none. Since your package is showing
this behavior only on cygwin, I suspect something wacky in (a) your
cygwin environment, or (b) the procedure/configury you're using to build
on cygwin (e.g. mixing native and cygwin headers).
Given that, I'm not going to rush out and fix this right away, because I
only have bad choices: (1) add yet another #ifdef hack, or (2) spend a
week teasing out and reverse-engineering the autoconfigury source files...
Alright,
Here is what we did to work around this problem instead of directly
include jpeglib.h we do:
/* Work-around for a conflict between windows.h and jpeglib.h in cygwin.
If ADDRESS_TAG_BIT is defined then BaseTsd.h has been included and
INT32 has been defined with a typedef, so we must define XMD_H to
prevent the jpeg header from defining it again. */
# if defined(__CYGWIN__) && defined(ADDRESS_TAG_BIT) && !defined(XMD_H)
# define XMD_H
# define VTK_JPEG_XMD_H
# endif
# include <jpeglib.h> # include <jpeglib.h>
# if defined(VTK_JPEG_XMD_H)
# undef VTK_JPEG_XMD_H
# undef XMD_H
# endif
http://vtk.org/cgi-bin/viewcvs.cgi/Utilities/vtk_jpeg.h?r1=1.1&r2=1.2&root=VTK
The whole problem was that one can't do:
#include <windows.h>
#include <jpeglib.h>
And according to Christopher, this is "not designed to work well.". Thus
I don't believe the mistake is in VTK. My guess is if we don't see in
other plateform is because they -luckily- don't use any typedef INT32.
HTH
Mathieu
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/