Compiling the GTK2 Crossfire client under Windows (MINGW) v1.0 These instructions will take you from a base MinGW installation.
1) Install MinGW. The easiest way (as of 2 Apr 2013) is by downloading mingw-get-inst from http://www.mingw.org/wiki/Getting_Started Follow the instructions for installing MinGW. Specifically, it is suggested that MinGW not be installed into a directory with a space in the name. 2) Use mingw-get to install libxml2: $ mingw-get install msys-libxml2 This version of libxml2 is really an internal library for mingw/msys. It is used so that pkg-config reports libxml2 is present. The actual library used is in the packages we install in step 3. 3) The easy stuff is done. The rest needs to be downloaded. We can get about halfway there right from gtk.org. Navigate a browser to: http://www.gtk.org/download/win32.php and download the run-time and dev packages for the following: GLib, ATK, Pango, gdk-pixbuf, GTK+, zlib, cairo, libpng, Freetype, Fontconfig, gettext-runtime, pkg-config A comprehensive list of URLs for each package follows at the end. Once you have each package, unzip them into the main MinGW installation folder. I did this by copying them into my MinGW installation directory and then right-clicking each one and selecting "7-Zip->Extract Here". This should work for you as long as you have 7-Zip installed too. You can also use the unzip command in MinGW for those packages that do not require manual installation. $ cd /mingw $ unzip <package> Some packages require manual steps to get them to work properly, and some need to be installed totally manually. Any manual steps are listed with each package below. Commands given are those that you would run from inside MinGW. Where a step says unzip to <mingw>/bin, then unzip and move the file to bin inside the mingw installation directory. Visual tools like 7-Zip make this much easier. PACKAGE LIST: - Package-config tool & dev http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.26-1_win32.zip - Glib 2.28.8 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.8-1_win32.zip - GetText 0.18.1.1 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip - libpng 1.4.3 bin and dev (manual steps required) http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.3-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.26-1_win32.zip You need to make a copy of the library so the Crossfire configure script can find it: $ cp /mingw/lib/libpng14.dll.a /mingw/lib/libpng.dll.a $ cp /mingw/bin/libpng14-14.dll /mingw/bin/libpng.dll - GTK+ 2.24.10 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+_2.24.10-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-dev_2.24.10-1_win32.zip - Pango 1.29.4 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.29/pango_1.29.4-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.29/pango-dev_1.29.4-1_win32.zip - cairo 1.10.2 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.10.2-2_win32.zip - Fontconfig 2.8.0 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.2-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig-dev_2.8.0-2_win32.zip - Freetype 2.4.2 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.2-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype-dev_2.4.2-1_win32.zip - gdk-pixbuf 2.24.0 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/gdk-pixbuf/2.24/gdk-pixbuf_2.24.0-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/gdk-pixbuf/2.24/gdk-pixbuf-dev_2.24.0-1_win32.zip - ATK 1.32.0 bin and dev http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.32/atk_1.32.0-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.32/atk-dev_1.32.0-2_win32.zip - zlib 1.2.5 bin and dev (note: this is in addition to the zlib noted below) http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib_1.2.5-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib-dev_1.2.5-2_win32.zip - zlib 1.2.3 dll only (manual installation required) http://sourceforge.net/projects/gnuwin32/files/zlib/1.2.3/zlib-1.2.3-bin.zip/download This version is required because another library (libcurl) is compiled against this and uses DLL ordinals rather than exported names. This DLL will end up being the one that is used. Do NOT place this one in the mingw system. Unzip the DLL only from this package and place it directly into <CrossfireClient>/gtk-v2/src - libglade 2.6.4 bin and dev http://ftp.gnome.org/pub/GNOME/binaries/win32/libglade/2.6/libglade_2.6.4-1_win32.zip http://ftp.gnome.org/pub/GNOME/binaries/win32/libglade/2.6/libglade-dev_2.6.4-1_win32.zip - libcurl 7.18.0 (requires manual installation) http://curl.haxx.se/download/libcurl-7.18.0-win32-msvc.zip This is a MSVC version of libcurl that also works with MinGW with manual installation: Unzip include/curl/* to <mingw>/include/curl Unzip libcurl.dll to <mingw>/bin Unzip and rename libcurl.lib to <mingw>/lib/libcurl.dll.a - libglut 3.7.6 (requires manual installation - see also http://www.opengl.org/wiki/MinGW) http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip Unzip glut.h to <mingw>/include/GL/glut.h Unzip and rename glut32.dll to <mingw>/bin/libglut.dll Unzip and rename glut32.lib to <mingw>/lib/libglut.dll.a - libxml 2.4.12 (requires manual installation) http://sourceforge.net/projects/gnuwin32/files/libxml/2.4.12-1/libxml2-2.4.12-bin.zip/download Unzip and rename libxml2.dll to <mingw>/bin/libxml2-2.dll - SDL 1.2.15 (requires manual installation) http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz Untar bin/sdl-config to <mingw>/bin/sdl-config Using any editor you like, edit sdl-config - line 3 should be: prefix=/mingw Untar bin/SDL.dll to <mingw>/bin/SDL.dll Untar include/SDL/* to <mingw>/include/SDL Untar lib/* to <mingw>/lib - SDL_image 1.2.12 (requires manual installation) http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.12-VC.zip Unzip lib/SDL_image.dll to <mingw>/bin/SDL_image.dll Unzip and rename lib/SDL_image.lib to <mingw>/lib/SDL_image.dll.a Unzip include/SDL_image.h to <mingw>/include/SDL/SDL_image.h 4) A couple changes (as of client version 1.70) need to be made to the client: Edit <CrossfireClient>/gtk-v2/src/config.c - line 46 should read: #ifdef __MINGW32__ Edit <CrossfireClient>/gtk-v2/src/Makefile.in - line 90 shold read: $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(GTK_CFLAGS) $(LIBGLADE_CFLAGS) That is just adding "$(GTK_CFLAGS) $(LIBGLADE_CFLAGS)" at the end 5) Before you run configure, you need to export the PKG_CONFIG_PATH variable: $ export PKG_CONFIG_PATH=/usr/lib/pkgconfig You should now be able to configure and make the client. No special arguments to configure should be needed. You should get a SDL and OpenGL enabled client. _______________________________________________ crossfire mailing list [email protected] http://mailman.metalforge.org/mailman/listinfo/crossfire

