Cross compiling for Windows using MinGW

From OdaWiki
Revision as of 04:44, 7 May 2008 by Exp(x) (Talk | contribs) (colon and capitalization consistency)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This document is written for Debian and Ubuntu users. The process should be similar for other distributions, but installing the prerequisites will most likely be different.

Step 1: Installing and configuring the prerequisites

In order to build Windows binaries, you'll need MinGW, SDL, and SDL_mixer. This tutorial also assumes you're building the latest revision, so you'll need Subversion.

Subversion and MinGW are in the repositories, so to install them, type:

sudo apt-get install mingw32 subversion

Odamex expects the g++ compiler to be named mingw32-g++, create a link:

sudo ln -s /usr/bin/i586-mingw32msvc-g++ /usr/bin/mingw32-g++

Download SDL and SDL_mixer:

wget http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz
wget http://www.libsdl.org/release/SDL-1.2.13-win32.zip
wget http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-devel-1.2.8-VC8.zip

Extract the archives:

tar zxvf SDL-devel-1.2.13-mingw32.tar.gz
unzip SDL-1.2.13-win32.zip SDL.dll -d SDL-1.2.13/lib/
unzip SDL_mixer-devel-1.2.8-VC8.zip

The sdl-config utility needs to be modified to contain the correct prefix:

mv SDL-1.2.13/bin/sdl-config SDL-1.2.13/bin/sdl-config.bak
cat SDL-1.2.13/bin/sdl-config.bak | \
    sed 's/\/Users\/hercules\/tmp\/SDL-1.2.13/\/usr\/i586-mingw32msvc/' \
    > SDL-1.2.13/bin/sdl-config
chmod +x SDL-1.2.13/bin/sdl-config

Move the files where they belong:

sudo mv SDL-1.2.13/bin/sdl-config /usr/i586-mingw32msvc/bin/
sudo mv SDL-1.2.13/include/SDL/* /usr/i586-mingw32msvc/include/
sudo mv SDL-1.2.13/lib/* /usr/i586-mingw32msvc/lib/
sudo mv SDL_mixer-1.2.8/include/* /usr/i586-mingw32msvc/include/
sudo mv SDL_mixer-1.2.8/lib/* /usr/i586-mingw32msvc/lib/

You don't need the archives or what's left of their contents anymore. Delete them:

rm -rf SDL-1.2.13 SDL_mixer-1.2.8 SDL-devel-1.2.13-mingw32.tar.gz \
    SDL-1.2.13-win32.zip SDL_mixer-devel-1.2.8-VC8.zip

Step 2: Downloading the source

Use Subversion to check out a copy of the source:

svn co http://odamex.net/svn/root/trunk odamex-win32

Change to the source directory:

cd odamex-win32

Step 3: Compiling

Add the MinGW bin directory to your PATH so that the correct sdl-config is used:

PATH="/usr/i586-mingw32msvc/bin:$PATH"

And compile:

make -f Makefile.win

Step 4: Installing

The exe files are in the bin directory. A few more files are still needed to run in Windows. Copy them there:

cp /usr/i586-mingw32msvc/lib/SDL.dll /usr/i586-mingw32msvc/lib/SDL_mixer.dll \
    README odamex.wad odasrv.cfg bin/

You're all done! Copy the bin directory to a Windows machine and enjoy.