Re: Version 1.8.1 does not compile on Cygwin 1.7.14
- From
Eric Blake <eblake@redhat.com>
- Date
- Jan 26, 2013, 00:34 UTC
- Message-ID
- <51032481.4030707@redhat.com>
- In-Reply-To
- <7v38xo3irh.fsf@alter.siamese.dyndns.org>
On 01/25/2013 05:11 PM, Junio C Hamano wrote:
Show 18 quoted lines
> Mark Levedahl <mlevedahl@gmail.com> writes: > >> Cygwin and Windows should be treated as completely separate platforms: >> if __CYGWIN__ is defined, do one thing, if not, go ahead and check >> WIN32, but the WIN32 macro should never be tested once we know the >> platform is CYGWIN - these really are different platforms (if you are >> unsure of this, consider that Cygwin includes a cross-compiler to >> target native Win32 as the Cygwin maintainers recognized the platforms >> are different). > > Not disagreeing with your conclusion (they should be treated as > different), why does it define WIN32 in the first place? > > Perhaps we would want > > #ifdef __CYGWIN__ > #undef WIN32 > #endif
Wouldn't work. Cygwin gcc does NOT define WIN32; rather, the inclusion of a Windows system header (generally discouraged, but sometimes a necessary evil) might cause WIN32 to be defined for all subsequent headers.
Which is why other projects, like gnulib, have
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
all over the place.
-- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org