[crossfire] Setting up MinGW to compile the client in Windows

Kurt Fitzner kurt.fitzner at gmail.com
Tue Apr 2 16:28:31 CDT 2013


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.



More information about the crossfire mailing list