DarkRadiant - Compilation Guide

From The DarkMod Wiki
Revision as of 08:08, 30 September 2012 by Greebo (talk | contribs) (removed VC++ 2008 section)
Jump to navigationJump to search

DarkRadiant's codebase is open source. To compile the sources you can either use Visual C++ 2010 Express (or higher) in Windows or gcc/g++ in Linux. Both compilers can be acquired for free.

Use Git

The main codebase is stored and maintained on github[1], you'll therefore need TortoiseGit (or a similar Git client).

Windows users: Download and install the git client, into any folder of your preference. After installation it might ask to reboot your machine, as Tortoise integrates into the Explorer shell.

Clone the Sources

Windows users: To prepare the source download, open Windows Explorer and create the folder you want to clone (i.e. download) the sources into. Use your Git client to clone the DarkRadiant repository from github:

Linux users: The git command line equivalent would be this:

git clone git://github.com/orbweaver/DarkRadiant.git

Cloning takes a minute or two - after the process is finished your folder should be looking like this:

Windows users: this is not yet enough to compile DarkRadiant in Windows, you still need to download and extract the dependencies, see the next step. Linux people: proceed directly to the Linux compilation article.

Windows: Download the Dependencies

For Windows builds additional dependencies must be downloaded and copied into the source tree. To keep the github source repository small, the dependencies can be downloaded as 7-zipped packages (you can get 7-zip here):

https://github.com/downloads/orbweaver/DarkRadiant/w32deps.7z
https://github.com/downloads/orbweaver/DarkRadiant/w64deps.7z (needed for x64 builds)

If you're in Windows 7 x64 (or any higher 64 bit Windows version) you need to download both packages. Download and extract them directly to the directory you cloned the sources to. The resulting folder structure should look like this.

Important: The w32deps/ (or w64deps/) folder must be in the same folder as the radiant/ or include/ folder.

Compilation

Once you've downloaded the sources, the steps for compiling DarkRadiant depend on your toolset/compiler. Choose one of the links below:

Advanced Users: Compiling the Windows Dependencies

Boost static libraries

Any VC++ compiler version other than the ones mentioned above will require a recompile of the boost static libraries which DarkRadiant links against. At the time of writing, DarkRadiant is using the following boost libraries:

  • boost.regex
  • boost.filesystem
  • boost.system
  • boost.python

To build these static libraries, boost provides the jam tool (bjam.exe), which can be used to build the statics for you. Go get the boost sources from their website (http://www.boost.org) and extract them into a new folder. Then get bjam (can also be downloaded from their website, but you can also build it from scratch)

Use DarkRadiant's build scripts

I prepared some batch files which do most of the dirty work for you. As prerequisite make sure that the path to bjam.exe is added to your PATH before invoking the scripts.

  • Open a console (Win-R ==> "cmd")
  • Change directories to the folder where you extracted the downloaded boost package to, e.g. c:\downloads\boost_1_42_0
  • Run the build scripts from there, e.g. c:\games\darkradiant\tools\scripts\build_boost_libs, assuming that the DarkRadiant SVN trunk has been checked out to c:\games\darkradiant.
  • Copy the files from the stage/ folder (which just popped up as a new Explorer window) to your w32deps/boost/libs folder.
  • [64 Bit Build]: Use the build_boost_libs.x64 batch file to build the x64 libraries, but beware that this will overwrite the current contents of the stage/ folder.

Build a boost library manually

See main article: Compile the static Boost Libraries in Windows

The *.lib files from the stage/ folder should be copied into your w32deps/boost/lib folder (or the w64deps/boost/lib for Win64 targets) in your darkradiant directory and the linking should succeed.

Compile the GTK+ toolchain et al

DarkRadiant is using a lot of third-party libraries like GTK+, gtkmm, libxml2, libiconv, gtkglext, etc.

For Windows I set up custom VC++ solutions to compile most of the libraries directly from the source (as many of those third-party projects don't offer Windows x64 binaries), these projects can be found in the trunk/winbuild branch in SVN. The winbuild folder contains all the sources needed to build the Win32/Win64 dependency binaries, including gtkmm et al., gtkglextmm and gtksourceviewmm. Note that the headers are stored in w32deps, as the main DarkRadiant project needs them there, so w32deps is the place to look for most of the shared headers.

There are VC++ project files in each of the subdirectories (e.g. MSVC_Net2010), which work best when the winbuild folder is checked out as subfolder to the trunk/darkradiant working copy, next to your w32deps/w64deps directories, as indicated above. To check out the winbuild folder:

  1. Right-click your C:\Games folder >> SVN Checkout...
  2. Select https://darkradiant.svn.sourceforge.net/svnroot/darkradiant/trunk/winbuild to C:\Games\DarkRadiant\winbuild

The folder structure should then look like this:

C:\Games\DarkRadiant
C:\Games\DarkRadiant\w32deps
C:\Games\DarkRadiant\w64deps [optional for x64 builds]
C:\Games\DarkRadiant\winbuild

This way, the VC++ projects place their binaries in the correct location in the w32deps/w64deps folder and you can compile DarkRadiant right off the bat.

Compile Scripts (VC++ 2010)

For VC++ 2010 you can use the shell script in the winbuild folder. Open a VC++ 2010 Command Prompt and head to the winbuild directory, then call the batch file corresponding to your compiler version.

  • build_all.x86.cmd => Compiles all 32 bit gtkmm libraries, including gtksourceviewmm and gtkglextmm (Debug & Release versions).
  • build_all.x64.cmd => Compiles all 64 bit gtkmm libraries, including gtksourceviewmm and gtkglextmm (Debug & Release versions).
  • build_c_libs.x86.cmd => Compiles all 32 bit C-libraries like win_iconv, libxml2, gtkglext and gtksourceview (Debug & Release versions).
  • build_c_libs.x64.cmd => Compiles all 64 bit C-libraries like win_iconv, libxml2, gtkglext and gtksourceview (Debug & Release versions).

The 32 bit shell scripts will place the *.lib files directly into your w32deps folder, the 64 bit ones put their files into w64deps.

Notes

  1. The win32 and win64 dependencies are maintained in SVN at SourceForge, but you won't need to check out those unless you're a Windows developer and want to work on the Windows dependencies. If anything substantial changes within these they are zipped and uploaded to github's download area. Linux folks don't need these at all.
  2. This is the original guide I was modeling the winbuild VC++ projects after: https://live.gnome.org/GTK+/Win32/MSVCCompilationOfGTKStack#Now.2C_onto_the_GTK.2B-_stack.21 Since I implemened the VC++ 2010 solution some modules of the GTK+ stack have made some advances towards Visual Studio 2010 support, but you still have to search for the puzzle pieces on your own.