The Mk III Build System
Created on 2021-10-08T03:11:28-05:00
The short and easy description of Mk III is a program which executes a script and generates a Mk II to run.
A Mk III build system consists of tools like Blaze and its family (Buck, Please.Build, Pants.) There are possibly others since you could argue XMake might fit here, as well as Premake and other script-based project generators.
Where the shell script deals with what to do, and the Mk II abstracts over the execution of scripts to turn inputs to outputs, the Mk III is a form of orchestration or scripting on top of those mappings of inputs to outputs.
For example a ninja (Mk II) file can be written to compile a C project but each rule and dependency is listed by hand. A Mk III system instead simply says "this is a C project with these files now make it." CMake for example defines a C application with some files and produces a Mk II build script to actually do the job.
Blaze family builders tend to orchestrate other steps than just compiling (though they do this too.) For example Mk IIIs may also facilitate downloading things from the internet, unpacking, applying patches, setting up Mk II scripts for the dependencies, post-build packaging, etc.