| General |
| ======= |
| |
| For more information about the port or GLib, GTk+ and the GIMP to |
| native Windows, and pre-built binaries (DLLs), surf to |
| http://www.gimp.org/win32/ . "Native" means that we use the Win32 API |
| only, and no POSIX (Unix) emulation layer except that provided by the |
| Microsoft runtime C library. |
| |
| To build GLib on Win32, you can use either gcc or the Microsoft |
| compiler and tools. Both the compiler from MSVC 5.0 and from MSVC 6.0 |
| have been used successfully. |
| |
| But note that to just *use* GLib on Windows, there is no need to build |
| it, prebuilt DLLs are available from the webiste above. |
| |
| With gcc I mean gcc-2.95.3 from www.mingw.org. It might be possible |
| also to use gcc from Cygwin. (But also in that case, we want to use |
| gcc -mno-cygwin, i.e. produce executables (.exe and .dll files) that |
| do *not* require the cygwin runtime library. This is called "mingw".) |
| |
| To successfully use gcc, follow the instructions below. I also use |
| the -fnative-struct flag, which means that in order to use the |
| prebuilt DLLs (especially of GTK+), you *must* also use that flag. |
| (This flag means that the struct layout is identical to that used by |
| MSVC.) |
| |
| If you would want to use the Cygwin tools to generate a GLib that |
| *does* use the Cygwin runtime, the normal Unix configuration method |
| should work as if on Unix. Note that successfully producing shared |
| libraries (DLLs) most probably requires you to have a very new |
| libtool. (And a new libtool probably requires rather new autoconf and |
| automake.) |
| |
| It might also be possible to use the ./configure mechanism when |
| building for a mingw configuration. You should be running Cygwin for |
| the configure script to work, obviously. The same libtool issue has to |
| be taken into account as when building for Cygwin: You most probably |
| should have a very new libtool. |
| |
| The following preprocessor macros are used for conditional compilation |
| related to Win32: |
| |
| - G_OS_WIN32 is defined when compiling for Win32, *and* without |
| any POSIX emulation, other that to the extent provided by the |
| bundled Microsoft C library (msvcrt.dll) and the pthreads-win32 |
| library. For instance, pathnames are in the native Windows syntax. |
| |
| - G_WITH_CYGWIN is defined if compiling for the Cygwin |
| environment. Note that G_OS_WIN32 is *not* defined in that case, as |
| Cygwin is supposed to behave like Unix. G_OS_UNIX *is* defined when |
| compiling for Cygwin. |
| |
| - G_PLATFORM_WIN32 is defined when either G_OS_WIN32 or G_WITH_CYGWIN |
| is defined. |
| |
| The Win32 port of GLib and related software uses only G_OS_WIN32. As |
| G_OS_WIN32 is defined in glibconfig.h, it is available to all source |
| files that use GLib (or GTk+, which uses GLib). |
| |
| Additionally, there are the compiler-specific macros: |
| - __GNUC__ is defined when using GCC |
| - _MSC_VER is defined when using the Microsoft compiler |
| |
| G_OS_WIN32 implies using the Microsoft C runtime MSVCRT.DLL. GLib is |
| not known to work with the older CRTDLL.DLL runtime, or the static |
| Microsoft C runtime libraries. |
| |
| Building software that use GLib or GTk+ |
| ======================================= |
| |
| Even building software that just *use* GLib or GTk+ also require to |
| have the right compiler set up the right way, so if you intend to use |
| gcc, follow the relevant instructions below in that case, too. |
| |
| Libiconv |
| ======== |
| |
| Before building GLib you must also have the libiconv library, either |
| from the same website mentioned above, or from it's homepage at |
| http://clisp.cons.org/~haible/packages-libiconv.html. Libiconv has |
| makefiles for building with MS Visual C only, but as it is one source |
| file only, building iot "by hand" with gcc isn't hard. |
| |
| Where are the makefiles? |
| ======================== |
| |
| If you are building from a CVS snapshot, you will not have any |
| makefile.mingw or makefile.msc file. You should copy the corresponding |
| makefile.mingw.in or makefile.msc.in file to that name, and edit the |
| @GLIB_VERSION@ strings to the correct version number. |
| |
| This is done automatically when an official GLib source distribution |
| package is built. |
| |
| Building GLib with gcc |
| ====================== |
| |
| I use the latest gcc, gcc-2.95.3. Version 2.95.2 will most probably |
| also work. |
| |
| You can either use gcc running on Cygwin, or the "pure" mingw |
| gcc. Using the latter is much easier. |
| |
| Just fetch the latest version of gcc for mingw and the msvcrt runtime, |
| from www.mingw.org.. |
| |
| Set up your PATH so that the gcc from the bin directory that got |
| created above is the one that gets used. Even if you run the mingw |
| gcc, you still want to have Cygwin to run make in. |
| |
| If you want to run a Cygwin-based gcc, it gets a bit more |
| complicated. We still want gcc to produce code that does not use |
| Cygwin, but the msvcrt runtime. In theory it should work to use the |
| -no-cygwin flag, but I haven't tested that lately. |
| |
| Building with MSVC |
| ================== |
| |
| If using the Microsoft toolchain, build with `nmake -f |
| makefile.msc`. |
| |
| --Tor Lillqvist <tml@iki.fi> |