Skip to content

samurai 1.1

Compare
Choose a tag to compare
@michaelforney michaelforney released this 29 Mar 23:49
· 52 commits to master since this release

New features

  • The targets subtool is now implemented. This subtool prints targets built by the project, either by rule name or depth from the final outputs.
  • The compdb subtool is now implement. This subtool dumps a JSON compilation database, as specified in https://clang.llvm.org/docs/JSONCompilationDatabase.html, and allows integration with some IDEs and build tools.
  • The NINJA_STATUS environment variable is now honored, allowing control over what information is included in the status line.
  • The -l flag (scheduling based on load average) is now ignored for compatibility with ninja.

Bug fixes

  • When a job specified depfile and deps, but did not actually write the depfile (for example, D compilers with meson), we now write an empty dependency record to .ninja_deps. This matches ninja's behavior and prevents unwanted rebuilds.
  • When the manifest is dirty, but a restat = 1 action causes the manifest rebuild to be pruned, we now continue with the build. This prevents a manifest rebuild loop in these cases (for example with cmake using glob patterns), since the manifest is always dirty after reloading.

Cleanups

  • When no default line is present in build.ninja, we previously scheduled all targets for building rather than just the root targets (those with no dependents). This makes no difference is practice since we need to build all dependencies before a target anyway, but this was changed in order to implement the targets subtool.
  • We now do a better job at freeing memory when the manifest is rebuilt.
  • Some code style inconsistencies were fixed.

Acknowledgements

This release involved the help of a number of people who reported bugs and implemented features. Thanks to Brian Callahan, Daan De Meyer, Ethan Sommer, Rasmus Thomsen, Simon Zeni, and @angularorbit for your contributions!