diff options
author | Tor Lillqvist <tml@iki.fi> | 2004-03-06 07:37:46 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2004-03-06 07:37:46 +0000 |
commit | fd64571b800dc1b72d2ff35faba18053be369b40 (patch) | |
tree | cf8b1e4b687b7139a7b90ffd67a87cf963f3409e /README.win32 | |
parent | ab0031bf0060acb38781b0cb8e855fb33dc444ad (diff) |
Update.
2004-03-06 Tor Lillqvist <tml@iki.fi>
* README.win32: Update.
* configure.in
* Makefile.am
* */Makefile.am: Drop the hand-written makefile.mingw(.in)
files. They haven't been maintained in a long time. As several
people have managed to build GLib for Win32 using the
autoconfiscation mechanism, there is no real reason to even try to
maintain the hand-written mingw makefiles.
Diffstat (limited to 'README.win32')
-rw-r--r-- | README.win32 | 125 |
1 files changed, 51 insertions, 74 deletions
diff --git a/README.win32 b/README.win32 index d2819927d..562e6e8e7 100644 --- a/README.win32 +++ b/README.win32 @@ -9,9 +9,9 @@ General For prebuilt binaries (DLLs and EXEs) and developer packages (headers, import libraries) of GLib, GTK+, GIMP etc for Windows, surf to -http://www.gimp.org/win32/ . They are for "native" Windows meaning -they use the Win32 API and Microsoft C runtime library only, no POSIX -(Unix) emulation layer (like Cygwin). +http://www.gimp.org/win32/downloads.html . They are for "native" +Windows meaning they use the Win32 API and Microsoft C runtime library +only, no POSIX (Unix) emulation layer (like Cygwin). 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 @@ -20,12 +20,15 @@ have been used successfully. But note that to just *use* GLib on Windows, there is no need to build it yourself. Prepackaged runtime and developer packages are available from the webiste above. On Unix, it is quite normal that system admins -build and install libraries like GLib themselves. But on Windows -setting up a correct build environment can be quite a task, especially -if you are used to just type "./configure; make" on Unix, and expect -things to work as smoothly on Windows. +build and install libraries like GLib themselves without bothering to +look for prebuilt packages, especially if prebuilt packages tend to +use installation paths that don't conform to local customs. -The following preprocessor macros can be used for conditional +On Windows setting up a correct build environment can be quite a task, +especially if you are used to just type "./configure; make" on Unix, +and expect things to work as smoothly on Windows. + +The following preprocessor macros are to be used for conditional compilation related to Win32 in GLib-using code: - G_OS_WIN32 is defined when compiling for native Win32, without @@ -50,7 +53,12 @@ Additionally, there are the compiler-specific macros: 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 LIBC.LIB and LIBCMT.LIB. It apparently -does work with the debugging version of MSVCRT.DLL, MSVCRTD.DLL. +does work with the debugging version of MSVCRT.DLL, +MSVCRTD.DLL. Presumably, if compiled with MSVC.NET, it also works with +MSVCR70.DLL. Please note that it's dubious if you would be allowed by +the license to distrubute a GLib linked to MSVCR70.DLL, as it is not +part of the operating system, but of the MSVC product. MSVCRT.DLL is +part of Windows. Building software that use GLib or GTK+ ======================================= @@ -62,10 +70,10 @@ gcc, follow the relevant instructions below in that case, too. Tor uses gcc with the -mms-bitfields flag (used to be called -fnative-struct in gcc 2.x), which means that in order to use the prebuilt DLLs (especially of GTK+), if you compile your code with gcc, -you *must* also use that flag. (This flag means that the struct layout +you *must* also use that flag. This flag means that the struct layout rules are identical to those used by MSVC. This is essential if the same DLLs are to be usable both from gcc- and MSVC-compiled code. This -definitely is something one wants.) +definitely is something one wants. Building GLib ============= @@ -74,72 +82,29 @@ Again, first decide whether you really want to do this. Before building GLib you must also have the libiconv library and GNU gettext. Get prebuilt binaries of libiconv (1.9.1 or newer), and -gettext-runtime (0.12.1 or newer) from your nearest GNU ftp mirror. If -you use gcc, you will also have to edit the libintl.h file from -gettext a tiny bit: Change the - -# if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus) - -line to - -# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && (defined __STDC__ || defined __cplusplus) - -around line 102. - -Where are the makefiles? -======================== +gettext-runtime (0.13.1 or newer) from www.gimp.org/win32/downloads.html. -If you are building from a CVS snapshot, you will not have any -makefile.mingw or makefile.msc files. You should copy the -corresponding makefile.mingw.in or makefile.msc.in file to that name, -and replace any @...@ strings with the correct value. - -This is done automatically when an official GLib source distribution -package is built, so if you get GLib from a source distribution -package, there should be makefile.mingw and makefile.msc files ready -to use (after some editing). - -Building GLib with gcc -====================== +Autoconfiscated build (with gcc) +================================ Tor uses gcc 3.2. Version 2.95.3 also works. You can either use gcc running on Cygwin, or the "pure" mingw gcc. Using the latter might work better, or at least did at some -point. - -Fetch the latest version of gcc for mingw and the msvcrt runtime, from -www.mingw.org. +point. You should be running Cygwin, or maybe cross-compiling from +real Unix, for the configure script to work, obviously. It is also +possible to use MSYS. -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. - -Then run make -f makefile.mingw. Install the resulting DLLs somewhere -in your PATH. You can either keep the headers and import libraries -where they are, or install them somewhere else. There are no rules in -the makefile.mingws for installing, it is up to you where to put them. - -Autoconfiscated build -===================== - -It is also possible to use the auto*, ./configure and libtool -mechanism when building with gcc. You should be running Cygwin, or -maybe cross-compiling from real Unix, for the configure script to -work, obviously. It is also possible to use MSYS. - -When building from an official source distribution, to be able to -build DLLs without problems, it might well be necessary to have a -relatively new version of libtool installed. If so, replace the -libtool parts included with GLib sources with newer versions by -running libtoolize --force. After that you want to run aclocal-1.4 and -autoconf before running configure. +If you want to use mingw's gcc, install gcc, Win32 headers and +binutils from www.mingw.org. Set up your PATH so that the mingw gcc is +the one that gets used, and not Cygwin's gcc. Even if you run the +mingw gcc, you still want to have Cygwin to run make in. Tor invokes configure using: CC='gcc -mcpu=pentium3' CPPFLAGS='-I/target/include' CFLAGS=-O3 LDFLAGS='-L/target/lib' ./configure --with-libiconv - --disable-static --prefix=/target --host=i386-pc-mingw32 + --disable-gtk-doc --prefix=/target --host=i386-pc-mingw32 (on a single line). The /target/include mentioned contains the header files for libintl and libiconv, and the (import) libraries are in @@ -156,15 +121,13 @@ with MSVC. Except for this and a few other minor issues, there really shouldn't be any reason to distribute separate GLib headers and DLLs for gcc and MSVC users, as the compilers generate code that uses the same C -runtime library, and is mutually binary compatible. Thus one either -has to manually edit glibconfig.h afterwards, or use the supplied -glibconfig.h.win32. This has been produced by running configure twice, -once using gcc and once using MSVC, and merging the resulting files -with diff -D. - -The hand-written makefile.{mingw,msc} files, and the stuff in the -"build" subdirectory, produce DLLs and import libraries that match -what Makefile.am and libtool produces. For GLib, the DLL is called +runtime library. The DLL generated by either compiler is binary +compatible with the other one. Thus one either has to manually edit +glibconfig.h afterwards, or use the supplied glibconfig.h.win32 which +has been produced by running configure twice, once using gcc and once +using MSVC, and merging the resulting files with diff -D. + +For GLib, the DLL is called libglib-2.0-0.dll, and the import libraries libglib-2.0.dll.a and glib-2.0.lib. Note that the "2.0" is part of the "basename" of the library, it is not something that libtool has tucked on. The -0 suffix @@ -189,6 +152,20 @@ and automake.) Tor hasn't tested this in a while, either. Building with MSVC ================== +If you are building from a CVS snapshot, you will not have any +makefile.msc files. You should copy the corresponding makefile.msc.in +file to that name, and replace any @...@ strings with the correct +value. + +This is done automatically when an official GLib source distribution +package is built, so if you get GLib from a source distribution +package, there should be makefile.msc files ready to use (after some +editing). + +The hand-written makefile.msc files, and the stuff in the "build" +subdirectory, produce DLLs and import libraries that match what the +so-called autoconfiscated build produces. + All the MSVC makefiles are for the command line build with nmake. If you want to use the VC-UI you can simply create wrapper .dsp makefiles (read the VC docs how to do so). |