Summary
=======

This file contains instructions on how to buid Eliot on various platforms.
In case of compilation problem, you can send a mail to the eliot-dev@nongnu.org
mailing-list.

1) General information: useful information for any platform
2) Linux/Unix build
3) Windows build
4) Mac OS X build



1) General information
======================

If you build Eliot from a CVS snapshot, you need to run ./bootstrap to generate
the configure script. This is not needed when building from a release tarball.

In the following, do not forget that the ./configure command can take options.
Run ./configure --help to have the list of available options.

Here are the external dependencies of Eliot, with a link to the relevant website.
You need to install them (at least the mandatory ones) before building Eliot.
Note that the OS-specific instructions may contain hints on how to install them easily.

 - libboost (mandatory): http://www.boost.org/
   --> Used for many things

 - libarabica (mandatory): http://www.jezuk.co.uk/cgi-bin/view/arabica
   --> Used for saving/loading games
   You can use any XML back-end supported by Arabica (like expat, or libxml2)

 - libconfig (optional): http://www.hyperrealm.com/libconfig/
   --> Used for saving/loading preferences

 - Qt (optional, but recommended): http://qt.nokia.com/
   --> Used for the graphical interface (see below)

 - libncursesw (optional): http://www.gnu.org/software/ncurses/
   --> Used for the ncurses interface (see below)

There are in fact several interfaces to Eliot:
 - one in text mode: mostly useful to debug Eliot
 - one using the ncursesw library: nice and almost complete, but not really
   graphical
 - a Qt interface: the best interface to use, it supports all the features.
   This one is enabled by default if Qt development files are detected, but
   you can force it with --enable-qt

These interfaces can be enabled or disabled at configuration time. Example:
    ./configure --disable-text --enable-ncurses --enable-qt



2) Linux/Unix build
===================

On Debian-based systems (like Ubuntu), the following command should install
the needed dependencies (you may need to adjust the version numbers):

    sudo apt-get install libboost-dev libqt4-core libqt4-gui libconfig++8-dev libncursesw5-dev

In addition, you need to download and build libarabica (this is straight-forward).

To build Eliot, you only have to run the following command:
    ./configure && make

Then, as root:
    make install



3) Windows build
================

There are 2 ways to proceed:
* cross-compilation from a Linux host, using the mingw32 cross-compiler
* directly on Windows, using Cygwin (http://www.cygwin.com/)
Only the cross-compilation is officially supported (but adapting these
instructions for Cygwin shouldn't be too hard; patches welcome!).

Here are the steps for the cross-compilation:

* install the build environment (this step is not documented here,
  as it is out of the scope of this document)

* build and install dependencies:
  The Makefile in the 'extras/contrib' directory should be able to do it for you:

    cd extras/contrib && make all

  Eliot dependencies will be downloaded and cross-compiled.
  The dependencies are installed in 'extras/contrib/inst'

* build Eliot:

    - if you don't have the 'configure' script, generate it:
            ./bootstrap

    - because of a bug in gettext, you may need to apply a little patch to the files
      installed in the 'intl' directory:
            - download the patch here (link in the top-left-hand corner)
              http://www.koders.com/noncode/fid46DF595700FEB564B6EF45BFF55067F95DCF0420.aspx
            - apply the patch:
              patch -p2 < gettext-win32.patch

    - configure with the following command:
            export INST=`pwd`/extras/contrib/inst && \
            PKG_CONFIG_PATH="${INST}/lib/pkgconfig:${PKG_CONFIG_PATH}" \
            CPPFLAGS=-I${INST}/include LDFLAGS=-L${INST}/lib \
            CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ \
            ./configure --host=i586-mingw32msvc --build=i386-linux \
            --with-boost=${INST}

    - to compile, run 'make', possibly followed with 'make install'

    - run 'make package-win32-zip' to get everything packed up in a nice .zip



4) Mac OS X build
=================

* Installing dependencies can be done easily using MacPorts (http://www.macports.org/):
    sudo port install libconfig-hr
    sudo port install boost
    sudo port install arabica
    sudo port install qt4-mac

* Configure: you can use the following command (assuming the dependencies are installed in /opt/local):
    CPPFLAGS="-I/opt/local/include/libxml2 -I/opt/local/include" \
    LDFLAGS="-L/opt/local/lib" \
    LIBS="-lxml2" \
    ./configure --enable-qt --disable-text

* You may need to remove the moc files manually:
    rm qt/*.moc.cpp

* To compile, run 'make'

* Then, to get a ready to use .dmg file, run 'make package-macosx-dmg'
