Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e239382

Browse filesBrowse 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
Copy full SHA for e239382

File tree

Expand file treeCollapse file tree

1 file changed

+31
-22
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+31
-22
lines changed
Open diff view settings
Collapse file

‎doc/contributing/gn-build.md‎

Copy file name to clipboardExpand all lines: doc/contributing/gn-build.md
+31-22Lines changed: 31 additions & 22 deletions
  • Display the source diff
  • Display the rich diff
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.