Siso is a build tool that aims to significantly speed up Chromium's build.
Siso is named after shiso, a herb commonly used in Japan. It's a reference to basil and the Bazel build system. Siso is an alternative romanization of shiso and more typeable than shiso (but still pronounced shiso). Considering how often we type the name of a build tool every day, we decided to optimize for that. ;)
Remote execution capabilities:
Handling of missing output files during restat:
restat
.restat
, Siso will fail the build.Handling of missing input files during scheduling:
Targets from special syntax target^
foo.c^
will specify foo.o
.target^
to all the targets that contains the source file. For example, foo.java^
will get expanded to all Java steps that use files such as javac, errorprone, turbine etc.foo.h^
will be treated as foo.cc^
.Supports phony_output
rule variable
phony_output
. But, Android’s forked Ninja has a patch for the rule variable. See also hereConcurrent builds for the same build directory
Handling of depfile parse error
Re-run when inputs/outputs list has changed*
Unsupported features
Siso may not support Ninja features if they are not used for Chromium builds. e.g. dynamic dependencies, ninja -t browse
etc
Siso is the primary build system for Chromium and the projects that import //build from Chromium.
As of June 2025, Siso is used in all the projects that import Chromium's //build, and is used by default on non-Google environments.
As of Apr 2025, Siso built-in remote exec client is used for Chromium and Chrome builders.
As of Nov 2024, Siso is used by default for Chromium build on gLinux machine.
As of July 2024, Siso is used in all Chromium and Chrome builders, including official builds released to users.
As of end of 2024 Q1, Siso is used in all CQ builders in Chromium.
As of April 2023, we are dogfooding Siso with invited Chrome developers. Please check go/chrome-build-dogfood for more information.
Please check go/siso-faq (internal).
Please check go/siso-development (internal).