Overview
Manta is driven by a custom build pipeline consisting of three stages:
boot.bat/sh
boot.exe
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.