Development:Compiling

From Adonthell
Revision as of 20:37, 17 November 2011 by Shirish (talk | contribs) (just edited the TOC, it makes it easier to find things ~~~~)
Jump to navigation Jump to search

After having installed all of Adonthell's Dependencies and obtained the source code from Git you can finally compile it. Please follow the general instructions and see the hints specific to your OS if you get stuck. Refer to the instructions included with the source code for further details.

General Instructions

For all Systems, we assume a POSIX-like environment with GNU compiler and make and a shell. Where supported, you should use the CMake based build system, but we'll probably keep the GNU autotools around for some while too. In both cases, an out-of-source build is recommended.

Building dependencies

google-glog, googletest, and googlemock require special preparation, as only googletest seems to be currently packed for Ubuntu, and the packaged version is well out of date.

google-glog

  1. Get the source:
    wget http://google-glog.googlecode.com/files/glog-0.3.0.tar.gz
  2. Unpack the source:
    tar xvzf glog-0.3.0.tar.gz
  3. Build and install:
    cd glog-0.3.0
./configure && make && sudo make install

googletest

  1. Get the source:
    wget http://googletest.googlecode.com/files/gtest-1.4.0.tar.gz
  2. Unpack the source:
    tar xvzf gtest-1.4.0.tar.gz
  3. Get the patch:
    wget http://www.jmglov.net/opensource/src/gtest-1.4.0_pkg-config.patch
  4. Patch the source:
    patch -p0 <gtest-1.4.0_pkg-config.patch
  5. Build and install:
    cd gtest-0.4.0&#13;./configure && make && sudo make install

googlemock

  1. Get the source:
    wget http://googlemock.googlecode.com/files/gmock-1.4.0.tar.gz
  2. Unpack the source:
    tar xvzf gmock-1.4.0.tar.gz
  3. Get the patch:
    wget http://www.jmglov.net/opensource/src/gmock-1.4.0_pkg-config.patch
  4. Patch the source:
    patch -p0 <gmock-1.4.0_pkg-config.patch
  5. Build and install:
    cd gmock-0.4.0&#13;./configure && make && sudo make install

CMake based build

Inside the adonthell directory type:

 mkdir ../adonthell-build && cd ../adonthell-build
 cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DDEVBUILD=1 ../adonthell
 make
 sudo make install

Beware: with cmake prior to version 2.6 you should remove old versions of the Adonthell 0.4 libraries before the build.

The -DDEVBUILD=1 enables a developer build, which gives you unit tests and debug symbols; if you are compiling Adonthell as an end user, you probably won't want to turn this on.

GNU Autotools based build

Inside the adonthell directory type:

 ./autogen.sh
 mkdir ../adonthell-build && cd ../adonthell-build
 ../adonthell/configure --enable-dev-build --prefix=/usr/local
 make
 sudo make install

The --enable-devbuild enables a developer build, which gives you unit tests and debug symbols; if you are compiling Adonthell as an end user, you probably won't want to turn this on.

GNU Autotools build for Adonthell-tools

There is another directory called adonthell-tools. It also functions the same way.

 ./autogen.sh
/somepath/adonthell-tools/$ mkdir ../adonthell-tools-build && cd ../adonthell-build
/somepath/adonthell-tools-build/$ ../adonthell-tools/configure --enable-dev-build --prefix=/usr/local
 make
 sudo make install

Installing in custom directory

If you'd like to change the default installation directory (for example to be able to install without root privileges), it's possible to specify a different one when invoking cmake or configure. It's important to add the directory, where the adonthell python modules are installed, to PYTHONPATH.

CMake

There two commandline options that control the installation path are:

  1. -DCMAKE_INSTALLATION_PREFIX=/path/to/adonthell: controls, where the adonthell libraries and headers are installed.
  2. -DPYTHON_SITE_PACKAGE_DIR=/path/to/python/modules: controls, where python bindings for adonthell are installed. The same path as specified here should be appended to PYTHONPATH.

GNU Autotools

The installation path is defined using the --prefix=/path/to/adonthell option.

Note: Its advisable to add the variables where you are installing adonthell in your $PATH if its in a non-standard location as well as PKG_CONFIG_PATH to tell where the libraries are.

Finding default PATH environment variables on GNU/Linux :- One can find the default PATH by doing :-

     $echo $PATH

On a reasonably clean system it should give something like this:-

    $echo $PATH
    $/usr/local/bin:/usr/bin:/bin:

Now one can add adonthell to the path by pushing it to your .bashrc. .bashrc to put simply has each user's commands, the way (s)he likes her command prompt and many such things. To add it, simply write the following on the CLI (Command-Line Interface) or/and bash prompt.

   $echo 'export PATH="$PATH:$HOME/somepath/adonthell"' >> ~shirish/.bashrc

Similarly you need to also add an environment variable called 'PKG_CONFIG_PATH' which you can either call from the CLI each time or add it to your .bashrc one time as well. On a bare/clean system you will see nothing.

   $echo $PKG_CONFIG_PATH
   
   $

This means there was no output. Now you can add it as same as we did for path, the only difference is the environment variable and the location of pkg_config. As said before this can be known ONLY after adonthell has been installed.

   $echo 'export PKG_CONFIG_PATH="$PATH:$HOME/somepath/adonthell/lib/pkgconfig"' >> ~shirish/.bashrc

Each variable entered starts to function in a new terminal instance.So start a new terminal instance and see each of them.

  $echo $PKG_CONFIG_PATH
  :/home/shirish/games/adonthell/lib/pkgconfig
  $

This means things are correctly defined there.

Running Adonthell

After compiling adonthell go to the test directory within adonthell-build

 /somepath/adonthell-build$cd test
 /somepath/adonthell-build/test/$  ./worldtest -g ../../adonthell/test data

Also run this one :-

 /somepath/adonthell-build/test/$ ./worldtest -g ../.. wastesedge

Somepath denotes here an arbitary location chosen by the user. Some arbitary static location on the hard disk where the user wants to put all the adonthell directories.

Developing on GNU/Linux or *BSD

Most, if not all, dependencies should come with your distribution. Just make sure to install the corresponding development packages. In case that you require a newer version of a library or tool than comes with the distribution, you should be able to compile and install it yourself without much trouble.

In general, you should be able to use any IDE of your choice as long as it is not messing with the Makefiles. If you have a particular good setup, feel free to share the instructions.

Developing on MacOS X

Like on Linux, you can get most of the dependencies in the form of precompiled binaries, e.g. from the Fink Project. If you need an IDE, use XCode.

Most likely I will buy a new Mac once Leopard is released. Then I'll document all the required steps to get an Adonthell development environment going. (Kai)

Developing on Windows

Since Adonthell requires the GNU Compiler Collection (GCC), your best choices are either Cygwin or MinGW. In order to produce "true" Windows binaries that do not depend on the Cygwin POSIX layer (cygwin1.dll), setting up a development environment with MSYS/MinGW is recommended. A good IDE to use would be Eclipse, which is becoming supported directly by CMake.

Developing on other OS

Sorry, right now you are on your own. But if your system has a recent port of GCC and is supported by SDL, chances are pretty good that you will get Adonthell working. Please update this space if you did :-).

Fixing problems

ImportError: No module named adonthell.world

In case you have multiple versions of Python installed, CMake can get confused. If, during the initial run of cmake you get a mix of versions like seen below, Adonthell will not work correctly.

 Found PythonLibs: /usr/lib/python2.4/config/libpython2.4.so
 -- Python has been found:
 -- CFLAGS : /usr/include/python2.4
 -- LDFLAGS: /usr/lib/python2.4/config/libpython2.4.so
 -- Found PythonInterp: /usr/bin/python2.5
 -- VERSION: python2.5
 -- LDEXTRA: -lm;-lpthread -ldl  -lutil
 -- SITEPKG: /usr/lib/python2.5/site-packages

The only workaround for that is removing any superfluous Python installations, then running cmake again.

debug.py not found

In case you get the error while make install, that a debug.py file cannot be found, simply

echo crap > ../adonthell/src/py-wrappers/runtime/debug.py