DarkRadiant - Compiling in Linux

From The DarkMod Wiki
Revision as of 09:20, 8 November 2009 by Greebo (talk | contribs) (→‎Compile)
Jump to navigationJump to search

Install Libraries and Tools

Ubuntu 7.04

You'll need a bunch of packages to get DarkRadiant to compile without glitches. I can't remember all from the top of my head, I will try to complete this list during my next Linux setup, but don't hold your breath. These are the names as found in Ubuntu 7.04 (Feisty Fawn):

  • g++
  • gcc-4.1
  • libboost-dev
  • libboost-serialization-dev
  • libboost-filesystem-dev
  • libboost-regex-dev
  • libglew-dev
  • libgtk2.0-dev
  • libglib2.0-dev (maybe installed with libgtk2.0-dev)
  • libgtkglext1-dev
  • libxml2-dev
  • libopenal-dev
  • libalut-dev
  • libvorbis-dev
  • libboost-python-dev (for the optional scripting plugin)
  • python-dev (for the optional scripting plugin)

Always download all the dependencies as well.

If you get an error about the G++ compiler not being found, make sure you also install the g++ package, and not just the g++-4.1 package.

Ubuntu 7.10

  • g++
  • libboost-dev
  • libboost-regex-dev
  • libgtk2.0-dev
  • libglew1.4-dev
  • libgtkglext1-dev
  • libxml2-dev
  • libboost-serialization-dev
  • libboost-filesystem-dev
  • libboost-date-time-dev
  • libalut-dev
  • libvorbis-dev
  • libboost-python-dev (for the optional scripting plugin)
  • python-dev (for the optional scripting plugin)

Always download all the dependencies as well.

For the D3Hook plugin, the boost/asio library is needed (version 0.3.7, newer versions don't work). This library is located in the plugins/dm.d3hook/boost/ folder and should be ready for compilation.

Ubuntu 8.04

Copy and paste the following into a terminal:

sudo apt-get install g++ libboost-dev libboost-regex-dev libgtk2.0-dev libglew1.5-dev libgtkglext1-dev libxml2-dev libboost-serialization-dev libboost-filesystem-dev libboost-date-time-dev libalut-dev libvorbis-dev libboost-python-dev python-dev

The python headers are needed for the optional scripting plugin.

In the terminal, Ctrl Shift V is used for pasting instead of Ctrl V.

Ubuntu 8.10

Copy and paste the following into a terminal:

sudo apt-get install g++ libboost-dev libboost-regex-dev libgtk2.0-dev libglew1.5-dev libgtkglext1-dev libxml2-dev libboost-filesystem-dev libboost-serialization-dev libboost-date-time-dev libjpeg62-dev libalut-dev libvorbis-dev libboost-python-dev python-dev

The python headers are needed for the optional scripting plugin.

In the terminal, Ctrl Shift V is used for pasting instead of Ctrl V.

Ubuntu 9.10

Copy and paste the following into a terminal:

sudo apt-get install g++ libboost1.38-dev libgtk2.0-dev libglew1.5-dev libgtkglext1-dev libxml2-dev libalut-dev libvorbis-dev libboost-python-dev python-dev libgtksourceview2.0-dev

The python headers are needed for the optional scripting plugin.

Adjust the configure.ac file, as Ubuntu 9.10 appends the postfix -mt for each boost library installed in /usr/lib:

boost_regex => boost_regex-mt
boost_filesystem => boost_filesystem-mt
boost_system => boost_system-mt
boost_python => boost_python-mt
# Boost.Regex
AC_CHECK_LIB([boost_regex-mt], [main],
             [REGEX_LIBS='-lboost_regex-mt'],
             [AC_MSG_ERROR([Boost.Regex not found])])
AC_SUBST([REGEX_LIBS])

# Boost.Filesystem
AC_CHECK_LIB([boost_filesystem-mt], [main],
             [BOOST_FILESYSTEM_LIBS='-lboost_filesystem-mt'],
             [AC_MSG_ERROR([Boost.Filesystem not found])])
AC_SUBST([BOOST_FILESYSTEM_LIBS])

# Boost.System
AC_CHECK_LIB([boost_system-mt], [main],
             [BOOST_SYSTEM_LIBS='-lboost_system-mt'],
             [AC_MSG_ERROR([Boost.System not found])])
AC_SUBST([BOOST_SYSTEM_LIBS])

Same for the Python check below in configure.ac:

AC_CHECK_LIB([boost_python-mt], [main],
                [BOOST_PYTHON_LIBS='-lboost_python-mt'],
                [script_module=])

Then re-run ./autogen.sh and ./configure

Fedora 10

The Duke has posted a how-to in his blog at http://realduke.wordpress.com/2008/07/28/darkradiant-under-fedora-10/. I might quote the relevant parts about the needed packages:

To compile DarkRadiant under Fedora 10, we’ll need the folowing tools and libraries installed:

“subversion”(svn), “gcc”, “gcc-c++” (g++)
“boost-devel”, “gtk2-devel”, “glew-devel”, “gtkglext-devel”, “libxml2-devel”, “freealut-devel” and “libvorbis-devel”

For yum users, just copy and execute this:

“yum -y install subversion gcc gcc-c++ boost-devel gtk2-devel glew-devel gtkglext-devel libxml2-devel freealut-devel libvorbis-devel”

For the optional scripting plugin, you'll need the python and boost::python headers as well (note: I can't really check if these are correct, I don't have Fedora available --greebo):

libboost-python-devel python-devel

Obtain the source

Install the subversion client. On Ubuntu this can be done via the Synaptic Manager or the command line:

sudo apt-get install subversion

Change to the directory where you want the source code to be in and then check the current version out of SVN with:

svn checkout https://darkradiant.svn.sourceforge.net/svnroot/darkradiant/trunk/darkradiant/ darkradiant

Compile

Note: in the past, DarkRadiant was built using SCons. This build system has now been removed in favour of the standard Automake build.

First, make sure you have the automake toolchain downloaded:

sudo apt-get install libtool autoconf

Then run

./autogen.sh

in your darkradiant folder.

DarkRadiant employs an Autoconf/Automake build system under Linux as used in the majority of open-source projects. Compilation can be achieved using the standard

$ ./configure
$ make
$ make install

on most systems.

By default, a release build will be created; if a debug build is required pass the --enable-debug option to the configure script.

Other points to note about the configure process:

  • The DarkMod-specific plugins are not built by default. To enable these, pass --enable-darkmod-plugins to ./configure.
  • The configure script autodetects required dependencies, and will conditionally-enable optional components of DarkRadiant (such as the sound plugin) based on what it finds.
  • For quick testing of a DarkRadiant build, it is desirable to install it into a temporary location rather than the default of /usr/local; for this, simply pass a prefix option such as --prefix=/tmp/dr to configure, after which DarkRadiant will be installed in /tmp/dr/bin/darkradiant.
  • To build a Debian/Ubuntu package, simply run dpkg-buildpackage -rfakeroot in the main darkradiant directory. The .deb will be created in the parent directory.

If you want to update the source with the latest version from the SVN, just issue:

svn update

in the darkradiant source directory. svn info shows you what version you currently have.

Multiprocessor Systems

You can pass the --jobs=N parameter to make:

make --jobs=2

to use more than one processor for the compilation.

See also