This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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...


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

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.


Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]