Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: tools/gn/README.md

Issue 1805253002: Update GN readme. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # What is GN? 1 # What is GN?
2 2
3 GN is a meta-build system that generates 3 GN is a meta-build system that generates
4 [NinjaBuild](https://chromium.googlesource.com/chromium/src/+/master/docs/ninja_ build.md) 4 [NinjaBuild](https://chromium.googlesource.com/chromium/src/+/master/docs/ninja_ build.md)
5 files. It's meant to be faster and simpler than GYP. It outputs only Ninja build 5 files. It's meant to be faster and simpler than GYP. It outputs only Ninja build
6 files. 6 files.
7 7
8 ## Why bother with GN? 8 ## Why bother with GN?
9 9
10 1. We believe GN files are more readable and more maintainable 10 1. We believe GN files are more readable and more maintainable
11 than GYP files. 11 than GYP files.
12 2. GN is fast: 12 2. GN is fast:
13 * GN is 20x faster than GYP. 13 * GN is 20x faster than GYP.
14 * GN supports automatically re-running itself as needed by Ninja 14 * GN supports automatically re-running itself as needed by Ninja
15 as part of the build. This eliminates the need to remember to 15 as part of the build. This eliminates the need to remember to
16 re-run GN when you change a build file. 16 re-run GN when you change a build file.
17 3. GN gives us better tools for enforcing dependencies (see 17 3. GN gives us better tools for enforcing dependencies (see
18 `gn check` and the `visibility`, `public_deps`, and `data_deps` 18 `gn check` and the `visibility`, `public_deps`, and `data_deps`
19 options for some examples). 19 options for some examples).
20 4. GN gives us tools for querying the build graph; you can ask 20 4. GN gives us tools for querying the build graph; you can ask
21 "what does X depend on" and "who depends on Y", for example. 21 "what does X depend on" and "who depends on Y", for example.
22 22
23 ## What's the status? 23 ## What's the status?
24 24
25 _as of 7 Oct 2015:_ 25 _as of March 2016:_
26 26
27 GN is now the default system for Linux, though GYP still works. It 27 * Linux and Android: Complete but not quite all bots have been flipped.
28 is mostly complete on Android, ChromeOS, and Windows (apart from NaCl 28 Developers should be using GN on these platforms for most work.
29 support on Windows). 29 * Windows and ChromeOS: Should be usable for almost all development. Some
30 30 bots need to be flipped. cros_sdk builds don't work on ChromeOS yet.
31 Mac and iOS are making progress, though we still need better support 31 * Mac and iOS: Work is in progress, generally not usable for normal
32 for bundles before the major targets like Chrome can link and they get 32 development.
33 to parity w/ the other platforms.
34 33
35 ## When are you going to be done? 34 ## When are you going to be done?
36 35
37 _as of 7 Oct 2015:_ 36 _as of March 2016:_
38 37
39 We're currently shooting for having Android, ChromeOS, and Windows 38 We expect most work to be finishing up between now and the end of Q2.
40 converted over by the end of 2015, with Mac and iOS following in Q1
41 of 2016.
42 39
43 ## What does "done" mean? 40 ## What does "done" mean?
44 41
45 Ideally we're done when all of the GYP files have been deleted from 42 Ideally we're done when all of the GYP files have been deleted from
46 Chromium and no one misses them. 43 Chromium and no one misses them.
47 44
48 We will be "mostly" done when the following are true: 45 We will be "mostly" done when the following are true:
49 46
50 * All of the bots maintained by the Chrome infra team for Chromium and 47 * All of the bots maintained by the Chrome infra team for Chromium and
51 downstream of Chromium have been switched to GN. (Upstream projects 48 downstream of Chromium have been switched to GN. (Upstream projects
52 like Skia and V8 can choose to stay on GYP if they like). 49 like Skia and V8 can choose to stay on GYP if they like).
53 * Any developer configurations we care about that don't have bots also 50 * Any developer configurations we care about that don't have bots also
54 work (Generally speaking, we're aiming to not have any of these. 51 work (Generally speaking, we're aiming to not have any of these.
55 * Configurations we care about should have bots to ensure they don't 52 * Configurations we care about should have bots to ensure they don't
56 break). We have verified that all of the tests pass. We have 53 break). We have verified that all of the tests pass. We have
57 verified that the command lines match in the above configurations as 54 verified that the command lines match in the above configurations as
58 much as possible, and we accept any differences. We have reviewed 55 much as possible, and we accept any differences. We have reviewed
59 any binary differences that result in the official builds and 56 any binary differences that result in the official builds and
60 accepted them. The GN files are the "source of truth" for the 57 accepted them. The GN files are the "source of truth" for the
61 build, and normal chromium developers normally do not need to touch 58 build, and normal chromium developers normally do not need to touch
62 GYP files to keep things working. We have replacements for the 59 GYP files to keep things working. We have replacements for the
63 hybrid "msvs-ninja" and "xcode-ninja" configurations that GYP can 60 hybrid "msvs-ninja" and "xcode-ninja" configurations that GYP can
64 currently build. 61 currently build.
65 62
66 The difference between "mostly done" and "done" exists to cover any 63 The difference between "mostly done" and "done" exists to cover any
67 issues we haven't yet identified :) 64 issues we haven't yet identified :)
68 65
69 We do not currently plan to support full native XCode or Visual Studio
70 generation from GN. It is theoretically possible to support such things,
71 so we would at least look at patches adding the functionality.
72
73 ## How can I help? 66 ## How can I help?
74 67
75 Check to see if your targets build under GN yet. If they don't, 68 We could espeially use infrastructure/bot, Mac, and iOS help.
76 volunteer to help convert them!
77 69
78 Or, look at [the list of open bugs](https://code.google.com/p/chromium/issues/li st?can=2&q=label:Proj-GN-Migration%20-type:Project&sort=pri&colspec=ID%20Pri%20S ummary%20Type%20OS%20Owner%20Status%20Modified%20Blocking) related to the migrat ion and see if there's anything that catches your fancy. 70 Or, look at [the list of open bugs](https://code.google.com/p/chromium/issues/li st?can=2&q=label:Proj-GN-Migration%20-type:Project&sort=pri&colspec=ID%20Pri%20S ummary%20Type%20OS%20Owner%20Status%20Modified%20Blocking) related to the migrat ion and see if there's anything that catches your fancy.
79 71
80 ## I want more info on GN! 72 ## I want more info on GN!
81 73
82 Read these links: 74 Read these links:
83 75
84 * [Quick start](https://chromium.googlesource.com/chromium/src/+/master/tools/ gn/docs/quick_start.md) 76 * [Quick start](https://chromium.googlesource.com/chromium/src/+/master/tools/ gn/docs/quick_start.md)
85 * [FAQ](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/ faq.md) 77 * [FAQ](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/ faq.md)
86 * [GYP conversion cookbook](https://chromium.googlesource.com/chromium/src/+/m aster/tools/gn/docs/cookbook.md) 78 * [GYP conversion cookbook](https://chromium.googlesource.com/chromium/src/+/m aster/tools/gn/docs/cookbook.md)
87 * [Language and operation details](https://chromium.googlesource.com/chromium/ src/+/master/tools/gn/docs/language.md) 79 * [Language and operation details](https://chromium.googlesource.com/chromium/ src/+/master/tools/gn/docs/language.md)
88 * [Reference](https://chromium.googlesource.com/chromium/src/+/master/tools/gn /docs/reference.md) The built-in `gn help` documentation. 80 * [Reference](https://chromium.googlesource.com/chromium/src/+/master/tools/gn /docs/reference.md) The built-in `gn help` documentation.
89 * [Style guide](https://chromium.googlesource.com/chromium/src/+/master/tools/ gn/docs/style_guide.md) 81 * [Style guide](https://chromium.googlesource.com/chromium/src/+/master/tools/ gn/docs/style_guide.md)
90 * [Cross compiling and toolchains](https://chromium.googlesource.com/chromium/ src/+/master/tools/gn/docs/cross_compiles.md) 82 * [Cross compiling and toolchains](https://chromium.googlesource.com/chromium/ src/+/master/tools/gn/docs/cross_compiles.md)
91 * [Hacking on GN itself](https://chromium.googlesource.com/chromium/src/+/mast er/tools/gn/docs/hacking.md) 83 * [Hacking on GN itself](https://chromium.googlesource.com/chromium/src/+/mast er/tools/gn/docs/hacking.md)
92 * [GNStandalone](https://chromium.googlesource.com/chromium/src/+/master/tools /gn/docs/standalone.md) Standalone GN projects 84 * [GNStandalone](https://chromium.googlesource.com/chromium/src/+/master/tools /gn/docs/standalone.md) Standalone GN projects
93 * [UpdateGNBinaries](https://chromium.googlesource.com/chromium/src/+/master/t ools/gn/docs/update_binaries.md) Pushing new binaries 85 * [UpdateGNBinaries](https://chromium.googlesource.com/chromium/src/+/master/t ools/gn/docs/update_binaries.md) Pushing new binaries
94 * [Check](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/doc s/check.md) `gn check` command reference 86 * [Check](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/doc s/check.md) `gn check` command reference
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698