Add PersistentService class

A class that implements a generic facility to spawn
a background server process and communicate with it.

This comes with a small persistent_service_test_helper[.exe]
executable that will be launched during unit-testing
to verify that things work as expected.

Fuchsia-Topic: persistent-mode
Original-Change-Id: I965a2383609bc0f65912c72ad7944fa898c7a2a3
Original-Change-Id: Ic9514dcb946494f342b1ed1623c8ac2f5ec5f41f
Original-Change-Id: Ic6f323c24a5fda35641750e5bae63eda378447b7
Original-Change-Id: I50f73df033207c53404eefda8dd33583df520c4c
Original-Change-Id: Icba214e4719f89295a750f61f3ad0fe652c63f17
Original-Change-Id: I2535cb53e3f1b048d3fa245799515b909ec97392
Original-Change-Id: I4041a64a6658fc25f7d0f2feaeea4f19e2159a9b
Original-Change-Id: I18f486a9e2c01f0260b097c0451046117af38034
Original-Change-Id: I63c0a77a5f15cd84a45cc99ca429eb76ea16c13c
Original-Change-Id: Ic41c69a2012961fbd9cac94accc489cfbd9412cd
Change-Id: I8bdffeaaa8445cbef845793048bbc891b3e23332
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/ninja-build/ninja/+/980514
Reviewed-by: David Fang <fangism@google.com>
Commit-Queue: David Turner <digit@google.com>
8 files changed
tree: d419cdaa6e85648adcd60d593790dc8ea2a39e93
  1. .github/
  2. doc/
  3. misc/
  4. src/
  5. windows/
  6. .clang-format
  7. .clang-tidy
  8. .editorconfig
  9. .gitignore
  10. appveyor.yml
  11. CMakeLists.txt
  12. configure.py
  13. CONTRIBUTING.md
  14. COPYING
  15. README.fuchsia
  16. README.md
  17. RELEASING.md
README.md

Ninja

Ninja is a small build system with a focus on speed. https://ninja-build.org/

See the manual or doc/manual.asciidoc included in the distribution for background and more details.

Binaries for Linux, Mac and Windows are available on GitHub. Run ./ninja -h for Ninja help.

Installation is not necessary because the only required file is the resulting ninja binary. However, to enable features like Bash completion and Emacs and Vim editing modes, some files in misc/ must be copied to appropriate locations.

If you're interested in making changes to Ninja, read CONTRIBUTING.md first.

Building Ninja itself

You can either build Ninja via the custom generator script written in Python or via CMake. For more details see the wiki.

Python

./configure.py --bootstrap

This will generate the ninja binary and a build.ninja file you can now use to build Ninja with itself.

CMake

cmake -Bbuild-cmake
cmake --build build-cmake

The ninja binary will now be inside the build-cmake directory (you can choose any other name you like).

To run the unit tests:

./build-cmake/ninja_test