Free and Open Source real time strategy game with a new take on micro-management

Difference between revisions of "Mingw cross compilation"

From Globulation2

Jump to: navigation, search
Line 40: Line 40:
#:change the third line of ./libs/bin/sdl-config from prefix=/usr to point to the libs directory (hard path) or from the directory containing the libs directory, type:<br />
#:change the third line of ./libs/bin/sdl-config from prefix=/usr to point to the libs directory (hard path) or from the directory containing the libs directory, type:<br />
#:perl -e '$pwd=%ENV->{PWD};$tmp="";while(<>){chomp;if(s/prefix=\/usr/prefix=/g){$_="prefix=".$pwd."/libs"}$tmp.= $_."\n"}open(FI,"+< ./libs/bin/sdl-config");print FI $tmp;' ./libs/bin/sdl-config
#:perl -e '$pwd=%ENV->{PWD};$tmp="";while(<>){chomp;if(s/prefix=\/usr/prefix=/g){$_="prefix=".$pwd."/libs"}$tmp.= $_."\n"}open(FI,"+< ./libs/bin/sdl-config");print FI $tmp;' ./libs/bin/sdl-config
#download glob2 cvs (as anonymous for example) :
#download glob2 mercurial:
#:<pre>export CVS_RSH="ssh"</pre>
#:<pre>hg clone http://hg.globulation2.org/glob2/</pre>
#:<pre>cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/glob2 co glob2</pre>
#:<pre>cd glob2</pre>
#:<pre>cd glob2</pre>
#:<pre>cp ../libs/bin/SDL.dll ../libs/bin/libvorbis-0.dll ../libs/bin/libogg-0.dll ../libs/bin/libvorbisenc-2.dll ../libs/bin/libfreetype-6.dll .</pre>
#:<pre>cp ../libs/bin/SDL.dll ../libs/bin/libvorbis-0.dll ../libs/bin/libogg-0.dll ../libs/bin/libvorbisenc-2.dll ../libs/bin/libfreetype-6.dll .</pre>

Revision as of 01:42, 22 April 2007

This page explains how to build and test globulation2 for windows on a Debian GNU/Linux operating system.

For any problems or suggestions, don't hesitate to contact me. Ion bidon

Remark: if you use another mingw compiler than the one requested to download in this page, compilation might fail.

Cross compiled wine test.png

Compile globulation2 for windows on Debian using mingw

  1. install mingw :
    apt-get install mingw32 mingw32-binutils mingw32-runtime
  2. install wine from the wine repository :
    Change the file /etc/apt/sources.list and add
    deb http://wine.sourceforge.net/apt/ binary/
    apt-get update && apt-get install wine && ln -s /usr/bin/wine /usr/bin/wine-auto
  3. create the following directory :
    mkdir libs
  4. download glob2_required_libs_mingw.tar.bz2 :
    wget http://globulation2.org/dev/glob2_required_libs_mingw.tar.bz2
  5. untar the libraries like this :
    tar jxf glob2_required_libs_mingw.tar.bz2 -C ./libs
  6. download boost c++ precompiled libraries :
    wget http://viral.media.mit.edu/releases/boost-1.33.1-mingw-bin.tar.gz
  7. manually install boost c++ with the following commands :
    tar zxf boost-1.33.1-mingw-bin.tar.gz
    mv boost/include/boost-1_33_1/boost ./libs/include
    mv boost/lib/* ./libs/lib
  8. Download a mingw compiler that works :
    wget http://mirrors.ircam.fr/pub/videolan/testing/win32/mingw-gcc3.3.1-linux-crosscompiler.tar.bz2
  9. As root, unpack the compiler (it will create a mingw directory in /usr/local) :
    tar jxf mingw-gcc3.3.1-linux-crosscompiler.tar.bz2 -C /
  10. From the directory containing the libs directory, type the following :
    export CC="i586-mingw32msvc-gcc"
    export CXX="i586-mingw32msvc-g++"
    export CFLAGS="-I$PWD/libs/include $CFLAGS"
    export CXXFLAGS="-I$PWD/libs/include -I$PWD/libs/include/freetype2 $CXXFLAGS"
    export LDFLAGS="-L$PWD/libs/lib $LDFLAGS"
    export PATH=/usr/local/mingw/bin:/usr/i586-mingw32msvc/bin:$PWD/libs/bin:$PATH
    rm ./libs/bin/auto*
    change the third line of ./libs/bin/sdl-config from prefix=/usr to point to the libs directory (hard path) or from the directory containing the libs directory, type:
    perl -e '$pwd=%ENV->{PWD};$tmp="";while(<>){chomp;if(s/prefix=\/usr/prefix=/g){$_="prefix=".$pwd."/libs"}$tmp.= $_."\n"}open(FI,"+< ./libs/bin/sdl-config");print FI $tmp;' ./libs/bin/sdl-config
  11. download glob2 mercurial:
    hg clone http://hg.globulation2.org/glob2/
    cd glob2
    cp ../libs/bin/SDL.dll ../libs/bin/libvorbis-0.dll ../libs/bin/libogg-0.dll ../libs/bin/libvorbisenc-2.dll ../libs/bin/libfreetype-6.dll .
    cp ../libs/lib/libvorbisfile.a ../libs/lib/libvorbis.a ../libs/lib/libogg.a .
    Open the configure.in file, find:
    CPPFLAGS="$CPPFLAGS $SDL_CFLAGS"
    and replace with:
    CPPFLAGS="$CPPFLAGS $SDL_CFLAGS -I/usr/include/freetype2"
    LDFLAGS="$LDFLAGS `sdl-config --libs` -lSDL_ttf"
    In the same file, find:
    LIBS="$LIBS -logg -lwsock32"
    and replace with:
    LIBS="$LIBS -lwsock32 ../libvorbisfile.a ../libvorbis.a ../libogg.a"
  12. compiling glob2 :
    ./bootstrap
    ./configure --host=i586-mingw32msvc
    make
  13. To make the executable smaller :
    strip ./src/glob2.exe

Test globulation2 for windows on Debian

  1. download glob2_windows_runtime.tar.bz2
    wget http://globulation2.org/dev/glob2_windows_runtime.tar.bz2
  2. extract it with :
    tar jxf glob2_windows_runtime.tar.bz2
  3. go in the glob2 directory where you have compiled glob2 and type
    ./syncdata
    ./syncmaps
  4. copy the content of glob2/data/ to glob2_runtime/data/
  5. copy the content of glob2/maps/ to glob2_runtime/maps/
  6. copy glob2.exe which is in the src directory (glob2/src/) to glob2_runtime/
  7. run wine glob2.exe from the glob2_runtime directory and play :)
Misc