For more information about the port or GLib, GTk+ and the GIMP to
native Windows, see http://www.iki.fi/tml/gimp/win32/ . ("Native"
means that we use the Win32 API only, and not any POSIX emulation
layer except that provided by the Microsoft runtime C library, and the
pthreads emulation library.)

As for now, only the Microsoft compiler and tools are really
supported. Before compiling, check the BIN definition in
makefile.msc. Compile with `nmake -f makefile.msc`. Install with
`nmake -f makefile.msc install`. Cygwin (without cygwin runtime,
i.e. "mingw32"), and maybe LCC-Win32 support will be added later.

When using the cygwin compiler and tools *with* the cygwin runtime the
normal Unix configuration method should work as if on Unix (knock on
wood).

With a little work, it might be possible to use the ./configure
mechanism also with a "mingw32" configuration. I.e. building GLib for
Win32 would use the cygwin tools (and dll), but the produced libraries
would not depend on the cygwin runtime being present.

The following preprocessor macros are used for conditional compilation 
related to Win32:

- WIN32 is defined when compiling for the Win32 platform, regardless
  if using the X11 or Win32 GUI API (of course, in the case of GLib, this
  dimension isn't significant), regardless whether using a more
  or less complete Unix emulation runtime layer (like Cygwin) or not.

- NATIVE_WIN32 is defined when compiling for Win32, *and* without
  any Unix emulation, other that to the extent provided by the
  (Microsoft) C library, or the pthreads-win32 library. For instance,
  pathnames use the native Windows syntax.

- _MSC_VER is defined when using the Microsoft compiler.

Currently the Win32 port uses the combination with all three of those
on, but eventually the cygwin compiler and tools will be supported
also, and in that case _MSC_VER wouldn't be defined.

Some of the usage of these macros is probably a bit mixed up, and will
have to be straightened out when actually trying other combinations.

The thread support uses the pthreads for Win32 package available from
http://sourceware.cygnus.com/pthreads-win32/, which isn't ready yet,
and thus really should not be relied upon.
