doc: Update Windows build instructions to reflect siso build tool usage.
Ninja has been replaced by siso in chrome builds.
Bug: 430089398
Change-Id: Ie1fc6b00542bf19af63f0652013d870a9d1a06c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6716300
Commit-Queue: Junji Watanabe <[email protected]>
Auto-Submit: Junji Watanabe <[email protected]>
Reviewed-by: Fumitoshi Ukai <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1484124}
diff --git a/docs/windows_build_instructions.md b/docs/windows_build_instructions.md
index 9f85a8b..a360e8e6 100644
--- a/docs/windows_build_instructions.md
+++ b/docs/windows_build_instructions.md
@@ -235,8 +235,8 @@
## Setting up the build
-Chromium uses [Ninja](https://ninja-build.org) as its main build tool along with
-a tool called [GN](https://gn.googlesource.com/gn/+/main/docs/quick_start.md)
+Chromium uses [Siso](https://pkg.go.dev/go.chromium.org/infra/build/siso#section-readme)
+ as its main build tool along with a tool called [GN](https://gn.googlesource.com/gn/+/main/docs/quick_start.md)
to generate `.ninja` files. You can create any number of *build directories*
with different configurations. To create a build directory:
@@ -244,7 +244,7 @@
$ gn gen out\Default
```
-* You only have to run this once for each new build directory, Ninja will
+* You only have to run this once for each new build directory, Siso will
update the build files as needed.
* You can replace `Default` with another name, but
it should be a subdirectory of `out`.
@@ -289,19 +289,17 @@
source-level debugging but call stacks still have function names. Changing
`symbol_level` requires recompiling everything.
-When invoking ninja, specify 'chrome' as the target to avoid building all test
+When you build, specify `chrome` as the target to avoid building all test
binaries as well.
-#### Use Reclient
+#### Use Remote Execution
-In addition, Google employees should use Reclient, a distributed compilation
-system. Detailed information is available internally but the relevant gn arg is:
+In addition, Google employees should use RBE, a remote execution system. Detailed information is available internally but the relevant gn arg is:
* `use_remoteexec = true`
Google employees can visit
[go/building-chrome-win#setup-remote-execution](https://goto.google.com/building-chrome-win#setup-remote-execution)
-for more information. For external contributors, Reclient does not support
-Windows builds.
+for more information. For external contributors, remote execution for Windows builds is not supported.
#### Use SCCACHE
@@ -324,19 +322,17 @@
[Performance analyzer for Microsoft Defender Antivirus](https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/tune-performance-defender-antivirus?view=o365-worldwide)
to investigate in detail.
-The next step is to gather some data. If you set the ``NINJA_SUMMARIZE_BUILD``
-environment variable to 1 then ``autoninja`` will do three things. First, it
-will set the [NINJA_STATUS](https://ninja-build.org/manual.html#_environment_variables)
-environment variable so that ninja will print additional information while
-building Chrome. It will show how many build processes are running at any given
-time, how many build steps have completed, how many build steps have completed
-per second, and how long the build has been running, as shown here:
+Siso prints progress while building Chrome. It shows how many build processes
+are running at any given time, how many build steps have completed, how many
+ build steps have completed per second, and how long the entire build and
+ the longest build step has been running, as shown here:
```shell
-$ set NINJA_SUMMARIZE_BUILD=1
$ autoninja -C out\Default base
ninja: Entering directory `out\Default'
-[1 processes, 86/86 @ 2.7/s : 31.785s ] LINK(DLL) base.dll base.dll.lib base.dll.pdb
+...
+pre:0 local:0 remote:6461 15.6/s cache: 0.00% fallback:0
+[3829/64499] 4m47.48s 4m00.35s[remote]: LINK(DLL) base.dll base.dll.lib base.dll.pdb
```
This makes slow process creation immediately obvious and lets you tell quickly
@@ -379,36 +375,9 @@
$ python depot_tools\post_build_ninja_summary.py -C out\Default
```
-Finally, setting ``NINJA_SUMMARIZE_BUILD=1`` tells autoninja to tell Ninja to
-report on its own overhead by passing "-d stats". This can be helpful if, for
-instance, process creation (which shows up in the StartEdge metric) is making
-builds slow, perhaps due to antivirus interference due to clang-cl not being in
-an excluded directory:
-
-```shell
-$ set NINJA_SUMMARIZE_BUILD=1
-$ autoninja -C out\Default base
-metric count avg (us) total (ms)
-.ninja parse 3555 1539.4 5472.6
-canonicalize str 1383032 0.0 12.7
-canonicalize path 1402349 0.0 11.2
-lookup node 1398245 0.0 8.1
-.ninja_log load 2 118.0 0.2
-.ninja_deps load 2 67.5 0.1
-node stat 2516 29.6 74.4
-depfile load 2 1132.0 2.3
-StartEdge 88 3508.1 308.7
-FinishCommand 87 1670.9 145.4
-CLParser::Parse 45 1889.1 85.0
-```
-
You can also get a visual report of the build performance with
-[ninjatracing](https://github.com/nico/ninjatracing). This converts the
-.ninja_log file into a .json file which can be loaded into [chrome://tracing](chrome://tracing):
-
-```shell
-$ python ninjatracing out\Default\.ninja_log >build.json
-```
+[perfetto](https://ui.perfetto.dev/) by uploading `.ninja_log` or
+ `siso_trace.json`.
## Build Chromium
@@ -548,7 +517,7 @@
output directory is `out\Default`:
```shell
-$ gn gen --ide=vs --ninja-executable=C:\src\chromium\src\third_party\ninja\ninja.exe out\Default
+$ gn gen --ide=vs --ninja-executable=autoninja out\Default
$ devenv out\Default\all.sln
```
@@ -567,7 +536,7 @@
is:
```
-$ gn gen --ide=vs --ninja-executable=C:\src\chromium\src\third_party\ninja\ninja.exe --filters=//chrome --no-deps out\Default
+$ gn gen --ide=vs --ninja-executable=autoninja --filters=//chrome --no-deps out\Default
```
You can selectively add other directories you care about to the filter like so: