8.3. Compilation Instructions

This is the central repository for the Grit Game Engine project.

From here can be built the engine executable itself, the launcher, and various tools. These are mostly useless without the accompanying media tree (the Game Directory which is available on Sourceforge via Subversion. Therefore to get everything, execute the following:

git clone --recursive https://github.com/sparkprime/grit-engine.git grit-engine
svn checkout https://svn.code.sf.net/p/gritengine/code/trunk grit-engine/media

The subversion tree also contains prebuilt up-to-date executables (Linux & Windows) so the majority of developers only need that. Grit can be substantially modified through Lua scripting, and this potential should be exhausted before modifying C++ code.

Build files are provided for Linux (Makefile and .../*grit.mk) and Visual Studio 2013 project files. Building C++ takes about an hour on Windows and 10 minutes on Linux. Scripts are available for copying new executables into Subversion, if it is checked out in the media/ directory.

8.3.1. Windows

Only Visual Studio Express 2013 is supported. It is free (as in beer). Download it from the Microsoft site.

8.3.1.1. Requirements

You will need the DirectX9 SDK (Google it), install that on your system (in Program Files). The install adds a system-wide environment variable DXSDK_DIR pointing to the install directory. This is used by the Visual Studio build. If Visual studio is running, you will have to restart it to make it 'see' the new environment variable.

8.3.1.2. Regular build

Open grit-engine.sln and build the whole solution with the Normal configuration. This will build all the tools and dependencies.

8.3.1.3. Debug Build

Debugging with Visual Studio requires the engine to be built with the Debug configuration. To run in the debugger, execute the engine project from inside Visual Studio. You may need to set the working directory to the media/ directory (from the engine project properties).

8.3.1.4. Modifying the Build

The build uses hand-written MSVC build files. Each executable and library has a project file, and properties files are used to layer additional build options without duplicating them between project files. They are structured as follows:

8.3.2. Linux

The following instructions are for Ubuntu. If you're using another distro, you'll have to figure it out for yourself but hopefully the Ubuntu instructions will help. Note that the make files require GNU make, which may be called gmake on your system.

8.3.2.1. Requirements

sudo apt-get install subversion g++ make pkg-config gdb valgrind \
libfreeimage-dev libzzip-dev libfreetype6-dev libglu1-mesa-dev \
libxt-dev libxaw7-dev libglew1.5-dev libxrandr-dev \
libgoogle-perftools-dev libopenal-dev libreadline-dev freeglut3-dev \
nvidia-cg-toolkit libvorbis-dev xutils-dev libicu-dev

8.3.2.2. Building

Simply running make -j 8 in the root (adjust for your number of cores) will build everything. Executables for the current platform are left in the root directory. You can add it to your PATH.

8.3.2.3. Debugging

You can debug Grit with gdb or valgrind. If the assembly is too obscure, disable optimizations by overriding the OPT variable as so:

make -j 8 OPT=

Note that this will not rebuild anything that is already built, so you might want to first delete specific object files -- the ones containing the code you're debugging, and then rebuilding them without optimizations.

8.3.2.4. Modifying the Build

The makefiles are handwritten. They use a lot of GNU make specific features. Each sub-project and dependency defines a grit.mk file which defines the additional source files and required build options. These are all included by the root Makefile which computes the actual build rules.