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

Unified Diff: tools/gn/README.md

Issue 1052883002: migrate GN docs from the wiki to the repo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: split md_browser out into its own dir Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/gn/README.txt » ('j') | tools/gn/docs/standalone.md » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/README.md
diff --git a/tools/gn/README.md b/tools/gn/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3cf3336f603115eb6d1c2780051d6743e5f5ceb7
--- /dev/null
+++ b/tools/gn/README.md
@@ -0,0 +1,101 @@
+# What is GN?
+
+GN is a meta-build system that generates [NinjaBuild](NinjaBuild.md)
+files. It's meant to be faster and simpler than GYP. It outputs only
+Ninja build files.
+
+## Why bother with GN?
+
+1. We believe GN files are more readable and more maintainable
+ than GYP files.
+2. GN is fast:
+ * GN is 20x faster than GYP (as of mid November, building 80%
+ of what GYP builds, in one configuration rather than two, takes 500ms
+ on a z620 running Ubuntu Trusty. GYP takes 20 seconds.
+ We see similar speedups on Mac and Windows).
+ * GN supports automatically re-running itself as needed by Ninja
+ as part of the build. This eliminates the need to remember to
+ re-run GN when you change a build file.
+3. GN gives us better tools for enforcing dependencies (see
+ `gn check` and the `visibility`, `public_deps`, and `data_deps`
+ options for some examples).
+4. GN gives us tools for querying the build graph; you can ask
+ "what does X depend on" and "who depends on Y", for example.
+
+## What's the status?
+
+_as of 8 Feb 2015:_
+
+Chrome and most of the major test suites link on Linux and ChromeOS.
+There's probably <1000 objects left to build, in a few test suites and a
+bunch of utillities and helper binaries. We will probably have
+everything converted in another couple weeks.
+
+Chrome also links on Android and Windows, and bringing up the remaining
+test suites should be mostly straightforward. There's some work left to
+enable NaCl on Windows but it should also be straightforward.
+
+Mac and iOS have not progressed much as attention has been focused on
+Linux and Windows; we still need support for bundles and frameworks
+before it can get to parity w/ the other platforms.
+
+## When are you going to be done?
+
+_as of 8 Feb 2015:_
+
+We're currently shooting for having the main developer configurations
+working and usable by the end of March 2015. There will probably be a
+fair amount of verification of flags, bug fixes, etc over the next
+couple months, but hopefully we will be flipping configurations from GYP
+to GN throughout Q2, targeting having everything done by the end of Q2.
+
+## What does "done" mean?
+
+Ideally we're done when all of the GYP files have been deleted from
+Chromium and no one misses them.
+
+We will be "mostly" done when the following are true:
+ * All of the bots maintained by the Chrome infra team for Chromium and
+ downstream of Chromium have been switched to GN. (Upstream projects
+ like Skia and V8 can choose to stay on GYP if they like).
+ * Any developer configurations we care about that don't have bots also
+ work (Generally speaking, we're aiming to not have any of these.
+ * Configurations we care about should have bots to ensure they don't
+ break). We have verified that all of the tests pass. We have
+ verified that the command lines match in the above configurations as
+ much as possible, and we accept any differences. We have reviewed
+ any binary differences that result in the official builds and
+ accepted them. The GN files are the "source of truth" for the
+ build, and normal chromium developers normally do not need to touch
+ GYP files to keep things working. We have replacements for the
+ hybrid "msvs-ninja" and "xcode-ninja" configurations that GYP can
+ currently build.
+
+The difference between "mostly done" and "done" exists to cover any
+issues we haven't yet identified :)
+
+We do not currently plan to support full native XCode or Visual Studio
+generation from GN. It is theoretically possible to support such things,
+so we would at least look at patches adding the functionality.
+
+## How can I help?
+
+Check to see if your targets build under GN yet. If they don't,
+volunteer to help convert them!
+
+_17 Nov 2014. We are updating the stuff we use to track progress. Watch
+this space and chromium-dev@ for more info!_.
+
+## I want more info on GN!
+
+Read these links:
+
+ * [Quick start](docs/quick_start.md)
+ * [FAQ](docs/faq.md)
+ * [GYP conversion cookbook](docs/cookbook.md)
+ * [Language and operation details](docs/language.md)
+ * [Style guide](docs/style_guide.md)
+ * [Cross compiling and toolchains](docs/cross_compiles.md)
+ * [Hacking on GN itself](docs/hacking.md)
+ * [GNStandalone](docs/standalone.md) Standalone GN projects
+ * [UpdateGNBinaries](docs/update_binaries.md) Pushing new binaries
« no previous file with comments | « no previous file | tools/gn/README.txt » ('j') | tools/gn/docs/standalone.md » ('J')

Powered by Google App Engine
This is Rietveld 408576698