Skip to content

Commit e239382

Browse files
codebytereruyadorno
authored andcommitted
doc: improve GN build documentation a bit
PR-URL: #55968 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
1 parent 78b6aef commit e239382

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

doc/contributing/gn-build.md

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,33 @@ Node.js contains following GN build files:
2828

2929
Unlike GYP, the GN tool does not include any built-in rules for compiling a
3030
project, which means projects building with GN must provide their own build
31-
configurations for things like how to invoke a C++ compiler. Chromium related
32-
projects like V8 and skia choose to reuse Chromium's build configurations, and
33-
V8's Node.js integration testing repository
34-
([node-ci](https://chromium.googlesource.com/v8/node-ci/)) can be reused for
35-
building Node.js.
31+
configurations for things like how to invoke a C++ compiler.
32+
33+
Chromium related projects like V8 and skia choose to reuse Chromium's build
34+
configurations, and V8's Node.js integration testing repository
35+
[`node-ci`][node-ci] can be reused for building Node.js.
3636

3737
### 1. Install `depot_tools`
3838

39-
The `depot_tools` is a set of tools used by Chromium related projects for
40-
checking out code and managing dependencies, and since this guide is reusing the
41-
infra of V8, it needs to be installed and added to `PATH`:
39+
You'll need to install [`depot_tools`][depot-tools] the toolset
40+
used for fetching Chromium and its dependencies.
4241

4342
```bash
4443
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
4544
export PATH=/path/to/depot_tools:$PATH
4645
```
4746

48-
You can also follow the [official tutorial of
49-
`depot_tools`](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html).
47+
You can ensure `depot_tools` is correctly added to your PATH by running
48+
`which gn` and confirming that it returns `/path/to/depot_tools/gn`.
49+
50+
**NOTE:** On Windows you'll also need to set the environment variable
51+
`DEPOT_TOOLS_WIN_TOOLCHAIN=0`. To do so, open `Control Panel` → `System and
52+
Security``System``Advanced system settings` and add a system variable
53+
`DEPOT_TOOLS_WIN_TOOLCHAIN` with value `0`. This tells `depot_tools` to use
54+
your locally installed version of Visual Studio (by default, `depot_tools` will
55+
try to download a Google-internal version that only Googlers have access to).
5056

51-
### 2. Check out code of Node.js
57+
### 2. Checkout Node.js Source Code
5258

5359
To check out the latest main branch of Node.js for building, use the `fetch`
5460
tool from `depot_tools`:
@@ -91,9 +97,9 @@ out at `node_gn/node/node`.
9197

9298
### 3. Build
9399

94-
GN only supports [`ninja`](https://ninja-build.org) for building, so to build
95-
Node.js with GN, `ninja` build files should be generated first, and then
96-
`ninja` can be invoked to do the building.
100+
GN only supports [`ninja`](https://ninja-build.org) for building. To build
101+
Node.js with GN you'll first need to generate `ninja` build files and then invoke
102+
`ninja` to perform the build.
97103

98104
The `node-ci` repository provides a script for calling GN:
99105

@@ -103,9 +109,10 @@ cd node # Enter `node_gn/node` which contains a node-ci checkout
103109
```
104110

105111
which writes `ninja` build files into the `out/Release` directory under
106-
`node_gn/node`.
112+
`node_gn/node`. To see all possible configurable options, run
113+
`tools/gn-gen.py --help`.
107114

108-
And then you can execute `ninja`:
115+
When `gn-gen.py` has executed successfully, you can then execute `ninja`:
109116

110117
```bash
111118
ninja -C out/Release node
@@ -116,10 +123,12 @@ After the build is completed, the compiled Node.js executable can be found in
116123

117124
## Status of the GN build
118125

119-
Currently the GN build of Node.js is not fully functioning. It builds for macOS
120-
and Linux, while the Windows build is still a work in progress. And some tests
121-
are still failing with the GN build.
126+
Currently the GN build of Node.js is not fully functioning. Some tests
127+
are still failing with the GN build, and there may be other small pitfall
128+
for certain configuration options.
129+
130+
An effort is currently underway to make GN build work without using `depot_tools`,
131+
which is tracked in [#51689](https://github.com/nodejs/node/issues/51689).
122132

123-
There are also efforts on making GN build work without using `depot_tools`,
124-
which is tracked in the issue
125-
[#51689](https://github.com/nodejs/node/issues/51689).
133+
[depot-tools]: https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
134+
[node-ci]: https://chromium.googlesource.com/v8/node-ci

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy