Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Kninja is an experimental Ninja build file generator for Kbuild, the Linux kernel's build system. It does not really attempt to understand Kbuild files but instead just processes the output generated by GNU Make's --print-data-base. Configuration changes and changes to files with special generation rules are not currently handled, but modifications to most normal source and header files should just work.

The use of ninja results in vastly improved incremental build times:

Change make -j8 make -j8 objectname ninja
No changes 2.254s 0.731s 0.065s
One change, compile error 1.225s 0.765s 0.077s
One change, full link 5.915s NA 4.482s

The link time unsuprisingly dominates when performing small changes, but as can be seen the time until the start of compilation (and thus the time until any compile errors are detected) is several times smaller with ninja.

These numbers were measured with the benchmarking script included in the repository. Reading that script should also give you an example of how to use kninja.


Python 3.4+ is required. Install the required packages with:

pip3 install -r requirements.txt

Run to generate Ninja build files. This will be automatically re-run after any changes to .config or Makefiles.

[INFO] Ensuring full build: make -j 8
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CHK     include/generated/timeconst.h
  CHK     include/generated/bounds.h
  CHK     include/generated/asm-offsets.h
  CALL    scripts/
  CHK     include/generated/compile.h
  Building modules, stage 2.
  MODPOST 18 modules
Kernel: arch/x86/boot/bzImage is ready  (#6)
[INFO] Generating make database: make -p
[INFO] Caching make database to .makedb
[INFO] Parsing make database (2635077 lines)
[INFO] Wrote (2763 rules, 2744 build statements)
[INFO] Wrote .ninja_deps (2155 targets, 939990 deps)
[INFO] Wrote .ninja_log (2763 commands)
[INFO] Checking ninja status: ninja -d explain -n


Ninja build file generator for the Linux kernel




No releases published


No packages published
You can’t perform that action at this time.