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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
|
Building Enigma for Windows
===========================
This file outlines the steps required to build Enigma versions for
Windows. If you find inaccuracies or omissions in this file, please
report them to enigma-devel@nongnu.org.
1) Native compilation
---------------------
It seems no one has managed to build Enigma with Visual Studio yet, so
you must resort to MinGW port of GNU C++ and the other GNU build
tools. (Setting up a usable build environment is unfortunately more
difficult than the following notes suggest; prepare for a certain
amount of "tinkering". But you can always ask for help on the Enigma
mailing list.)
- Get and install MinGW from www.mingw.org
- Get and install the appropriate development packages of
* SDL >= 1.2 (www.libsdl.org)
* SDL_mixer >= 1.2.4 (http://www.libsdl.org/projects/SDL_mixer)
* SDL_image >= 1.2.0 (http://www.libsdl.org/projects/SDL_image)
* SDL_ttf (http://www.libsdl.org/projects/SDL_ttf)
* zlib
* libpng
* Xerces-C
- Build Enigma by invoking "./configure && make" from the Enigma
source directory.
For a more detailed memory log see appendix A)
2) Cross compilation
--------------------
You can also build Enigma for Windows from Linux. Because most
development tools are readily available on Linux, this may in fact be
easier than the native compilation outlined above. You need:
- A Linux version of the MinGW compiler. Debian has prebuilt packages
for this (check gcc -v includes --enable-sjlj-exceptions),
for other distributions try:
/etc/build-cross.sh
a updated and modified version of the script from
http://www.libsdl.org/extras/win32/cross/README.txt
- Get and install the libraries listed above
- Configure the Enigma source code using etc/mingw32-configure.sh.
Depending on your setup, you may have to adapt this little script
a little bit.
- Run "make"
For a more detailed memory log see appendix B)
3) Packaging
------------
There are two ways to package Enigma: Either as a simple .zip file or
as a graphical installer. The script in etc/mingw32-dist.sh builds a
.zip package that includes all necessary files. It also includes in
enigma.nsi a simple NSIS script that can be used to build a graphical
installer from the zip file. Here is how:
- Install NSIS 2.0 from www.nsis.org (It also runs under Wine if you
are a Linux user).
- Build a .zip package.
- Extract the zip file and run the NSIS compiler on the included
.nsi file.
4) Additional Notes
-------------------
A) Native MinGW Compilation
---------------------------
Decide where to install mingw,msys and GnuWin32 - the main restriction is are
paths without spaces (f.e. D:\MinGW, D:\msys, D:\GnuWin32).
Install MinGW-version.exe (includes: runtime+w32api+binutils+gcc-[core+g++]+make)
Install MinSys-version.exe
Install msysDTK-version.exe
Install msys-autoconf-2.59.tar.bz2 to msys
(Install msys-automake-1.8.2.tar.bz2 to msys)
Execute all shell commands from now on in msys/bash
Extract texi2html - ./configure;make;make install
Add GnuWin32/bin to PATH (either Windows or msys/bash)
Extract gettext-bin + dep to GnuWin32
Extract zip-bin to GnuWin32
Install upx anywhere in PATH
SDL-devel-1.2.14-mingw32.tar.gz
extract to a workdir
cp -rv bin lib share include /mingw/
sed 's|^prefix=.*|prefix=/minw/|' <bin/sdl-config > /mingw/bin/i386-mingw32msvc-sdl-config
cp /mingw/share/aclocal/sdl.m4 /share/aclocal/
cp bin/*.dll to enigma/etc
SDL_ttf-devel-2.0.9-VC8.zip, SDL_mixer-devel-1.2.11-VC.zip, SDL_image-devel-1.2.10-VC.zip
extract
cp includes to /mingw/include/SDL
cp lib/*.lib to /mingw/lib
cp lib/*.dll to enigma/etc
libpng-1.2.18.tar.gz
extract to workdir
./configure --prefix=/mingw
make
make install
zlib-1.2.3-lib.zip
extract
cp includes to /mingw/include
cp lib/libz.dll.a to /mingw/lib
curl
xerces-c
./configure --prefix=/mingw
make
make install
enigma
./autogen.sh
./configure
cd etc
./mingw32-dist.sh
Install etc/enigma.zip
B) Cross MinGW Compilation
---------------------------
Decide where to install the cross compiler. The project default is
/usr/i586-mingw32msvc with root ownership. If you are sure that you are the
only cross compile user you can install it in your homedir, too.
Let us call the installation base path CROSSPREFIX and TARGET the system we
build for (default: i586-mingw32msvc). Then we will define
CROSSPATH = CROSSPREFIX/TARGET (default:/usr/i586-mingw32msvc/i586-mingw32msvc)
etc/build-cross.sh copy as root or user to a workdir
edit PREFIX to your selected CROSSPATH
edit MINGW_URL if appropriate
execute it - this will take some time
(you may save the downloaded source directory - the rest can be deleted)
chown -R root:root CROSSPATH
SDL-devel-1.2.11-mingw32.tar.gz
extract to a workdir
move include/* to CROSSPATH/include/SDL
edit Makefile CROSS_PATH to your selected CROSSPATH
edit bin/i386-mingw32msvc-sdl-config prefix to your selected CROSSPATH
make cross
ln -s CROSSPATH/bin/i386-mingw32msvc-sdl-config CROSSPREFIX/bin/sdl-config
cp bin/*.dll to enigma/etc
SDL_ttf-devel-2.0.9-VC8.zip, SDL_mixer-devel-1.2.8-VC8.zip, SDL_image-devel-1.2.6-VC8.zip
extract
cp includes to CROSSPATH/include/SDL
cp lib/*.lib to CROSSPATH/lib
cp lib/*.dll to enigma/etc
zlib-1.2.3-lib.zip
extract
cp includes to CROSSPATH/include
cp lib/libz.dll.a to CROSSPATH/lib
curl
xerces-c
cp etc/xerces-mingw-config.sh to base directory of xerces-c
edit xerces-mingw-config.sh - add your CROSSPREFIX/bin to PATH,
use your TARGET as commandprefix
execute "xerces-mingw-config.sh --prefix=CROSSPATH --disable-transcoder-icu --disable-netaccessor-curl
PATH=CROSSPREFIX/bin:$PATH (the path defined at the beginning!)
make
make install (as root with PATH=CROSSPREFIX/bin:$PATH)
libpng, curl
build, install like xerces
cp libpng12.dll to enigma/etc
enigma
export ENIGMADEVDLLS="SDL SDL_image SDL_mixer SDL_ttf jpeg libpng13 zlib"
export ENIGMADEVCROSSPREFIX=CROSSPREFIX (the path defined at the beginning!)
./autogen.sh
cd etc
./mingw32-configure.sh
./mingw32-dist.sh
install etc/enigma.zip on Windows
|