Overview

Manta is driven by a custom build pipeline consisting of three stages:

  1. boot.bat/sh

  2. boot.exe

  3. build.exe

boot.bat/.sh

boot.bat/sh serves as the “bootstrap” entry point for building and compiling a project. The sole responsibility of boot.bat is to compile and run boot.exe. boot.bat passes numerous commandline arguments to boot.exe & build.exe. The only required argument is “-project=<name>”

Common commandline arguments are:

  • -project=<name>

  • -platform=<windows/macos/linux>

  • -toolchain=<msvc/llvm/clang>

  • -config=<name> (used defined configurations from <project>/configs.json)

  • -render=<opengl/d3d11/d3d12/vulkan/metal>

  • -clean=<0/1> (if 1, skips cache and forces a “clean” build)

  • -run<0/1> (if 1, runs the project executable after build.exe finishes)

Example: boot.bat -project=vitality -toolchain=llvm -render=d3d11 -clean=1 -run=1

The above command builds and compiles the project “vitality” with the LLVM toolchain (clang) with the D3D11 graphics backend, and does so as a clean compile (skip cache check). Once the build finishes, it runs vitality.exe

boot.exe

boot.exe is responsible for validating build pipeline arguments (-project, -platform, -toolchain, -render, -config), generating PIPELINE_* macros, and compiling build.exe.

build.exe

build.exe is the primary program responsible for building the project runtime executable and runtime dependencies. This includes: caching, code generation, shader compilation, asset processing, and binary file creation.

build.exe source code is split between the engine module (manta/build) and the project (<projectname>/build). It is structured this way to allow projects to implement their own stages or stage overrides within the build process. This may be desirable if a project has a unique asset type not part of the core Manta engine.