Kati
It is used to accelerate incremental build of Android AOSP.
- Clone of make but modified make
- null buld: where just one file changed Vs. full build: where everything changed
- turning complete: GNU Make or any general purpose language can compute anything that is computable.
- Kati wraps up Make and becomes like DSL, making it more descriptive and easier to write build rules. But Kati is slow if it just wraps and focus on that DSL thing. So, kati is optimized.
- Kati is used to replace all Android.mk make files and convert them to ninja files (i.e., build.ninja). Ninja is a mode for kati.
- Kati consists of the following components:
- Parser
- Evaluator
- Dependency builder
- Executor
- Ninja generator
Ninja uses a build file typically called build.ninja. This file contains the instructions for building a project.
More you can read here: https://android.googlesource.com/platform/build/kati/+/master/INTERNALS.md