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
(documenting my effort to cross-compile :()
(https://bitbucket.org/giszmo/glob2 again)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page explains how to build and test glob2 for Windows on a Debian/Ubuntu GNU/Linux operating system.
{{OutDated|This guide is no longer valid|Globulation now uses scons to compile the source. If you do a cross compile please update this page accordingly. Thanx.}}


This page explains how to build and test globulation2 for windows on a Debian GNU/Linux operating system.
To see how to compile it natively on Windows, please see [[Mingw compilation]].
To see how to compile it natively on Windows, please see [[Mingw compilation]].


For any problems or suggestions, don't hesitate to contact [[User:Ion bidon|me]].

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


===Compile globulation2 for Windows on Debian using mingw===
[[Image:Cross_compiled_wine_test.png|thumb]]


#Install a mingw compiler:
===Compile globulation2 for windows on Debian using mingw===
#:<pre>sudo apt-get install mingw32-binutils mingw32 mingw32-runtime</pre>
#Install NSIS (required only if you want to build NSIS installer):
#:<pre>sudo apt-get install nsis</pre>
#Create the following directory:
#:<pre>mkdir build</pre>
#:<pre>cd build</pre>
#Download glob2_required_libs_mingw-scons.tar.bz2:
#:<pre>wget http://dl.sv.nongnu.org/releases/glob2/mingw/glob2_required_libs_mingw-scons.tar.bz2</pre>
#Untar the libraries:
#:<pre>tar -xjf glob2_required_libs_mingw-scons.tar.bz2</pre>
#Download glob2 sources from mercurial (check [[Compiling#Sources_from_Mercurial]] for details):
#:<pre>hg clone https://bitbucket.org/giszmo/glob2</pre>
#:<pre>cd glob2-new</pre>
#Compile:
#:<pre>scons -j5 mingwcross=yes</pre>
#To create NSIS installer package run after previous step:
#:<pre>scons -j5 mingwcross=yes dist</pre>


#install mingw :
#:<pre>apt-get install mingw32 mingw32-binutils mingw32-runtime</pre>
#install wine from the wine repository :
#:Change the file /etc/apt/sources.list and add <pre>deb http://wine.sourceforge.net/apt/ binary/</pre>
#:<pre>apt-get update && apt-get install wine && ln -s /usr/bin/wine /usr/bin/wine-auto</pre>
#create the following directory :
#:<pre>mkdir libs</pre>
#download glob2_required_libs_mingw.tar.bz2 :
#:<pre>wget http://globulation2.org/dev/glob2_required_libs_mingw.tar.bz2</pre>
#untar the libraries like this :
#:<pre>tar jxf glob2_required_libs_mingw.tar.bz2 -C ./libs</pre>
#download boost c++ precompiled libraries :
#:broken link ... <pre>wget http://viral.media.mit.edu/releases/boost-1.33.1-mingw-bin.tar.gz</pre></s>
#manually install boost c++ with the following commands :
#:<pre>tar zxf boost-1.33.1-mingw-bin.tar.gz</pre>
#:<pre>mv boost/include/boost-1_33_1/boost ./libs/include</pre>
#:<pre>mv boost/lib/* ./libs/lib</pre>
#Install a mingw compiler
#:<pre>sudo aptitude install mingw32-binutils mingw32 mingw32-runtime</pre>
#From the directory containing the libs directory, type the following :
#:<pre>export CC="i586-mingw32msvc-gcc"</pre>
#:<pre>export CXX="i586-mingw32msvc-g++"</pre>
#:<pre>export CFLAGS="-I$PWD/libs/include $CFLAGS"</pre>
#:<pre>export CXXFLAGS="-I$PWD/libs/include -I$PWD/libs/include/freetype2 $CXXFLAGS"</pre>
#:<pre>export LDFLAGS="-L$PWD/libs/lib $LDFLAGS"</pre>
#:<pre>export PATH=/usr/local/mingw/bin:/usr/i586-mingw32msvc/bin:$PWD/libs/bin:$PATH</pre>
#:<pre>rm ./libs/bin/auto*</pre>
#: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
#download glob2 mercurial:
#:<pre>hg clone http://hg.globulation2.org/glob2-new/</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/lib/libvorbisfile.a ../libs/lib/libvorbis.a ../libs/lib/libogg.a .</pre>
#:Open the configure.in file, find:
#::<table width="90%"><tr valign="top"><td style="border: 1px dashed #000000; padding: .3em .9em .3em; color: #000000; background-color: #F8F8FF">CPPFLAGS="$CPPFLAGS $SDL_CFLAGS"</td></tr></table>
#::and replace with:
#::<table width="90%"><tr valign="top"><td style="border: 1px dashed #000000; padding: .3em .9em .3em; color: #000000; background-color: #F8F8FF">CPPFLAGS="$CPPFLAGS $SDL_CFLAGS -I/usr/include/freetype2"<br />LDFLAGS="$LDFLAGS `sdl-config --libs` -lSDL_ttf"</td></tr></table>
#:In the same file, find:
#::<table width="90%"><tr valign="top"><td style="border: 1px dashed #000000; padding: .3em .9em .3em; color: #000000; background-color: #F8F8FF">LIBS="$LIBS -logg -lwsock32"</td></tr></table>
#::and replace with:
#::<table width="90%"><tr valign="top"><td style="border: 1px dashed #000000; padding: .3em .9em .3em; color: #000000; background-color: #F8F8FF">LIBS="$LIBS -lwsock32 ../libvorbisfile.a ../libvorbis.a ../libogg.a"</td></tr></table>
#compiling glob2 :
#:<pre>./bootstrap</pre>
#:<pre>./configure --host=i586-mingw32msvc</pre>
#:<pre>make</pre>
#To make the executable smaller :
#:<pre>strip ./src/glob2.exe</pre>


===Test globulation2 for windows on Debian ===
===Test globulation2 for Windows on Debian===


#Install wine:
#download glob2_windows_runtime.tar.bz2
#:<pre>sudo apt-get install wine</pre>
#:<pre>wget http://globulation2.org/dev/glob2_windows_runtime.tar.bz2</pre>
#Copy files necessary to run:
#extract it with :
#:<pre>tar jxf glob2_windows_runtime.tar.bz2</pre>
#:<pre>cp src/glob2.exe .</pre>
#:<pre>cp ../local/bin/* ../local/lib/* .</pre>
#go in the glob2 directory where you have compiled glob2 and type
#Run glob2:
#:<pre>./syncdata</pre>
#:<pre>./syncmaps</pre>
#:<pre>wine glob2.exe</pre>
#copy the content of glob2/data/ to glob2_runtime/data/
#copy the content of glob2/maps/ to glob2_runtime/maps/
#copy glob2.exe which is in the src directory (glob2/src/) to glob2_runtime/
#run wine glob2.exe from the glob2_runtime directory and play :)


[[Category:en]]
[[Category:en]]

Latest revision as of 19:31, 4 October 2012

This page explains how to build and test glob2 for Windows on a Debian/Ubuntu GNU/Linux operating system. To see how to compile it natively on Windows, please see Mingw compilation.


Compile globulation2 for Windows on Debian using mingw

  1. Install a mingw compiler:
    sudo apt-get install mingw32-binutils mingw32 mingw32-runtime
  2. Install NSIS (required only if you want to build NSIS installer):
    sudo apt-get install nsis
  3. Create the following directory:
    mkdir build
    cd build
  4. Download glob2_required_libs_mingw-scons.tar.bz2:
    wget http://dl.sv.nongnu.org/releases/glob2/mingw/glob2_required_libs_mingw-scons.tar.bz2
  5. Untar the libraries:
    tar -xjf glob2_required_libs_mingw-scons.tar.bz2
  6. Download glob2 sources from mercurial (check Compiling#Sources_from_Mercurial for details):
    hg clone https://bitbucket.org/giszmo/glob2
    cd glob2-new
  7. Compile:
    scons -j5 mingwcross=yes
  8. To create NSIS installer package run after previous step:
    scons -j5 mingwcross=yes dist


Test globulation2 for Windows on Debian

  1. Install wine:
    sudo apt-get install wine
  2. Copy files necessary to run:
    cp src/glob2.exe .
    cp ../local/bin/* ../local/lib/* .
  3. Run glob2:
    wine glob2.exe
Misc