# Build overrides in GN

This directory is used to allow different products to customize settings
for repos which are DEPS'ed in or shared.

For example: V8 can be built on its own (in a "standalone" configuration),
and it can be built as part of Chromium. V8 defines a top-level
target, //v8:d8 (a simple executable), which will only be built in the
standalone configuration. To indiate itis a standalone configuration, v8 can
create a file, build_overrides/v8.gni, containing a variable,
`build_standalone_d8 = true` and import it (as
import("//build_overrides/v8.gni") from its top-level BUILD.gn file.

Chromium, on the other hand, does not need to build d8, and so it would
create its own build_overrides/v8.gni file, and in it set
`build_standalone_d8 = false`.

The two files should define the same set of variables, but the values may
vary as appropriate to suit the needs of the two different builds.

The build.gni file provides a way for projects to override defaults for
variables used in //build itself (which we want to be shareable between
projects).

TODO(crbug.com/588513): Ideally //build_overrides and, in particular,
//build_overrides/build.gni will go away completely in favor of some
mechanism that can re-use other required files like //.gn, so that we don't
have to keep requiring projects to create a bunch of different files to use GN.
