Ninja is a build system similar to Make. As input you describe the commands necessary to process source files into target files. Ninja uses these commands to bring targets up to date. Unlike many other build systems, Ninja’s main design goal was speed. I wrote Ninja while working on Google Chrome. I started Ninja as an experiment to find out if Chrome’s build could be made faster. To successfully build Chrome, Ninja’s other main design goal followed: Ninja needed to be easily embedded within a larger build system. Ninja has been quietly successful, gradually replacing the other build systems used by Chrome. After Ninja was made public others contributed code to make the popular CMake build system generate Ninja files–now Ninja is also used to develop CMake-based projects like LLVM and ReactOS. Other projects, like TextMate, target Ninja directly from their custom build.