README.md
1 # Build overrides in GN
2
3 This directory is used to allow different products to customize settings
4 for repos which are DEPS'ed in or shared.
5
6 For example: V8 can be built on its own (in a "standalone" configuration),
7 and it can be built as part of Chromium. V8 defines a top-level
8 target, //v8:d8 (a simple executable), which will only be built in the
9 standalone configuration. To indiate itis a standalone configuration, v8 can
10 create a file, build_overrides/v8.gni, containing a variable,
11 `build_standalone_d8 = true` and import it (as
12 import("//build_overrides/v8.gni") from its top-level BUILD.gn file.
13
14 Chromium, on the other hand, does not need to build d8, and so it would
15 create its own build_overrides/v8.gni file, and in it set
16 `build_standalone_d8 = false`.
17
18 The two files should define the same set of variables, but the values may
19 vary as appropriate to suit the the needs of the two different builds.
20
21 The build.gni file provides a way for projects to override defaults for
22 variables used in //build itself (which we want to be shareable between
23 projects).
24
25 TODO(crbug.com/588513): Ideally //build_overrides and, in particular,
26 //build_overrides/build.gni will go away completely in favor of some
27 mechanism that can re-use other required files like //.gn, so that we don't
28 have to keep requiring projects to create a bunch of different files to use GN.
29