summaryrefslogtreecommitdiffstats
path: root/HOWTO-MXE.txt
blob: 67107bd27b4478567e713b194ff53ad62643e4e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Cross-compiling with MXE (http://mxe.cc)

MXE works for any BSD-compatible system (including Linux).
It is a complete package with cross-compiler to Win32 (a MinGW variant)
and includes scripts to automatically download and build many 3rd party
libraries and tools.

1. See the MXE website for list of required packages and make sure
   you have them installed.

2. Download MXE and unpack it in the directory, where you want to keep it
   permanently. During the build, MXE will write that path to many files,
   so moving that directory can be tricky.

3. `cd' to the MXE root directory.
   It already contains a universal Makefile for everything.
   Usage is simply `make [name_of_package]'.
   It will automatically check for dependencies, etc.
   The packages will be installed in the MXE directory in usr/.

   You need to `make gcc' for basic compiler and then some additional
   libraries. In the end, you should have the following packages installed
   (this is the final listing of usr/installed/):

    binutils
    boost
    bzip2
    check-requirements
    expat
    freetype
    gcc
    gcc-gmp
    gcc-mpc
    gcc-mpfr
    gettext
    glew
    jpeg
    libiconv
    libpng
    libtool
    mingwrt
    openal
    portaudio
    sdl
    sdl_image
    sdl_ttf
    tiff
    w32api
    xz
    zlib

4. Now `cd' to colobot directory. To cross-compile a CMake project, you have to specify
   a CMake toolchain file. MXE has such file in MXE's directory:
   usr/i686-pc-mingw32/share/cmake/mxe-conf.cmake
   Toolchain file is specified thus:
   `cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/mxe-conf.cmake .'
   The new CMake files in colobot should detect that MXE is being used and they will
   modify flags, paths, etc. You should not run into any problems.

5. `make' should now compile the game with the resulting exe in bin/colobot.exe.
   The exe is linked against all libraries *statically*, so there are no dependencies
   on external dlls. However, the resulting binary will be huge with all these libraries,
   so you should `strip bin/colobot.exe'.