Spinning Topp Logo BlackTopp Studios
Jagati Package and Refactor

Currently the Mezzanine engine is one monolithic code base. Many of the libaries can work independently and still be extemely useful. The Jagati Refactor is the modularizing of these libraries.

This page describes the contents of one Jagati package. We wil pull a piece of the Mezzanine out and make a package from it. It will be refactored and adjusted to meet the standards here.

Each package will compile under Clang, GCC, MinGW, TDM-gcc and Visual Studio. Each compilation will enable "-werror" or whatever compiler flag turns all warnings into errors. A slew of extra compiler warnings will be enabled to minimize the chance of writing bugs.

We will keep our current level of documentation. We will keep out curent level of coverage for our automated generation

Modules after Jagati Refactor

Jagati Packages and Dependencies

Files and Folders in a package

A rough file hiearchy:

/ – Package Root

The root folder.

CMakeLists.txt and Jagati CMake API

We need to describe variables the variables that the root CMakeLists.txt. This is still being decided on and will likely be determined by ruslo/hunter.


This file tells git what does not need to be included in the build.

.travis.yml and appveyor.yml – Coninuous Integration Config

Each Jagati package will be built and run automatically on a variety of platforms automatically.

README.md – Technical details for Humans

This should have an overview


This file will have legal details about copying the files and resources in the package. The Default for most Jagati packages is the GPL v3 but the BSD License is good to. The are no technical reasons other licenses couldn't be described here.

dox/ – Special Considerations for Doxygen.

Extra docmentation headers and files ought to go here.

dox/dox.h – Doxygen entry point

If this optional file is present it is the file that Doxygen will read. This should include all the files that are Doxygen documented.

include/ – Header directory for others to use

Describe why to separate headers from source files here.

lib/ – Internal libraray source

Many Packages provide some kind of functionality provided by external systems or that require very complex algorithms. Any external libraries providing such functionality can

src/ – Actual source code

The implementation of a package goes here.

swig/ – Special Considerations for SWIG.

Most people do not want to build their whole game or application in C++. Swig reads the C/C++ source code of the package and generates bindings for other languages to be able to use the Mezzanine.

swig/SwigConfig.h – SWIG Entry Point.

If this file is present it is the entry point for Swig. This should include all the headers that SWIG is to read and prepare bindings for.

test/ – Test Headers

A directory full of files that each contain one class describing tests for one part of the system