build: remove gyp build files (#14097)
* build: remove gyp build files * docs: update build instructions * build: temporary restore electron.gyp * build: do not update Electron version in the electron.gyp * chore: remove unused submodules * ci: remove obsolete CI scripts and configs * chore: remove obsolete scripts * chore: remove obsolete functions from lib/util.py * ci: send Slack notification for nightly build results
This commit is contained in:
parent
98eee52fac
commit
72526927d9
56 changed files with 919 additions and 6043 deletions
|
@ -1,20 +1,18 @@
|
|||
# Build System Overview
|
||||
|
||||
Electron uses [gyp](https://gyp.gsrc.io/) for project generation and
|
||||
Electron uses [GN](https://gn.googlesource.com/gn) for project generation and
|
||||
[ninja](https://ninja-build.org/) for building. Project configurations can
|
||||
be found in the `.gyp` and `.gypi` files.
|
||||
be found in the `.gn` and `.gni` files.
|
||||
|
||||
## Gyp Files
|
||||
## GN Files
|
||||
|
||||
Following `gyp` files contain the main rules for building Electron:
|
||||
The following `gn` files contain the main rules for building Electron:
|
||||
|
||||
* `electron.gyp` defines how Electron itself is built.
|
||||
* `common.gypi` adjusts the build configurations of Node to make it build
|
||||
together with Chromium.
|
||||
* `brightray/brightray.gyp` defines how `brightray` is built and
|
||||
* `BUILD.gn` defines how Electron itself is built.
|
||||
* `brightray/BUILD.gn` defines how `brightray` is built and
|
||||
includes the default configurations for linking with Chromium.
|
||||
* `brightray/brightray.gypi` includes general build configurations about
|
||||
building.
|
||||
* `build/args/{debug,release,all}.gn` contain the default build arguments for
|
||||
building Electron.
|
||||
|
||||
## Component Build
|
||||
|
||||
|
@ -24,56 +22,17 @@ this, Chromium introduced the "component build", which builds each component as
|
|||
a separate shared library, making linking very quick but sacrificing file size
|
||||
and performance.
|
||||
|
||||
In Electron we took a very similar approach: for `Debug` builds, the binary
|
||||
will be linked to a shared library version of Chromium's components to achieve
|
||||
fast linking time; for `Release` builds, the binary will be linked to the static
|
||||
library versions, so we can have the best possible binary size and performance.
|
||||
|
||||
## Minimal Bootstrapping
|
||||
|
||||
All of Chromium's prebuilt binaries (`libchromiumcontent`) are downloaded when
|
||||
running the bootstrap script. By default both static libraries and shared
|
||||
libraries will be downloaded and the final size should be between 800MB and 2GB
|
||||
depending on the platform.
|
||||
|
||||
By default, `libchromiumcontent` is downloaded from Amazon Web Services.
|
||||
If the `LIBCHROMIUMCONTENT_MIRROR` environment variable is set, the bootstrap
|
||||
script will download from it.
|
||||
[`libchromiumcontent-qiniu-mirror`](https://github.com/hokein/libchromiumcontent-qiniu-mirror)
|
||||
is a mirror for `libchromiumcontent`. If you have trouble in accessing AWS, you
|
||||
can switch the download address to it via
|
||||
`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/`
|
||||
|
||||
If you only want to build Electron quickly for testing or development, you
|
||||
can download the shared library versions by passing the `--dev` parameter:
|
||||
|
||||
```sh
|
||||
$ ./script/bootstrap.py --dev
|
||||
$ ./script/build.py -c D
|
||||
```
|
||||
|
||||
## Two-Phase Project Generation
|
||||
|
||||
Electron links with different sets of libraries in `Release` and `Debug`
|
||||
builds. `gyp`, however, doesn't support configuring different link settings for
|
||||
different configurations.
|
||||
|
||||
To work around this Electron uses a `gyp` variable
|
||||
`libchromiumcontent_component` to control which link settings to use and only
|
||||
generates one target when running `gyp`.
|
||||
|
||||
## Target Names
|
||||
|
||||
Unlike most projects that use `Release` and `Debug` as target names, Electron
|
||||
uses `R` and `D` instead. This is because `gyp` randomly crashes if there is
|
||||
only one `Release` or `Debug` build configuration defined, and Electron only has
|
||||
to generate one target at a time as stated above.
|
||||
|
||||
This only affects developers, if you are building Electron for rebranding
|
||||
you are not affected.
|
||||
Electron inherits this build option from Chromium. In `Debug` builds, the
|
||||
binary will be linked to a shared library version of Chromium's components to
|
||||
achieve fast linking time; for `Release` builds, the binary will be linked to
|
||||
the static library versions, so we can have the best possible binary size and
|
||||
performance.
|
||||
|
||||
## Tests
|
||||
|
||||
**NB** _this section is out of date and contains information that is no longer
|
||||
relevant to the GN-built electron._
|
||||
|
||||
Test your changes conform to the project coding style using:
|
||||
|
||||
```sh
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue